Skip to content

Translation Guide

Matthias Rupp edited this page Jul 7, 2022 · 4 revisions

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.

Translations using localizely (no programming skills required)

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.

image

Translation of the mobile application without localizely (programming skills required)

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

Adding new languages requires the following steps:

  1. Create the translation JSON-file xx-XX.json.
  2. Translate as many keys as possible. Please use the keys from en-US.json.
  3. Add the language to main.dart:
var locales = const [
    Locale('en', 'US'),
    Locale('de', 'DE'),
    // ...
    Locale('xx', 'XX'), // Add this
];
  1. Add the language to ios/Runner/Info.plist:
<key>CFBundleLocalizations</key>
<array>
  <string>en</string>
  <string>de</string>

  <string>xx</string>
</array>
  1. Test your translations.

Translation of Immich web

TODO