Lokalisatie en Internationalisatie (i18n) Gids
Welkom bij de Finch Lokalisatie en Internationalisatie (i18n) gids! Deze gids laat zien hoe je je Finch-applicatie kunt lokaliseren en internationaliseren. Of je nu een ervaren ontwikkelaar bent of net begint, Finch biedt tools voor meertalige ondersteuning.
i18n in Finch
Finch heeft een ingebouwd i18n-systeem om je applicatie te lokaliseren. Het systeem laat je meerdere talen definiëren en de tekst van je applicatie vertalen.
Hoe gebruik je i18n in Finch?
Lokalisatie in Finch kan op twee manieren: je kunt JSON-bestanden gebruiken of talen definiëren in een languages.dart bestand.
1. JSON-bestanden gebruiken
In Finch kun je JSON-bestanden gebruiken om talen te definiëren. Standaard zoekt Finch naar taalsbestanden in de lib/languages map. Je kunt een nieuw JSON-bestand aanmaken voor elke taal die je wilt ondersteunen, bijvoorbeeld fa.json voor Perzisch.
Het is eenvoudig om i18n in Finch te gebruiken: definieer je vertalingen in en.json of in een ander taalbestand. Hier is een voorbeeld van hoe je talen definieert in fa.json:
{
"dir": "rtl",
"example.params": "نام من {name} است، سن من {age} سال است",
"example.path": "مسیر تست از example.path برای محلیسازی",
"example.tstring": "تست اشیاء TString برای i18n",
"logo": "Finch",
"logo.title": "Finch"
}
2. Gebruik van languages.dart
Je kunt je talen ook definiëren in languages.dart. Hieronder een voorbeeld:
var languages = <String, Map<String, String>>{
'fa': {
'dir': 'rtl',
'example.params': 'نام من {name} است، سن من {age} سال است',
'example.path': 'مسیر تست از example.path برای محلیسازی',
},
'en': {
'dir': 'ltr',
'example.params': 'My name is {name}, I am {age} years old',
'example.path': 'Test path from example.path for localization',
},
};
Na het definiëren van je talen, configureer Finch om dart-bestanden voor i18n te gebruiken via de dartLanguages property in FinchConfigs:
FinchConfigs configs = FinchConfigs(
// alleen voor json-bestanden
languagePath: pathTo(env['LANGUAGE_PATH'] ?? "./lib/languages"),
// stel de language source in op dart of json
languageSource: LanguageSource.dart,
// de map met talen gedefinieerd in languages.dart
dartLanguages: languages,
);
LanguageSource.dart en LanguageSource.json zijn opties voor de languageSource property. Kies wat je voorkeur heeft. Geef configs vervolgens door aan de FinchApp constructor:
FinchApp app = FinchApp(configs: configs);
i18n in templates
Je kunt i18n in templates gebruiken via de {{ $t('logo.title') }} syntaxis. Bijvoorbeeld:
<h1>{{ $t('logo.title') }}</h1>
i18n in controllers
Het is heel eenvoudig om i18n in controllers te gebruiken. Je kunt de .tr methode op strings gebruiken om te vertalen. Bijvoorbeeld:
rq.renderString(text: 'logo.title'.tr);
parameters in i18n
Je kunt parameters gebruiken in i18n-strings. Bijvoorbeeld:
rq.renderString(text: 'example.params'.tr.write({'name': 'Alexandre', 'age': 30}));
En in je template:
<p>{{ $t('example.params', {'name': 'Alexandre', 'age': 30}) }}</p>
Array-parameters in i18n
Je kunt array-parameters gebruiken in i18n-strings. Bijvoorbeeld:
rq.renderString(text: 'example.params'.tr.writeArr(['Alexandre', 30]));
En in de template:
{
"example.params": "نام من {0} است، سن من {1} سال است",
}
<p>{{ $t('example.params', ['Alexandre', 30]) }}</p>