RetroArch/intl
2020-08-01 17:50:52 +03:00
..
.gitignore Add steam translations 2020-06-21 19:03:09 +03:00
crowdin_sync.py Add steam translations 2020-06-21 19:03:09 +03:00
crowdin.yaml Google Play translations 2020-06-22 16:19:50 +03:00
fetch_progress.py Synchronize translations 2020-06-04 12:40:25 +03:00
googleplay_ar.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_ast.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_chs.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_cht.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_da.json Fetch translations from Crowdin 2020-07-14 12:03:29 +03:00
googleplay_de.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_el.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_es.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_fa.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_fi.json Fetch translations from Crowdin 2020-07-14 12:03:29 +03:00
googleplay_fr.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_gl.json Fetch translations from Crowdin 2020-07-31 10:50:17 +03:00
googleplay_he.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_it.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_ja.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_ko.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_nl.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_pl.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_pt_br.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_pt_pt.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_ru.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_sk.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_sv.json Fetch translations from Crowdin 2020-07-14 12:03:29 +03:00
googleplay_tr.json Fetch translations from Crowdin 2020-07-14 12:03:29 +03:00
googleplay_uk.json Fetch translations from Crowdin 2020-07-31 10:50:17 +03:00
googleplay_us.json Fix JSON syntax 2020-06-22 19:35:14 +03:00
googleplay_vn.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
h2json.py Fetch translations from Crowdin 2020-07-31 10:50:17 +03:00
json2h.py Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_ar.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_ar.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_ast.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_ast.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_chs.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_chs.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_cht.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_cht.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_da.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_de.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_de.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_el.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_el.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_eo.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_eo.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_es.c Updating msg_hash_es.c 2020-06-19 11:24:08 +02:00
msg_hash_es.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_fa.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_fa.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_fi.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_fr.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_fr.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_gl.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_he.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_he.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_it.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_it.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_ja.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_ja.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_ko.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_ko.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_lbl.h Add option to hide 'Explore' tab + menu clean-ups 2020-07-29 13:01:49 +01:00
msg_hash_nl.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_nl.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_pl.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_pl.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_pt_br.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_pt_br.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_pt_pt.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_pt_pt.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_ru.c Add this ifdef around pragma execute-character-set 2019-05-28 13:37:14 +02:00
msg_hash_ru.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_sk.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_sk.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_sv.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_tr.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_tr.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_uk.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
msg_hash_us.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_us.h Explore: Support for internationalization 2020-07-31 03:09:23 +09:00
msg_hash_vn.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_vn.h Remove _LANG_ strings that should not be translated 2020-08-01 17:50:52 +03:00
progress.h Fetch translations from Crowdin 2020-08-01 17:31:28 +03:00
README.md Synchronize translations 2020-06-04 12:40:25 +03:00
steam_ar.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_ast.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_chs.json Fetch translations from Crowdin 2020-07-14 12:03:29 +03:00
steam_cht.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_da.json Fetch translations from Crowdin 2020-07-14 12:03:29 +03:00
steam_de.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_el.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_es.json Fetch translations from Crowdin 2020-07-14 12:03:29 +03:00
steam_fa.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_fi.json Fetch translations from Crowdin 2020-07-14 12:03:29 +03:00
steam_fr.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_gl.json Fetch translations from Crowdin 2020-07-31 10:50:17 +03:00
steam_he.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_it.json Fetch translations from Crowdin 2020-07-21 17:56:31 +03:00
steam_ja.json Fetch translations from Crowdin 2020-08-01 17:31:28 +03:00
steam_ko.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_nl.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_pl.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_pt_br.json Fetch translations from Crowdin 2020-07-21 17:56:31 +03:00
steam_pt_pt.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_ru.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_sk.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_sv.json Fetch translations from Crowdin 2020-07-14 12:03:29 +03:00
steam_tr.json Fetch translations from Crowdin 2020-07-21 17:56:31 +03:00
steam_uk.json Fetch translations from Crowdin 2020-07-31 10:50:17 +03:00
steam_us.json Update steam_us.json 2020-06-22 23:20:29 +03:00
steam_vn.json Crowdin synchronization 2020-06-30 15:20:30 +03:00

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:

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:

Message File Format

  1. Must NOT contain #else
  2. 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"
      )
    
  3. 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)"
      )