VCV Rack 2.6 released

image

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:

39 Likes

The article reads „ We have begun VCV Rack 3 development. Stay tuned for future news!“ at the end :open_mouth:

3 Likes

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.

5 Likes

… and Ctrl+F4 zooms to just the module under the cursor.

4 Likes

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.

2 Likes

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.

1 Like

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.

1 Like

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 ;-).

2 Likes

Nice touch: the translation file includes the names of the translators:

  • Stephan MĂźsch, Norbert Denninger (de)
  • Kevin U. Cano Guerra, Coriander V. Pines (es)
  • Pyer (fr)
  • Alessandro Paglia (it)
  • Leo Kuroshita (ja)
  • NoiseTone (zh).
11 Likes