Windows 7 64-bit - Audacity 2.2.0-beta-Sep 1 2017 - .exe-installer
If i write something non-empty without “|” for msgstr in this translation i get the following dialog when using File > Open…
#. i18n-hint: The vertical bars and * are essential here. #: src/BatchProcessDialog.cpp:265 src/Project.cpp:2842
msgid “All files|*|All supported files|”
msgstr “x”
I see the comment “i18n-hint: The vertical bars and * are essential here.” but i dont think a translation should affect the software in such a way.
It would be better for the code to check that the string lives up to the requirements and if not discard it and use the original string.
That way the software will still work no matter what the string have been translated to.
The perhaps a message would be written in the log instead so that the failty translation could be spotted and fixed.
Moved this topic to “Adding features” as I’d like to deal with this at the earliest opportunity. (I can’t change this now as the code is currently in freeze other than bug fixes)
I dont think its a problem that the translation is in one string like “All files|*|All supported files|”.
There are other strings like that:
Text files (.txt)|.txt|All files|*
MIDI file (.mid)|.mid|Allegro file (.gro)|.gro
MIDI and Allegro files (.mid;.midi;.gro)|.mid;.midi;.gro|MIDI files (.mid;.midi)|.mid;.midi|Allegro files (.gro)|.gro|All files|*
All files|*
Only avformat.dll|avformat.dll|Dynamically Linked Libraries (.dll)|.dll|All Files|*
Dynamic Libraries (.dylib)|.dylib|All Files ()|
Only libavformat.so|libavformat*.so*|Dynamically Linked Libraries (.so)|.so|All Files ()|
xml files (.xml;.XML)|.xml;.XML
Nyquist scripts (.ny)|.ny|Lisp scripts (.lsp)|.lsp|Text files (.txt)|.txt|All files|*
XML files (.xml)|.xml|All files|*
Only lame_enc.dll|lame_enc.dll|Dynamically Linked Libraries (.dll)|.dll|All Files|*
Only libmp3lame.dylib|libmp3lame.dylib|Dynamic Libraries (.dylib)|.dylib|All Files ()|
Only libmp3lame.so.0|libmp3lame.so.0|Primary Shared Object files (.so)|.so|Extended Libraries (.so)|.so|All Files ()|
Nyquist scripts (.ny)|.ny|Lisp scripts (.lsp)|.lsp|All files|*
I think its okay to keep them like that.
But to test the translated strings before using them so they can’t create problems in the software like that dialog.
There are also some strings like:
01000,01000,01000 samples|#
I dont know if they can all cause problems if translated to something without |.
It’s much easier to just split the string rather than validating the translation text.
You guys that do the translations do a fantastic job and it is extremely rare that a translation causes a fault in the program, but it’s better if we can prevent problems from occurring.
The “Assert” is actually a “test”, and in the previous version of wxWidgets an Assert would only appear in debug builds. However, in wxWidgets 3.0 there are more debug levels and even release builds will show Asserts if they fire, so we need to take more care that we don’t trigger them.
I guess it does say “All files” a lot in the strings.
12 times in the strings i posted earlier.
So that would be smarter to just have it translated once and used multiple places.
Also maybe all the “" and ".txt” etc. dont need to be in the translation files at all if they are always suppose to be the same.
So this:
Text files (.txt)|.txt|All files|*
MIDI file (.mid)|.mid|Allegro file (.gro)|.gro
MIDI and Allegro files (.mid;.midi;.gro)|.mid;.midi;.gro|MIDI files (.mid;.midi)|.mid;.midi|Allegro files (.gro)|.gro|All files|*
All files|*
Only avformat.dll|avformat.dll|Dynamically Linked Libraries (.dll)|.dll|All Files|*
Dynamic Libraries (.dylib)|.dylib|All Files ()|
Only libavformat.so|libavformat*.so*|Dynamically Linked Libraries (.so)|.so|All Files ()|
xml files (.xml;.XML)|.xml;.XML
Nyquist scripts (.ny)|.ny|Lisp scripts (.lsp)|.lsp|Text files (.txt)|.txt|All files|*
XML files (.xml)|.xml|All files|*
Only lame_enc.dll|lame_enc.dll|Dynamically Linked Libraries (.dll)|.dll|All Files|*
Only libmp3lame.dylib|libmp3lame.dylib|Dynamic Libraries (.dylib)|.dylib|All Files ()|
Only libmp3lame.so.0|libmp3lame.so.0|Primary Shared Object files (.so)|.so|Extended Libraries (.so)|.so|All Files ()|
Nyquist scripts (.ny)|.ny|Lisp scripts (.lsp)|.lsp|All files|*
Could become something like this:
All files
Text files
MIDI file
Allegro file
MIDI and Allegro files
MIDI files
Allegro files
Only avformat.dll avformat.dll
Dynamically Linked Libraries
Dynamic Libraries
Only libavformat.so
libavformat*.so*
Dynamically Linked Libraries
xml files
Nyquist scripts
Lisp scripts
Text files
XML files
Only lame_enc.dll
lame_enc.dll
Dynamically Linked Libraries
Only libmp3lame.dylib
Dynamic Libraries
Only libmp3lame.so.0
Primary Shared Object files
Extended Libraries
Nyquist scripts
Lisp scripts
Some are them appear multiple times like “Dynamically Linked Libraries” so that could be translated in just one place.
Also “Dynamic Libraries”
There is both “xml files” with small characters and “XML files” with big. So having only one string for is helps get it consistent.
“Nyquist scripts” and “Lisp scripts” also appread twice.
Perhaps filnames like “libavformat.so” and “lame_enc.dll” should also not be in the translations files if they are always suppose to be the same.