There seems to be some confusion about how this all works (including in our documentation, so I’ll try to get that cleared up).
First of all you need to take into account which languages you’ve localized in your app. Lets say for example that I have a localized (dynamic) constant in my app which has three values, each defined for one of three “languages”
(I’m using the english names for the languages because it’s easier on my old unilingual brain)
Now while many systems only allow you to choose a single language, macOS allows you to select several, in order of preference. That is, in my case since I understand more Spanish then French, mine are set up as English, then Spanish, then French.
Now we build the app, once as Default, once as English and once as French.
On my default system with English as my primary language here’s what I’d get:
Build Language |
Constant Language |
Default |
English |
English |
English |
French |
English |
Obviously, the reason for this is that my system prefers English and there’s an English constant, so that’s what’s used.
Now, if I change my language order to Spanish, French, English, here’s what I’d get:
Build Language |
Constant Language |
Default |
French |
English |
French |
French |
French |
Surprised? Don’t be. There are two things in play here:
- My primary language (Spanish) does not exist in the Constant.
- My secondary language is French
The system is automagically showing the next preferred language, so the user gets French.
Now here’s where things get really tricky.
What happens if the user doesn’t have any languages on their system that you’ve defined in your app? If I remove English and French from my system, leaving only Spanish as my primary language:
Build Language |
Constant Language |
Default |
English |
English |
English |
French |
French |
In this case the constant that is displayed is dependent on the language that the app was built for and the system it was built on.
- Default shows English because the system that the app was built on is English
- English shows English because the app’s build language was set to that
- French shows French because the app’s build language was set to that
So yes, whether you choose Default or something else does matter in the grand scheme of things, but for most small development teams, leaving the language as Default works just fine because the only time it comes into play is when the user running your app doesn’t have any languages defined on their system that you have in your constants.