RetroArch/intl
github-actions 34d69198d4
Some checks are pending
CI 3DS / build (push) Waiting to run
CI Android / build (push) Waiting to run
CI DOS/DJGPP / build (push) Waiting to run
CI Emscripten / build (push) Waiting to run
CI GameCube / build (push) Waiting to run
CI Linux (i686) / build (push) Waiting to run
CI Windows (MSVC) / msvc (Debug, x64, 2019) (push) Waiting to run
CI Windows (MSVC) / msvc (Debug, x64, 2022) (push) Waiting to run
CI Windows (MSVC) / msvc (Release, x64, 2019) (push) Waiting to run
CI Windows (MSVC) / msvc (Release, x64, 2022) (push) Waiting to run
CI Windows (MSVC) / msvc (Release, x64, UWP) (push) Waiting to run
CI Windows (MSVC) / msvc (ReleaseAngle, x64, UWP) (push) Waiting to run
CI Windows (MSYS2) / msys2-build-test (windows-11-arm, CLANGARM64) (push) Waiting to run
CI Windows (MSYS2) / msys2-build-test (windows-latest, CLANG64) (push) Waiting to run
CI Windows (MSYS2) / msys2-build-test (windows-latest, MINGW64) (push) Waiting to run
CI Windows (MSYS2) / msys2-build-test (windows-latest, UCRT64) (push) Waiting to run
CI macOS / build (push) Waiting to run
CI Miyoo ARM32 / build (push) Waiting to run
CI PS2 / build (push) Waiting to run
CI PS3/PSL1GHT / build (push) Waiting to run
CI PS4/ORBIS / build (push) Waiting to run
CI PSP / build (push) Waiting to run
CI PSVita / build (push) Waiting to run
CI RS90 Odbeta MIPS32 / build (push) Waiting to run
CI RetroFW MIPS32 / build (push) Waiting to run
CI Switch/libnx / build (push) Waiting to run
CI Wii / build (push) Waiting to run
CI WiiU / build (push) Waiting to run
CI Windows ARM64 (MSVC) / msvc (Debug, ARM64, 2022) (push) Waiting to run
CI Windows ARM64 (MSVC) / msvc (Release, ARM64, 2022) (push) Waiting to run
CI Windows i686 (MXE) / build (push) Waiting to run
CI Windows x64 (MXE) / build (push) Waiting to run
RetroArch CI / linux-c89 (push) Waiting to run
CI webOS / build (push) Waiting to run
Fetch translations from Crowdin
2025-12-27 00:17:33 +00:00
..
.gitignore
crowdin_sync.py
crowdin.yaml
fetch_progress.py
googleplay_ar.json
googleplay_ast.json Fetch translations from Crowdin 2025-09-20 00:14:59 +00:00
googleplay_be.json Fetch translations from Crowdin 2024-07-19 01:43:18 +00:00
googleplay_bg.json Fetch translations from Crowdin 2024-03-16 00:10:29 +00:00
googleplay_ca.json Fetch translations from Crowdin 2024-11-03 00:15:59 +00:00
googleplay_chs.json Fetch translations from Crowdin 2025-11-09 00:18:09 +00:00
googleplay_cht.json
googleplay_cs.json
googleplay_cy.json
googleplay_da.json
googleplay_de.json
googleplay_el.json
googleplay_en.json
googleplay_eo.json
googleplay_es.json
googleplay_fa.json
googleplay_fi.json
googleplay_fr.json
googleplay_ga.json Fetch translations from Crowdin 2025-06-24 00:17:04 +00:00
googleplay_gl.json
googleplay_he.json
googleplay_hr.json
googleplay_hu.json
googleplay_id.json Fetch translations from Crowdin 2024-06-07 00:12:49 +00:00
googleplay_it.json Fetch translations from Crowdin 2025-07-22 00:18:18 +00:00
googleplay_ja.json
googleplay_ko.json
googleplay_mt.json
googleplay_nl.json
googleplay_no.json
googleplay_oc.json
googleplay_or.json
googleplay_pl.json
googleplay_pt_br.json
googleplay_pt_pt.json Fetch translations from Crowdin 2024-03-10 00:12:22 +00:00
googleplay_ro.json
googleplay_ru.json Fetch translations from Crowdin 2023-10-16 00:11:43 +00:00
googleplay_si.json
googleplay_sk.json
googleplay_sr.json
googleplay_sv.json Fetch translations from Crowdin 2025-07-15 00:17:55 +00:00
googleplay_tr.json
googleplay_tt.json Fetch translations from Crowdin 2024-07-24 00:14:04 +00:00
googleplay_uk.json
googleplay_us.json
googleplay_val.json
googleplay_vn.json Fetch translations from Crowdin 2025-10-09 00:15:26 +00:00
h2json.py
json2h.py
msg_hash_ar.h Fetch translations from Crowdin 2025-12-14 00:19:14 +00:00
msg_hash_ast.h Fetch translations from Crowdin 2025-12-20 00:16:49 +00:00
msg_hash_be.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_bg.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_ca.h Fetch translations from Crowdin 2025-12-27 00:17:33 +00:00
msg_hash_chs.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_cht.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_cs.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_cy.h Fetch translations from Crowdin 2025-12-14 00:19:14 +00:00
msg_hash_da.h Fetch translations from Crowdin 2025-12-10 00:18:02 +00:00
msg_hash_de.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_el.h Fetch translations from Crowdin 2025-12-14 00:19:14 +00:00
msg_hash_en.h Fetch translations from Crowdin 2025-12-10 00:18:02 +00:00
msg_hash_eo.h Fetch translations from Crowdin 2025-12-10 00:18:02 +00:00
msg_hash_es.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_fa.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_fi.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_fr.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_ga.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_gl.h Fetch translations from Crowdin 2025-12-25 00:17:38 +00:00
msg_hash_he.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_hr.h Fetch translations from Crowdin 2025-12-14 00:19:14 +00:00
msg_hash_hu.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_id.h Fetch translations from Crowdin 2025-12-14 00:19:14 +00:00
msg_hash_it.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_ja.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_ko.h Fetch translations from Crowdin 2025-12-25 00:17:38 +00:00
msg_hash_lbl.h cloud sync: conflict resolution (#18527) 2025-12-23 05:02:05 +01:00
msg_hash_mt.h Fetch translations from Crowdin 2025-12-10 00:18:02 +00:00
msg_hash_nl.h Fetch translations from Crowdin 2025-12-20 00:16:49 +00:00
msg_hash_no.h Fetch translations from Crowdin 2025-12-14 00:19:14 +00:00
msg_hash_oc.h Fetch translations from Crowdin 2025-12-10 00:18:02 +00:00
msg_hash_or.h Fetch translations from Crowdin 2025-12-10 00:18:02 +00:00
msg_hash_pl.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_pt_br.h Fetch translations from Crowdin 2025-12-27 00:17:33 +00:00
msg_hash_pt_pt.h Fetch translations from Crowdin 2025-12-14 00:19:14 +00:00
msg_hash_ro.h Fetch translations from Crowdin 2025-12-10 00:18:02 +00:00
msg_hash_ru.h Fetch translations from Crowdin 2025-12-27 00:17:33 +00:00
msg_hash_si.h Fetch translations from Crowdin 2025-12-10 00:18:02 +00:00
msg_hash_sk.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_sr.h Fetch translations from Crowdin 2025-12-10 00:18:02 +00:00
msg_hash_sv.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_tr.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
msg_hash_tt.h Fetch translations from Crowdin 2025-12-10 00:18:02 +00:00
msg_hash_uk.h Fetch translations from Crowdin 2025-12-25 00:17:38 +00:00
msg_hash_us.c Remove missing firmware check option (#18470) 2025-12-01 22:36:55 +01:00
msg_hash_us.h add "hold" button handling to overlays (#18526) 2025-12-23 05:02:48 +01:00
msg_hash_val.h Fetch translations from Crowdin 2025-12-20 00:16:49 +00:00
msg_hash_vn.h Fetch translations from Crowdin 2025-12-24 00:18:00 +00:00
progress.h Fetch translations from Crowdin 2025-12-27 00:17:33 +00:00
README.md
steam_ar.json
steam_ast.json Fetch translations from Crowdin 2024-07-13 00:12:41 +00:00
steam_be.json Fetch translations from Crowdin 2024-07-19 01:43:18 +00:00
steam_bg.json Fetch translations from Crowdin 2024-03-16 00:10:29 +00:00
steam_ca.json Fetch translations from Crowdin 2024-11-06 00:14:28 +00:00
steam_chs.json Fetch translations from Crowdin 2025-11-09 00:18:09 +00:00
steam_cht.json
steam_cs.json
steam_cy.json
steam_da.json
steam_de.json
steam_el.json
steam_en.json
steam_eo.json
steam_es.json
steam_fa.json Fetch translations from Crowdin 2024-06-11 00:12:40 +00:00
steam_fi.json Fetch translations from Crowdin 2024-08-04 00:13:58 +00:00
steam_fr.json
steam_ga.json Fetch translations from Crowdin 2025-06-24 00:17:04 +00:00
steam_gl.json Fetch translations from Crowdin 2024-08-22 00:13:17 +00:00
steam_he.json
steam_hr.json
steam_hu.json
steam_id.json Fetch translations from Crowdin 2024-06-07 00:12:49 +00:00
steam_it.json Fetch translations from Crowdin 2025-07-22 00:18:18 +00:00
steam_ja.json Fetch translations from Crowdin 2024-01-23 00:12:59 +00:00
steam_ko.json
steam_mt.json
steam_nl.json
steam_no.json Fetch translations from Crowdin 2024-05-09 00:12:12 +00:00
steam_oc.json
steam_or.json
steam_pl.json
steam_pt_br.json Fetch translations from Crowdin 2024-02-29 00:11:08 +00:00
steam_pt_pt.json Fetch translations from Crowdin 2024-04-14 00:16:07 +00:00
steam_ro.json
steam_ru.json
steam_si.json
steam_sk.json
steam_sr.json
steam_sv.json Fetch translations from Crowdin 2025-07-12 00:16:34 +00:00
steam_tr.json
steam_tt.json Fetch translations from Crowdin 2024-07-24 00:14:04 +00:00
steam_uk.json
steam_us.json
steam_val.json
steam_vn.json Fetch translations from Crowdin 2025-10-13 00:17:21 +00: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)"
      )
    

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)