27 lines
1.6 KiB
Markdown
27 lines
1.6 KiB
Markdown
# How to translate riot-web (Dev Guide)
|
|
|
|
## Requirements
|
|
|
|
- A working [Development Setup](../../#setting-up-a-dev-environment)
|
|
- Be able to understand English
|
|
- Be able to understand the language you want to translate riot-web into
|
|
|
|
## Adding new strings
|
|
|
|
1. Check if the import ``import { _t } from 'matrix-react-sdk/lib/languageHandler';`` is present. If not add it to the other import statements.
|
|
2. Add ``_t()`` to your string. (Don't forget curly braces when you assign an expression to JSX attributes in the render method)
|
|
3. Add the String to the ``en_EN.json`` file in ``src/i18n/strings`` (respect which repository you are on).
|
|
|
|
## Adding variables inside a string.
|
|
|
|
1. Extend your ``_t()`` call. Instead of ``_t(STRING)`` use ``_t(STRING, {})``
|
|
2. Decide how to name it. Please think about if the person who has to translate it can understand what it does.
|
|
3. Add it to the array in ``_t`` for example ``_t(STRING, {variable: this.variable})``
|
|
4. Add the variable inside the string. The syntax for variables is ``%(variable)s``. Please note the s at the end. The name of the variable has to match the previous used name.
|
|
|
|
## Things to know/Style Guides
|
|
|
|
- Do not use it inside ``getDefaultProps`` at the point where ``getDefaultProps`` is initialized the translations aren't loaded yet and it causes missing translations.
|
|
- If using translated strings as constants, translated strings can't be in constants loaded at class-load time since the translations won't be loaded.
|
|
- If a string is presented in the UI with punctuation like a full stop, include this in the translation strings, since punctuation varies between languages too.
|