VCV Rack 2.6 has been released, including translations to German, Spanish, French, Italian, Chinese, and Japanese.
Download the new version and read about its new features and fixes at:
VCV Rack 2.6 has been released, including translations to German, Spanish, French, Italian, Chinese, and Japanese.
Download the new version and read about its new features and fixes at:
The article reads â We have begun VCV Rack 3 development. Stay tuned for future news!â at the end
Cool, let me know if you need help with a Swedish translation too.
The translations are huge news!
Iâd like to highlight one little new (2.6.0 actually) feature I really appreciate: press F4 and it instantly centers your patch in your Rack window. I find this immensely valuable for my workflow and while making videos.
⌠and Ctrl+F4 zooms to just the module under the cursor.
Observations on the translations:
tl;dr: Nice for Rack, as far as it goes. No help for plugins, though (other than the current language code). Nothing wrong with this. Itâs the natural starting point.
No mechanism for language-specific graphics (only text), so no localized panels.
Core and Fundamental plugin panels are not localized, but dynamic text like parts of what you see in Audio are, so itâs a mixed bag.
A plugin dev can use the translate functions declared in string,h (theyâre not marked PRIVATE), but with these you can only get translations for Rackâs strings, of course. The lookup is based on the English string (rather than an ID number used by other resource systems), which means taking a dependence on the exact text used by Rack, which can change version to version. So having this exposed really doesnât provide utility for plugin developers.
There is no provided API for a plugin to load their own translations. This would have been trivial to do (expose the loadTranslations
function and change it to take a path and a reference to a map<string, map<string,string>>
).
You can get the currently selected language from ::rack::settings::language
, so at least you have a way to follow the current setting, if you wanted to do a localized plugin.
In your plugin you can use
std::string lang = settings::language;
configParam(FREQ_PARAM, 0.f, 1.f, 0.f,
lang == "it" ? "Frequenza" :
lang == "de" ? "Frequenz" :
lang == "ja" ? "ĺ¨ćł˘ć°" :
"Frequency"
);
Is it worth it? Maybe, if many non-English speakers begin using VCV Rack because of its UI translations.
Translation IDs are not equal to the English string. This is why en.json
is needed.
It would be too messy for every plugin to have its own translation JSON files. Itâs easier to include translations in the source code, as above.
I just saw that Vortico posted that there is a way, but I donât think people need it actually. Most of the people I know that donât speak english at all, or speak it on the beginner level, can navigate english UI just fine.I remember when I was very bad at english, I still knew what, say, FIle/Edit/About and Copy/Cut/Paste mean. That said, localization might make it more approachable for the beginners. But for the people like me, for example, who are more familiar with english UIs, it would be be confusing. Like say instead of âFine tuningâ it was say âĐОдŃŃŃОКкаâ or something, or PWM would say âШĐĐâ. I would instantly switch it to english. Even my DIY modular is mostly in english, and DIY modules I saw on local internet markets and russian/ukrainian/belorussian Youtube are all in english. So it would be great for people who just got into this hobby, but later if it picks up, they would switch it to english anyway, because thatâs the default language for modular synths.
Ah, I missed that the translation keys are codes. My bad. I should have looked at the translation json files :-). I have seen the English text used as keys in other contexts, and I think itâs a bad idea. Rack does it right.
I do not recommend embedding translations in source code except as a minimal prototype just to see what it looks like. Youâd need to modify code all over the place to add another language or incorporate updates. Translators will want other formats for the text to translate (.po, .csv, .xlsx, .json). The Rack format is a perfectly good resource and translation format.
After my current plugin is done, I might do something similar to my other repos (generic_blank, svg_theme which is getting extensive updates) with support code and a demo to cover localization (including panels).
In a previous life I developed localization tooling for the business software division at Microsoft. itâll be a fun exercise to work that up for Rack plugins.
What about providing module-manuals in different languages?
Translating documentation is almost a separate world from translating software. If youâre paying for translation, industry standard is that you pay by the word (often higher rates for software translation, but still by the word). If you have lots of screen shots or other art, the logistics start to get challenging because the translation process for graphics is complex and expensive (this is usually charged by the hour).
As for the process, translation agencies generally take whatever your source format is and return that. Microsoft Word is almost universally supported. Markdown is great. Harder to find support for something like TeX.
Machine translation has come a long way. All the commercial translation agencies use it extensively, even when youâre paying for human translation. You can usually get a low rate if you accept all-machine translation, and there are usually options for minimal post-editing at lower rates.
If you wanted to produce translated plugin manuals, you might try just doing machine translation then open the repo for contributors to do the post-editing.
In the Rack world, youâre lucky if the plugin has a manual at all.
Honestly, I really donât expect to see a significant number of localized plugins, even if I do provide the code and a demo ;-).
Nice touch: the translation file includes the names of the translators: