mirror of
https://github.com/libretro/RetroArch
synced 2025-03-02 19:13:34 +00:00
After PR #14821 , the contents of msg_hash_xx.c files are present in the normal translation workflow. Since that time, almost all languages have either caught up on Crowdin, or are still on such low level of translation completeness, that removing these entries does not harm usability. Only Chinese Simplified and Portuguese Brazilian languages remain in separate files, as they may still be considered an improvement over Crowdin status. See also commit 568ffac8f632354f9802.
Internationalization Workflow
For Translators
Use Crowdin
- Register user account at https://crowdin.com/
- Join the project https://crowdin.com/project/retroarch/
- Select your language to translate
- Click the file name
msg_hash_us.json
and the editor should open - Select an untranslated (red) string from the list
- Type translation and save
- Next string...
Links:
- Video: How to use Crowdin
- Learn more about contributing
- Learn more about the editor
- Learn more about conversations
- Learn more about joining 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
- You need to be project admin. Please contact @guoyunhe or @twinaphex
- Go to https://crowdin.com/project/retroarch/settings
- You can manage languages, members etc. here
Links:
- Learn more about project management
- Learn more about inviting project members
- Learn more about roles of members
Message File Format
- Must NOT contain
#else
- Must NOT have multiple-line string syntax
// 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" )
- Must NOT contain lowercase letters in key name
// 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
- Go to Crowdin and add the language
- Run Crowdin script to download new translations
- Add new language into menu (see #10787)