jcsteh / osara

OSARA: Open Source Accessibility for the REAPER Application
GNU General Public License v2.0
127 stars 46 forks source link

Add new string for translation template #573

Closed reaperaccessible closed 3 years ago

reaperaccessible commented 3 years ago

In MIDI editor, the following action is spoken in English by OSARA: Edit: Delete events Shortcut: Delete Comand ID: 40667 This string is not in the OSARA translation template. Thanks.

jcsteh commented 3 years ago

I'm almost certain that is a REAPER string, not OSARA.

ScottChesworth commented 3 years ago

Aha yeah, just spotted that it's one of those numbery style Reaper action IDs. I've passed it along to Cockos for ya @leejul, so gonna close this to keep the place tidy.

reaperaccessible commented 3 years ago

I just finished translating Reaper V6.36 + SWS in french and rechecked, this string is not there. Maybe Cockos forgot to put this string in the reaper636.ReaperLangPack template file. Others, the word percent spelled out by NVDA in TCP when scrubing with right arrow and left arrow is in French but in the MIDI editor, if I press down arrow to know the position of the note in percentage, it states the word percent an english. I have checked and there is no string in the template file for it to. Thanks for your help James.

jcsteh commented 3 years ago

in the MIDI editor, if I press down arrow to know the position of the note in percentage, it states the word percent an english.

Fixed. Be aware, though, that I haven't finished making quite a bit of the MIDI editor code translatable. It's a tedious job I just haven't found the time for.

ScottChesworth commented 3 years ago

Lieutenant Tedious reporting for duty sah! Is this something simple that I could bang away at with a pointer to get me going? I see the translation bits in other code and could handle inserting those, but don't know if there's more to it than that.

jcsteh commented 3 years ago

If you're willing to take a stab at it, that'd be welcome. There's not much more to it than adding translate() calls in the right places, but as usual, the devil is in the details.

Finding all of the messages that need translating can be a bit tricky. I did some work on that a while back, but looking briefly, it seems I missed a whole bunch of them. Searching for the " symbol on the same line as << symbols helps, but there are always edge cases.

Plurals can be a bit tricky too. You should definitely take a look at how plurals are handled for translation elsewhere, as it can require changing the way the message is built up in order to support proper grammar in other languages. For example, instead of having something like this:

ostringstream s;
s << removed << (removed == 1 ? " event" : " events") << " removed";
outputMessage(s);

You'll want something like this:

// Translators: Reported when removing events. {} will be replaced with the number of events; e.g. "2 events removed".
outputMessage(format(
    translate_plural("event removed", "{} events removed", removed),
    removed));

The key point is that we want separate full messages for the singular and plural versions. This also applies to some other cases where we build up a message which wouldn't make grammatical sense in other languages if we just combined words together. Instead, we need to build separate full messages. In particular, cmdMidiNoteSplitOrJoin is going to be a bit tricky.

You'll notice the translators comment above. I don't think we need translators comments for everything. However, we should definitely have them for format templates (where there's a {}), since the translator needs to know what will be substituted there. We should also have them if the message isn't going to make sense without context even to a user familiar with REAPER and OSARA. For example, the message "small" (indicating that a track is an open folder but small visually) has a translators comment because wtf does "small" refer to.

Finally, you generally want to avoid spaces at the start or end of translatable messages. If you need a space to separate something, that should still be included, but not translatable. For example, a suffix indicating that something is selected: s << " selected"; should probably be this: s << " " << translate("selected");

ElCrackLoko commented 3 years ago

Hello. Speaking of weird and grammatical issues of languages. I don't think it's a big problem when the translator is creative, for example. A few months ago the word added was replaced for when we paste tracks and items from the clipboard, that is, when we import them externally or bring them from another project or simply move them in the same project; What did we do? We got creative for our language, because in Spanish there is masculine and feminine for the word add, and the items are in their masculine gender and the tracks in their feminine gender. We just put the phrase, "from clipboard" now, if you copy or move a track, folder, item, envelope point or whatever matches the added word, "in question to the clipboard", that's what it will say . I think good translators will know about interpretation so that things are understandable in their language.