blob: 4d8a50feeef2952643f450a7915cab6f4c92541f [file] [log] [blame] [view]
# Fuchsia internationalization and localization
This Dart package contains the support for Fuchsia localization and
internationalization.
At its current state the support is in its very early phase. There is a lot of
manual scaffolding that could be replaced by auto-generating the code of
interest. Doing so will be the topic of followup work.
# Adding a dependency
To make the library available to other packages, add a dependency:
```
//sdk/dart/fuchsia_internationalization_flutter"
```
to the dependencies in the appropriate `BUILD.gn` rule of your package.
# Importing the new dependency
To import the new dependency, add the import:
```dart
import 'package:fuchsia_internationalization_flutter/internationalization.dart';
```
to the import section of any Dart file that needs strings.
# Referring to localized strings
You can now refer to the messages defined in [strings.dart][lib/strings.dart].
For example, you can refer to the string `Ask` by calling `strings.ask()`.
This is done so that the localization system can substitute the word `Ask` for
the appropriate word in the language defined by the current locale. The approach
extends in similar ways for most strings; with slight variations depending on
whether number or date, or plural or gender formatting is needed.
# Generating localizable libraries
Two scripts are provided in the `./scripts` directory. One is
`./scripts/run_extract_to_arb.sh`, which produces a "translation interchange
form" in the form of [ARB][arb] files. The ARB files can be translated
independently of the source code, and should be checked into the code base for
now.
## Translating
The translation process amounts to making ARB files for each of the supported
locales of interest and providing the translations for the messages and
strings. The basic tool for doing so would be a simple text editor. While
there also exists a wealth of tools that help software translators, it is out
of scope of this file to go into specific details. So the choice of the
translation environment is left to the developer and translator.
## Generating Dart runtime format for the translations
Once translated you can use the file `./scripts/run_generate_from_arb.sh` to
generate the Dart code that wires up the translation. You will need to rebuild
the entire project to take the new translations in.
# Further reading
Internationalization and localization are topic unto themselves, and it is out
of scope of this file to go into all the details. Please see the section
on [Internationalizing Flutter apps][1] for many more details that are directly
relevant to Dart and Flutter app localization.
[1]: https://flutter.dev/docs/development/accessibility-and-localization/internationalization
[arb]: https://github.com/google/app-resource-bundle