RetroArch/intl/README.md
2020-08-24 23:17:13 +03:00

87 lines
2.5 KiB
Markdown

# Internationalization Workflow
## For Translators
### Use Crowdin
1. Register user account at https://crowdin.com/
2. Join the project https://crowdin.com/project/retroarch/
3. Select your language to translate
4. Click the file name `msg_hash_us.json` and the editor should open
5. Select an untranslated (red) string from the list
6. Type translation and save
7. Next string...
Links:
- [Video: How to use Crowdin](https://www.youtube.com/watch?v=kRMeCCr-D7s)
- [Learn more about contributing](https://support.crowdin.com/for-volunteer-translators/)
- [Learn more about the editor](https://support.crowdin.com/online-editor/)
- [Learn more about conversations](https://support.crowdin.com/conversations/)
- [Learn more about joining project](https://support.crowdin.com/joining-translation-project/)
### Request New Language
You can open a new issue and @guoyunhe to add new language.
## For Maintainers
### Set Up
Install Java, Python3 and Git
### Synchronize
```
cd intl
python3 crowin_sync.py
```
### Manage Crowdin Project
1. You need to be project admin. Please contact @guoyunhe or @twinaphex
2. Go to https://crowdin.com/project/retroarch/settings
3. You can manage languages, members etc. here
Links:
- [Learn more about project management](https://support.crowdin.com/advanced-project-setup/)
- [Learn more about inviting project members](https://support.crowdin.com/inviting-participants/)
- [Learn more about roles of members](https://support.crowdin.com/modifying-project-participants-roles/)
### Message File Format
1. Must **NOT** contain `#else`
2. Must **NOT** have multiple-line string syntax
```cpp
// bad
MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_ENABLE,
"Compete to earn custom-made achievements in classic games.\n"
"For more information, visit http://retroachievements.org"
)
// good
MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_ENABLE,
"Compete to earn custom-made achievements in classic games.\nFor more information, visit http://retroachievements.org"
)
```
3. Must **NOT** contain lowercase letters in key name
```cpp
// bad (x)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CTR_VIDEO_MODE_2D_800x240,
"2D (High Resolution)"
)
// good (X)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CTR_VIDEO_MODE_2D_800X240,
"2D (High Resolution)"
)
```
### Add New Languages
1. Go to Crowdin and add the language
2. Run Crowdin script to download new translations
3. Add new language into menu (see [#10787](https://github.com/libretro/RetroArch/pull/10787))