RetroArch/intl
jdgleaver c37f540b72 Core Info Cache Improvements
- Core info cache can now be enabled/disabled on all platforms via a new `Settings > Core > Cache Core Info Files` option
- Core info cache file has been renamed from `.cache` to `core_info.cache` (i.e. it is no longer a 'hidden' file on Unix platforms, so can be deleted easily)
- The core info cache file is now compressed (rzip) to further reduce disk IO
- The presence of a `core_info.refresh` file in the core info directory will force a one-time refresh of the info cache. This file is generated automatically when toggling on the `Cache Core Info Files` option, and we will also add it to core info file packaging such that updating info files (either manually or via the online updater) will force a refresh
- The core info cache no longer contains 'core is locked' and 'firmware missing' data fields; these are 'dynamic' properties that must be determined at runtime
- The 'core is locked' status is now determined on core info intialisation by parsing the core directory listing, rather than by performing indivdual 'lock file exists' checks. This minimises file IO, and greatly improves performance on devices with slow storage
- While parsing the core info cache file, we now avoid unnecessary `strdup()`s when adding entries to the resultant cache list
- Memory leaks (potential and real) have been fixed, and safety checks added
- Build errors have been fixed
2021-05-06 15:00:55 +01:00
..
.gitignore Add steam translations 2020-06-21 19:03:09 +03:00
crowdin_sync.py Read Crowdin API key from GitHub Secrets 2020-08-21 21:16:52 +03:00
crowdin.yaml Read Crowdin API key from GitHub Secrets 2020-08-21 21:16:52 +03:00
fetch_progress.py Synchronize translations 2020-06-04 12:40:25 +03:00
googleplay_ar.json Fetch translations from Crowdin 2020-08-24 23:13:16 +03:00
googleplay_ast.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_chs.json Improve Crowdin scripts and fetch translations 2020-08-07 22:46:17 +03:00
googleplay_cht.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_cy.json Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
googleplay_da.json Fetch translations from Crowdin 2020-07-14 12:03:29 +03:00
googleplay_de.json Fetch translations from Crowdin 2021-01-09 12:04:24 +08:00
googleplay_el.json Fetch translations from Crowdin 2020-09-19 16:54:44 +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 2021-03-11 22:15:42 +08: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_hu.json Fetch translations from Crowdin 2020-08-24 23:13:16 +03:00
googleplay_id.json Fetch translations from Crowdin (#11951) 2021-01-28 07:35:03 +01:00
googleplay_it.json Fetch translations from Crowdin 2021-01-09 12:04:24 +08:00
googleplay_ja.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_ko.json Fetch translations from Crowdin 2020-09-19 16:54:44 +03:00
googleplay_nl.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_pl.json Fetch translations from Crowdin 2020-11-23 22:54:07 +08:00
googleplay_pt_br.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
googleplay_pt_pt.json Fetch translations from Crowdin 2020-09-19 16:54:44 +03:00
googleplay_ru.json Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
googleplay_sk.json Fetch translations from Crowdin 2020-08-24 23:13:16 +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-09-19 16:54:44 +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 Improve Crowdin scripts and fetch translations 2020-08-07 22:46: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 Created new Ozone Dracula color theme. 2021-04-14 22:18:18 +02:00
msg_hash_ast.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_ast.h Copied RGUI Dracula theme localized strings to new Ozone Dracula theme. 2021-04-14 16:49:59 +02:00
msg_hash_chs.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_chs.h Copied RGUI Dracula theme localized strings to new Ozone Dracula theme. 2021-04-14 16:49:59 +02:00
msg_hash_cht.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_cht.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_cy.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_da.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_de.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_de.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_el.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_el.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_eo.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_eo.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_es.c Updating msg_hash_es.c 2020-06-19 11:24:08 +02:00
msg_hash_es.h Copied RGUI Dracula theme localized strings to new Ozone Dracula theme. 2021-04-14 16:49:59 +02:00
msg_hash_fa.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_fa.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_fi.c intl: Add Finnish language 2020-12-05 22:10:29 +01:00
msg_hash_fi.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_fr.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_fr.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_gl.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_he.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_he.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_hu.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_id.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_it.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_it.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_ja.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_ja.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_ko.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_ko.h Copied RGUI Dracula theme localized strings to new Ozone Dracula theme. 2021-04-14 16:49:59 +02:00
msg_hash_lbl.h Core Info Cache Improvements 2021-05-06 15:00:55 +01:00
msg_hash_nl.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_nl.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_pl.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_pl.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_pt_br.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_pt_br.h Copied RGUI Dracula theme localized strings to new Ozone Dracula theme. 2021-04-14 16:49:59 +02:00
msg_hash_pt_pt.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_pt_pt.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_ru.c (RGUI) Add Russian language support 2021-01-13 10:00:51 +00:00
msg_hash_ru.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_sk.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_sk.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_sv.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
msg_hash_tr.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_tr.h Copied RGUI Dracula theme localized strings to new Ozone Dracula theme. 2021-04-14 16:49:59 +02:00
msg_hash_uk.h Copied RGUI Dracula theme localized strings to new Ozone Dracula theme. 2021-04-14 16:49:59 +02:00
msg_hash_us.c Lakka: add menu for time zone setting 2021-04-21 18:12:42 +02:00
msg_hash_us.h Core Info Cache Improvements 2021-05-06 15:00:55 +01:00
msg_hash_vn.c (menu_dialog) Cleanups 2020-06-12 08:06:30 +02:00
msg_hash_vn.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
progress.h Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
README.md Add instruction to create new languages 2020-08-24 23:17:13 +03:00
steam_ar.json Fetch translations from Crowdin 2020-08-24 23:13:16 +03:00
steam_ast.json Fetch translations from Crowdin 2020-11-23 22:54:07 +08: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_cy.json Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
steam_da.json Fetch translations from Crowdin 2020-07-14 12:03:29 +03:00
steam_de.json Fetch translations from Crowdin 2021-01-09 12:04:24 +08:00
steam_el.json Fetch translations from Crowdin 2020-08-24 23:13:16 +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 (#11951) 2021-01-28 07:35:03 +01:00
steam_fr.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_gl.json Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
steam_he.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_hu.json Fetch translations from Crowdin 2021-03-11 22:15:42 +08:00
steam_id.json Fetch translations from Crowdin 2021-01-09 12:04:24 +08:00
steam_it.json Fetch translations from Crowdin 2021-01-09 12:04:24 +08:00
steam_ja.json Fetch translations from Crowdin 2020-08-24 23:13:16 +03:00
steam_ko.json Fetch translations from Crowdin 2020-09-19 16:54:44 +03:00
steam_nl.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_pl.json Fetch translations from Crowdin (#11951) 2021-01-28 07:35:03 +01:00
steam_pt_br.json Fetch translations from Crowdin 2020-08-24 23:13:16 +03:00
steam_pt_pt.json Crowdin synchronization 2020-06-30 15:20:30 +03:00
steam_ru.json Fetch translations from Crowdin (#11983) 2021-02-04 13:11:36 +01: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-08-24 23:13:16 +03:00
steam_uk.json Fetch translations from Crowdin 2020-09-19 16:54:44 +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)"
      )
    

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)