LanguageSwitcher
Introduction
Le widget LanguageSwitcher offre un moyen simple de gerer le changement de langue dans vos projets Nylo Website. Il detecte automatiquement les langues disponibles dans votre repertoire /lang et les affiche a l'utilisateur.
Que fait LanguageSwitcher ?
- Affiche les langues disponibles depuis votre repertoire
/lang - Change la langue de l'application lorsque l'utilisateur en selectionne une
- Persiste la langue selectionnee entre les redemarrages de l'application
- Met automatiquement a jour l'interface lorsque la langue change
Note : Si votre application n'est pas encore localisee, apprenez comment le faire dans la documentation de Localisation avant d'utiliser ce widget.
Widget Dropdown
La maniere la plus simple d'utiliser LanguageSwitcher est en tant que dropdown dans votre barre d'application :
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Settings"),
actions: [
LanguageSwitcher(), // Add to the app bar
],
),
body: Center(
child: Text("Hello World".tr()),
),
);
}
Lorsque l'utilisateur appuie sur le dropdown, il verra une liste des langues disponibles. Apres avoir selectionne une langue, l'application basculera automatiquement et mettra a jour l'interface.
Modal en bas de page
Vous pouvez egalement afficher les langues dans un modal en bas de page :
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: MaterialButton(
child: Text("Change Language"),
onPressed: () {
LanguageSwitcher.showBottomModal(context);
},
),
),
);
}
Le modal en bas de page affiche une liste de langues avec une coche a cote de la langue actuellement selectionnee.
Personnaliser la hauteur du modal
LanguageSwitcher.showBottomModal(
context,
height: 300, // Custom height
);
Constructeur de dropdown personnalise
Personnalisez l'apparence de chaque option de langue dans le dropdown :
LanguageSwitcher(
dropdownBuilder: (Map<String, dynamic> language) {
return Row(
children: [
Icon(Icons.language),
SizedBox(width: 8),
Text(language['name']), // e.g., "English"
// language['locale'] contains the locale code, e.g., "en"
],
);
},
)
Gerer les changements de langue
LanguageSwitcher(
onLanguageChange: (Map<String, dynamic> language) {
print('Language changed to: ${language['name']}');
// Perform additional actions when language changes
},
)
Parametres
| Parametre | Type | Par defaut | Description |
|---|---|---|---|
icon |
Widget? |
- | Icone personnalisee pour le bouton dropdown |
iconEnabledColor |
Color? |
- | Couleur de l'icone du dropdown |
iconSize |
double |
24 |
Taille de l'icone du dropdown |
dropdownBgColor |
Color? |
- | Couleur d'arriere-plan du menu dropdown |
hint |
Widget? |
- | Widget d'indication lorsqu'aucune langue n'est selectionnee |
itemHeight |
double |
kMinInteractiveDimension |
Hauteur de chaque element du dropdown |
elevation |
int |
8 |
Elevation du menu dropdown |
padding |
EdgeInsetsGeometry? |
- | Espacement autour du dropdown |
borderRadius |
BorderRadius? |
- | Rayon de bordure du menu dropdown |
textStyle |
TextStyle? |
- | Style de texte pour les elements du dropdown |
langPath |
String |
'lang' |
Chemin vers les fichiers de langue dans les assets |
dropdownBuilder |
Function(Map<String, dynamic>)? |
- | Constructeur personnalise pour les elements du dropdown |
dropdownAlignment |
AlignmentGeometry |
AlignmentDirectional.centerStart |
Alignement des elements du dropdown |
dropdownOnTap |
Function()? |
- | Callback lors de l'appui sur un element du dropdown |
onTap |
Function()? |
- | Callback lors de l'appui sur le bouton dropdown |
onLanguageChange |
Function(Map<String, dynamic>)? |
- | Callback lors du changement de langue |
Methodes statiques
Obtenir la langue actuelle
Recuperez la langue actuellement selectionnee :
Map<String, dynamic>? lang = await LanguageSwitcher.currentLanguage();
// Returns: {"en": "English"} or null if not set
Stocker la langue
Stocker manuellement une preference de langue :
await LanguageSwitcher.storeLanguage(
object: {"fr": "French"},
);
Effacer la langue
Supprimer la preference de langue stockee :
await LanguageSwitcher.clearLanguage();
Obtenir les donnees de langue
Obtenir les informations de langue a partir d'un code de locale :
Map<String, String>? langData = LanguageSwitcher.getLanguageData("en");
// Returns: {"en": "English"}
Map<String, String>? langData = LanguageSwitcher.getLanguageData("fr_CA");
// Returns: {"fr_CA": "French (Canada)"}
Obtenir la liste des langues
Obtenir toutes les langues disponibles depuis le repertoire /lang :
List<Map<String, String>> languages = await LanguageSwitcher.getLanguageList();
// Returns: [{"en": "English"}, {"es": "Spanish"}, ...]
Afficher le modal en bas de page
Afficher le modal de selection de langue :
await LanguageSwitcher.showBottomModal(context);
// With custom height
await LanguageSwitcher.showBottomModal(context, height: 400);
Locales prises en charge
Le widget LanguageSwitcher prend en charge des centaines de codes de locale avec des noms lisibles. Quelques exemples :
| Code de locale | Nom de la langue |
|---|---|
en |
English |
en_US |
English (United States) |
en_GB |
English (United Kingdom) |
es |
Spanish |
fr |
French |
de |
German |
zh |
Chinese |
zh_Hans |
Chinese (Simplified) |
ja |
Japanese |
ko |
Korean |
ar |
Arabic |
hi |
Hindi |
pt |
Portuguese |
ru |
Russian |
La liste complete inclut des variantes regionales pour la plupart des langues.