Translations¶
There are two things to translate: Umamo’s interface, and this manual. Human translations are wanted for both.
Languages Today¶
Umamo’s interface is available in four languages.
Language |
Shown in the language list as |
How much is translated |
|---|---|---|
English |
English |
Everything. It is the default. |
Japanese |
日本語 |
Almost everything. |
Korean |
한국어 |
A little over half. |
French |
Français |
About two thirds. |
These figures are for Umamo 0.5.0. Translators are thanked on the Credits page.
Umamo starts in the language that best matches your operating system’s preferred languages and falls back to English if a translation is unavailable. The Quick Setup splash screen shows the language choice the first time you start Umamo. To change it later, open , choose the Interface category, and set Language.
This manual has not been translated yet.
Translating the UI¶
The interface strings are in the Umamo source code repository. The English strings are in this file:
module/ui/src/commonMain/composeResources/values/strings.xml
Each translation is a file with the same name in a folder beside it, named for the language: values-fr for French, values-ja for Japanese, and values-ko for Korean. To translate Umamo, make a copy of the English file and translate the text of each string.
Change only the text inside each
<string>element. Leave itsnameas it is.Keep placeholders such as
%1$sin the translated text. Umamo fills them in with a name or a number.Do not translate format-level identifiers such as
ParamAngleX. They are part of the Cubism data model and stay as they are so that files remain compatible. The names that you give to your own parts and parameters are also left alone, because they belong to your document.Partial translations are welcome. Any untranslated strings will default to showing the English string.
It helps the next translator if the file starts with a comment that lists the terms you chose and the style you used, as the French file does. For example, it chooses the polite form of address.
Send your translation as a pull request. Small pull requests are easiest to review, so a few files at a time is better than one large change. See Contribute for the project’s policy on contributions.
Warning
AI based translations are accepted as long as a fluent or native speaker is proofreading them. Since AI translations tend to wander on technical terms, for example drawable versus art mesh, it is imperative that they are reviewed for consistency. Additionally, AI also has a tendency to write in a style that can feel unnatural to read. Please reword any translations that feel awkward to read.
Adding a New Language¶
To add a language that Umamo does not have yet:
Copy
values/strings.xmlinto a new folder namedvalues-followed by the language code, such asvalues-esfor Spanish. Translate the strings as described above.Add the language to the list in
UI_LANGUAGE_ENDONYMS, inmodule/ui/src/commonMain/kotlin/org/umamo/ui/l10n/AppLocale.kt. The entry is the language code and the name of the language in that language, as in"fr" to "Français". The name is shown as it is written there, whatever language Umamo is using, so that someone who cannot read the current language can still find their own.Start Umamo from the source, choose the language in , and look through the interface. Translated text is often longer or shorter than the English, so check that it still fits in the panels and buttons. The README in the source code repository explains how to build and run Umamo.
Translating This Manual¶
The manual uses gettext and sphinx-intl. Every translation lives in a .po file under locale/, one for each page of the manual. Set up the build first, as described in Building the Manual.
To start a translation, or to bring an existing one up to date with changes to the English, run the following with the code of your language:
make update-po LANG_CODE=fr
This creates or updates the files in locale/fr/LC_MESSAGES/. Open them in any editor for .po files and fill in the msgstr of each msgid. Anything that you leave empty is shown in English.
To see your translation, build the manual in that language:
make html O="-D language=fr"
Sphinx compiles the .po files when it builds. Only the .po files belong in the repository. The .pot templates and the compiled .mo files are made by the build, and Git ignores them.
See also