-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Translation Guide
We want to make Immich accessible to as many users as possible. One important step towards this goal is the localization of mobile app and web. We are very thankful for all contributions that provide new translations or update/extend existing ones.
We use the tool localizely to manage translations. It allows to edit translations in an easy-to-use web-based application. Please contact us if you want to contribute translations using localizely, for example via discord.
The mobile application is localized with the help of the easy_localization library.
All translations are stored in JSON files located at mobile/assets/i18n
.
Our default localization resource is en-US.json
. It must contain all used translation keys! If a translation key is missing in any of the other files, the value in en-US
is used as a fallback. If you edit one of the JSON-files, please use an indentation of 2 spaces.
Translations are used in the app's code by calling tr()
on a translation key string. For example:
return 'login_form_err_http'.tr();
If a Text
component is used, tr()
should be called on the component. For example:
Text("exif_bottom_sheet_location").tr(),
Adding new languages requires the following steps:
- Create the translation JSON-file
xx-XX.json
. - Translate as many keys as possible. Please use the keys from
en-US.json
. - Add the language to
main.dart
:
var locales = const [
Locale('en', 'US'),
Locale('de', 'DE'),
// ...
Locale('xx', 'XX'), // Add this
];
- Add the language to
ios/Runner/Info.plist
:
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>de</string>
<string>xx</string>
</array>
- Test your translations.
TODO
Dedicated to my wife and my children