Showing
2 changed files
with
56 additions
and
1 deletions
| @@ -29,10 +29,11 @@ | @@ -29,10 +29,11 @@ | ||
| 29 | - [More details about dependency management](#more-details-about-dependency-management) | 29 | - [More details about dependency management](#more-details-about-dependency-management) | 
| 30 | - [How to contribute](#how-to-contribute) | 30 | - [How to contribute](#how-to-contribute) | 
| 31 | - [Utils](#utils) | 31 | - [Utils](#utils) | 
| 32 | + - [Internationalization](#internationalization) | ||
| 32 | - [Change Theme](#change-theme) | 33 | - [Change Theme](#change-theme) | 
| 33 | - [Other Advanced APIs](#other-advanced-apis) | 34 | - [Other Advanced APIs](#other-advanced-apis) | 
| 34 | - [Optional Global Settings and Manual configurations](#optional-global-settings-and-manual-configurations) | 35 | - [Optional Global Settings and Manual configurations](#optional-global-settings-and-manual-configurations) | 
| 35 | - - [Video explanation of Other GetX Features](#video-explanation-of-other-getx-features) | 36 | + - [Video explanation of Other GetX Features](#video-explanation-of-other-getx-features) | 
| 36 | - [Breaking changes from 2.0](#breaking-changes-from-20) | 37 | - [Breaking changes from 2.0](#breaking-changes-from-20) | 
| 37 | - [Why Getx?](#why-getx) | 38 | - [Why Getx?](#why-getx) | 
| 38 | 39 | ||
| @@ -296,7 +297,61 @@ Text(controller.textFromApi); | @@ -296,7 +297,61 @@ Text(controller.textFromApi); | ||
| 296 | Any contribution is welcome! | 297 | Any contribution is welcome! | 
| 297 | 298 | ||
| 298 | # Utils | 299 | # Utils | 
| 300 | +## Internationalization | ||
| 301 | +### Translations | ||
| 302 | +Translations are kept as a simple key-value dictionary map. | ||
| 303 | +To add custom translations, create a class and extend `Translations`. | ||
| 304 | +```dart | ||
| 305 | +import 'package:get/get.dart'; | ||
| 306 | + | ||
| 307 | +class Messages extends Translations { | ||
| 308 | + @override | ||
| 309 | + Map<String, Map<String, String>> get keys => { | ||
| 310 | + 'en_US': { | ||
| 311 | + 'hello': 'Hello World', | ||
| 312 | + }, | ||
| 313 | + 'de_DE': { | ||
| 314 | + 'hello': 'Hallo Welt', | ||
| 315 | + } | ||
| 316 | + }; | ||
| 317 | +} | ||
| 318 | +``` | ||
| 319 | + | ||
| 320 | +#### Using translations | ||
| 321 | +Just append `.tr` to the specified key and it will be translated, using the current value of `Get.locale` and `Get.fallbackLocale`. | ||
| 322 | +```dart | ||
| 323 | +Text('title'.tr); | ||
| 324 | +``` | ||
| 325 | + | ||
| 326 | +### Locales | ||
| 327 | +Pass parameters to `GetMaterialApp` to define the locale and translations. | ||
| 328 | + | ||
| 329 | +```dart | ||
| 330 | +return GetMaterialApp( | ||
| 331 | + translations: Messages(), // your translations | ||
| 332 | + locale: Locale('en_US'), // translations will be displayed in that locale | ||
| 333 | + fallbackLocale: Locale('en_US'), // specify the fallback locale in case an invalid locale is selected. | ||
| 334 | + supportedLocales: <Locale>[Locale('en_US'), Locale('de_DE')] // specify the supported locales | ||
| 335 | +); | ||
| 336 | +``` | ||
| 337 | + | ||
| 338 | +#### Change locale | ||
| 339 | +Call `Get.updateLocale(locale)` to update the locale. Translations then automatically use the new locale. | ||
| 340 | +```dart | ||
| 341 | +var locale = Locale('en_US'); | ||
| 342 | +Get.updateLocale(locale); | ||
| 343 | +``` | ||
| 299 | 344 | ||
| 345 | +#### System locale | ||
| 346 | +To read the system locale, you could use `Platform.localeName`. | ||
| 347 | +```dart | ||
| 348 | +return GetMaterialApp( | ||
| 349 | + locale: Locale(Platform.localeName), | ||
| 350 | +); | ||
| 351 | +``` | ||
| 352 | + | ||
| 353 | +### More details about state management | ||
| 354 | +**See a more in-depth explanation of internationalization [here](./docs/en_US/internationalization.md)** | ||
| 300 | ## Change Theme | 355 | ## Change Theme | 
| 301 | 356 | ||
| 302 | Please do not use any higher level widget than GetMaterialApp in order to update it. This can trigger duplicate keys. A lot of people are used to the prehistoric approach of creating a "ThemeProvider" widget just to change the theme of your app, and this is definitely NOT necessary with Get. | 357 | Please do not use any higher level widget than GetMaterialApp in order to update it. This can trigger duplicate keys. A lot of people are used to the prehistoric approach of creating a "ThemeProvider" widget just to change the theme of your app, and this is definitely NOT necessary with Get. | 
- 
Please register or login to post a comment