-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
i18n.getMessage()
language fallback paths
#296
Comments
I support Chrome's behavior, which seems more reasonable. Usually, developers want If the browser wants to support multiple different behaviors at the same time, I recommend add a new property in the 3rd parameter(options) in this api. |
@hanguokai generally speaking this can be useful to reduce the overall package size. However, there are cases when the fallback might not always be welcome. Say your |
I know the difference, it's better than the default(complete another language like English). For example,
The difference between "软件" and "軟體" is smaller than that of English. For the best user experience, developers need to supply full message map(1:1) if they are different. Only when they are the same or acceptable, they can be omitted. |
@hanguokai relying on good developer behaviour can be tricky. I can imagine there are Chinese people knowing only English and either Traditional / Simplified Chinese? I could be wrong? |
Do you know how many people only understand Chinese(zh-CN and/or zh-TW) but not English? Of course, there are real examples in every situation(combinations). I said in my previous post:
|
There are multiple possible strategies. Another possible fallback strategy is following If |
I believe Safari matches Chrome here after looking at the code. |
Reached out to the ltli w3c group here: w3c/ltli#35. Safari currently matches the behaviour of Chrome. If from above discussion is concluded this the preferred process, Firefox will follow. |
Quick update, @aphillips mentioned two potential fallback algorithms. One being a simple progressive removal of subtags. And the other being the more advanced algorithm from the Unicode's CLDR used in ICU. See: @xeenon @oliverdunk Do you know which algorithm is used in Safari and Chrome? Based on this we can figure out what algorithm should be used in Firefox considering the lack of any fallback algorithm in Firefox (Except to the default_locale). |
@carlosjeurissen Safari removes subtags, which we coded to match Chrome. |
I had a brief look through the code and Chrome appears to remove subtags as @xeenon suspected 👍 |
Not all browsers handle language fallbacks the same. Considering the following situation:
An extension is using the native i18n APIs with
"default_locale": "en"
inmanifest.json
, and threemessages.json
files in the languagesen
,pt
andpt-BR
.Both
en
andpt
include the message idsmessage1
andmessage2
. Whilept-BR
includes onlymessage1
.In the above situation, browsers handle fetching
i18n.getMessage('message2')
different.Chromium first checks
pt_BR/messages.json
, if the message is not present, it checkspt/messages.json
, and finally, if the message is still not found, it will check thedefault_locale
, in this caseen/messages.json
. In the above situation, this means it gets the message2 value frompt
.In Firefox, however, the browser first checks
pt_BR/messages.json
. If the message is not in this file, it will directly fallback todefault_locale
. so it checksen/messages.json
. Resulting in message2 value becomes the one fromen
.Interestingly enough, in Firefox, if
pt_BR/messages.json
is not present in general, it will checkpt/messages.json
first, before checkingen/messages.json
.What is the behaviour we want in these cases?
The text was updated successfully, but these errors were encountered: