mirror of
https://github.com/libretro/virtualjaguar-libretro.git
synced 2026-11-07 04:36:00 -10:00
libretro_core_options_intl.h has been included behind HAVE_NO_LANGEXTRA all along but is an empty stub -- no arrays, just RETRO_LANGUAGE_* placeholder comments -- so option labels have never been translatable. This adds the standard libretro Crowdin pipeline that fills it. The intl/ toolchain and the three workflows are copies of the RetroArch example_translation sample. Placeholders are filled for this repo: core name virtualjaguar-libretro, both headers at the repo root. Three deliberate deviations from the sample: - The workflows watch and write develop, not the default branch. This repo is GitFlow and master is release-only; the sample assumes one default branch, so on a schedule it would check out and commit straight to master. - The `on:` blocks are rewritten. The sample ships `on:`, `workflow_dispatch` and `schedule:` as sibling lines, which is not valid YAML -- the manual-dispatch trigger is silently lost. - intl/activate.py is dropped. It is a one-shot placeholder filler that targets the older crowdin_prep.yml / crowdin_translate.yml names and raises against the current sample's filenames. The placeholders here are already filled, so it had no remaining use. The sync step also gained a `git diff --cached --quiet ||` guard: the generator only rewrites the header when a translation actually changed, so a quiet week would otherwise fail the run on an empty commit. options_intl[] stays all-NULL. The generator writes only the intl header; enabling a language means replacing its NULL with &options_xx by hand once translations exist. That is manual upstream too, and is documented rather than pre-empted -- referencing symbols that do not exist yet would not compile. This unblocks now that #257 froze the option strings, so translators are not handed text that is about to change. Timing: sync runs Fridays 06:35 UTC. docs/core-option-translations.md covers the pipeline, the enable-a-language step, and the four setup steps that need libretro org access (Crowdin token -> CROWDIN_API_KEY secret -> initial setup run -> sync run). Until that secret exists both workflows fail on an empty key, which is the intended visible "not set up yet" state. Co-Authored-By: Claude Opus 5 <[email protected]>
14 lines
293 B
YAML
14 lines
293 B
YAML
"project_id": "380544"
|
|
"api_token": "_secret_"
|
|
"base_url": "https://api.crowdin.com"
|
|
"preserve_hierarchy": true
|
|
|
|
"files":
|
|
[
|
|
{
|
|
"source": "/_core_name_/_us.json",
|
|
"dest": "/_core_name_/_core_name_.json",
|
|
"translation": "/_core_name_/_%two_letters_code%.json",
|
|
},
|
|
]
|