RetroArch/intl
2023-01-12 00:12:26 +00:00
..
.gitignore
crowdin.yaml Translation completeness display. (#14779) 2022-12-29 22:21:23 +01:00
crowdin_sync.py
fetch_progress.py Translation completeness display. (#14779) 2022-12-29 22:21:23 +01:00
googleplay_ar.json
googleplay_ast.json
googleplay_ca.json
googleplay_chs.json
googleplay_cht.json
googleplay_cs.json
googleplay_cy.json
googleplay_da.json
googleplay_de.json Fetch translations from Crowdin 2022-04-06 00:10:20 +00:00
googleplay_el.json
googleplay_en.json Fetch translations from Crowdin 2022-05-08 00:12:15 +00:00
googleplay_eo.json
googleplay_es.json
googleplay_fa.json
googleplay_fi.json
googleplay_fr.json
googleplay_gl.json
googleplay_he.json
googleplay_hr.json
googleplay_hu.json Fetch translations from Crowdin 2022-12-04 00:12:42 +00:00
googleplay_id.json Fetch translations from Crowdin 2022-11-12 00:14:02 +00:00
googleplay_it.json
googleplay_ja.json
googleplay_ko.json
googleplay_mt.json
googleplay_nl.json Fetch translations from Crowdin 2022-05-23 00:12:07 +00:00
googleplay_no.json
googleplay_oc.json
googleplay_pl.json
googleplay_pt_br.json
googleplay_pt_pt.json
googleplay_ro.json
googleplay_ru.json
googleplay_si.json
googleplay_sk.json Fix messed up Crowdin config and restore synchronization 2022-03-22 06:59:12 +01:00
googleplay_sr.json
googleplay_sv.json Fetch translations from Crowdin 2022-04-17 00:11:12 +00:00
googleplay_tr.json
googleplay_uk.json
googleplay_us.json
googleplay_val.json
googleplay_vn.json Fetch translations from Crowdin 2022-05-29 00:13:19 +00:00
h2json.py
json2h.py (Bug fix) Fix the weird 'empty translations' & correct backslash escaping in translation strings (#14609) 2022-11-11 07:56:17 +01:00
msg_hash_ar.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_ar.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_ast.c
msg_hash_ast.h Fetch translations from Crowdin 2023-01-08 00:12:11 +00:00
msg_hash_ca.c Add Catalan language option (#13850) 2022-04-20 14:37:24 +02:00
msg_hash_ca.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_chs.c
msg_hash_chs.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_cht.c
msg_hash_cht.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_cs.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_cs.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_cy.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
msg_hash_da.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
msg_hash_de.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_de.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_el.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_el.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_en.c Add British English language option (#14504) 2022-10-12 23:26:00 +02:00
msg_hash_en.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_eo.c
msg_hash_eo.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
msg_hash_es.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_es.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_fa.c
msg_hash_fa.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
msg_hash_fi.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_fi.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_fr.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_fr.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_gl.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
msg_hash_he.c
msg_hash_he.h Fetch translations from Crowdin 2023-01-07 00:26:27 +00:00
msg_hash_hr.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
msg_hash_hu.c Add Hungarian language option (#14585) 2022-11-04 19:52:39 +01:00
msg_hash_hu.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_id.c Add Preemptive Frames to Latency Settings (#14832) 2023-01-10 07:22:14 +01:00
msg_hash_id.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_it.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_it.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_ja.c (Netplay) Removal of older unused code (#14312) 2022-08-11 23:17:33 +02:00
msg_hash_ja.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_ko.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_ko.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_lbl.h Add Preemptive Frames to Latency Settings (#14832) 2023-01-10 07:22:14 +01:00
msg_hash_mt.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
msg_hash_nl.c
msg_hash_nl.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_no.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
msg_hash_oc.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
msg_hash_pl.c
msg_hash_pl.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_pt_br.c (Netplay) Removal of older unused code (#14312) 2022-08-11 23:17:33 +02:00
msg_hash_pt_br.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_pt_pt.c
msg_hash_pt_pt.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_ro.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
msg_hash_ru.c
msg_hash_ru.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_si.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
msg_hash_sk.c
msg_hash_sk.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
msg_hash_sr.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_sv.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_sv.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_tr.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_tr.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_uk.c Append Preset (#14737) (#14757) 2022-12-22 21:36:32 +01:00
msg_hash_uk.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_us.c msg_hash_us.c to Crowdin, phase 2 (with Android fix) (#14825) 2023-01-08 19:33:04 +01:00
msg_hash_us.h Add Preemptive Frames to Latency Settings (#14832) 2023-01-10 07:22:14 +01:00
msg_hash_val.c Add Valencian language option (#13789) 2022-03-30 17:59:09 +02:00
msg_hash_val.h Fetch translations from Crowdin 2023-01-09 00:12:37 +00:00
msg_hash_vn.c Cleanup of msg_hash_xx.c files after msg_hash_us.c cleanup. (#14730) 2022-12-14 11:52:56 +01:00
msg_hash_vn.h Fetch translations from Crowdin 2023-01-06 00:11:35 +00:00
progress.h Fetch translations from Crowdin 2023-01-12 00:12:26 +00:00
README.md
steam_ar.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_ast.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_ca.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_chs.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_cht.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_cs.json Fetch translations from Crowdin 2022-02-27 00:10:40 +00:00
steam_cy.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_da.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_de.json Fetch translations from Crowdin 2022-04-05 00:10:01 +00:00
steam_el.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_en.json Fetch translations from Crowdin 2022-05-08 00:12:15 +00:00
steam_eo.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_es.json Fetch translations from Crowdin 2022-02-23 00:09:57 +00:00
steam_fa.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_fi.json
steam_fr.json Fetch translations from Crowdin 2022-02-23 00:09:57 +00:00
steam_gl.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_he.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_hr.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_hu.json Fetch translations from Crowdin 2022-11-02 00:13:41 +00:00
steam_id.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_it.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_ja.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_ko.json Fetch translations from Crowdin 2022-02-24 00:09:21 +00:00
steam_mt.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_nl.json Fetch translations from Crowdin 2022-10-11 00:18:14 +00:00
steam_no.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_oc.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_pl.json Fix messed up Crowdin config and restore synchronization 2022-03-22 06:59:12 +01:00
steam_pt_br.json Fetch translations from Crowdin 2022-03-26 00:10:27 +00:00
steam_pt_pt.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_ro.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_ru.json Fetch translations from Crowdin 2022-04-27 00:11:58 +00:00
steam_si.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_sk.json Fix messed up Crowdin config and restore synchronization 2022-03-22 06:59:12 +01:00
steam_sr.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_sv.json Fetch translations from Crowdin 2022-04-17 00:11:12 +00:00
steam_tr.json Fetch translations from Crowdin 2022-02-22 00:09:41 +00:00
steam_uk.json Fetch translations from Crowdin 2022-11-10 00:14:31 +00:00
steam_us.json
steam_val.json Fetch translations from Crowdin 2022-04-02 00:09:55 +00:00
steam_vn.json Fetch translations from Crowdin 2022-05-29 00:13:19 +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)