Sometimes my Xojo Apps are rejected because they run in german language on non-german systems.
I always add my UI Strings as dynamic constants in Xojo with the default text entered in english and then add a german translation for any platform. And if i then build the Apps with the Build Language as Default, Xojo often creates no en-EN.lproj Folder or a Folder with a strings file containing only the following 2 lines:
“LanguageModule.lngLanguageCode” = “en_EN”;
“LanguageModule.StoreCountryCode” = en";
If i change the Build Language to english it looks like Xojo is always creating a de_DE and an en_EN Folder with the full set of english localized strings in the english Localizable.strings" file.
In short; i think the App Store demands an en-EN.lproj Folder with a complete Localizable.strings File or the App will run with the language of the OS Language it has been build on.
Is this an intended behavior or am i doing something wrong here?
Suppose you have a dynamic constant set up as
default = “default string”
german variant = “german”
and build using the “default language”
I’m assuming that like me your OS runs in english
This should produce 2 localized strings files
An en.lproj containing the string “default string”
And a de.lproj containing “german”
So why does it do this ?
“Default” is not a language - so the IDE figures out that your “default” is whatever language the OS is running in, in this case English, and so creates the english localized strings using the default, “default string”, and the german one with that value.
IF instead your OS runs in German then what happens is quite different.
The IDE figures out that your “default” is whatever language the OS is running in, in this case German, and so creates the german localized strings using the specific value for that language which is “german”. And since there are no other localizations listed there will be NO english localized strings created.
ALWAYs list in the variation ALL the languages you intend to support and basically NEVER rely on “default” because it can change depending on how your OS is set.
Thank you Norman. This was exactly the information i was looking for.
There are a few bug reports about “default” based on this misunderstanding about what language default represents because it literally is “the language the account doing the compile is running in”
Maybe you should move this setting into the Xojo preferences and set it by default to english? Plus, hiding the “Default” option (to keep it for the IDE)?
If its set as “default” we should probably set it to whatever the current language is.
Although I’m not sure that’s any more obvious.
But yes “something” should change
Recently I stumbled upon this myself. This IS confusing. Why would I want something different than english for default? If the language of the computer isn’t english then default ends up as a mess - a mix of english and non-english.
Because maybe you live in a country where English isn’t your first language so you write you default values in Spanish, Portuguese, german, French or any other of the hundreds of languages
That was a joke Still the default is confusing. How about simply designating the default language instead of duplicating the values for one language?
Many do something like that and remove “default” as a choice and have it replaced by the actual language the IDE is running in.
That’d make like a little clearer
It wasn’t this way before as the way language lookup was done before was incorrect for OS X
If you had one of the localized languages as the first entry then it would use that, otherwise it used the “default” which is incorrect.
It should have fallen back through all the users choices in the order they listed them.
That was altered 5 or 6 or so years ago to behave as people expected on OS X.
I summited a feature request (#6250) & Thomas submitted a bug report about “default” (#17070).
There’s a handful of things about dynamic constants that probably need to get touched when I get to this.
And I can hear “When will that be ?”
Well my to do list is a few hundred items