3 ms·
> (What even is the point of doing `Locale.setDefault()` with the same Locale that `Locale.getDefault()` returned? I don't know anything about Android.) The co
by david_allison 2y ago
> (What even is the point of doing `Locale.setDefault()` with the same Locale that `Locale.getDefault()` returned? I don't know anything about Android.)
The code intends to trim the country, variant and any extensions from the value returned from `Locale.getDefault()`
Example: "Chinese (Traditional) - Taiwan" to "Chinese"
Pseudocode:
`zh_Hant_TW` -> `zh`
It also normalizes to fix some Android internal mapping issues due to changes in ISO 639 (Hebrew can be `iw` or `he[b]`)
- ivan_gammel 2y agoDoes it make sense though to do it this way? I18n framework that loads resources should support fallback internally in case there’s no direct match.
- david_allison 2y agoLimiting, but it looks like a valid solution. Android's native i18n is a mess. We went down the route of duplicating strings between `/values-heb` and `/values-iw` to fix the platform issues, even though the change from `iw` -> `heb` was enacted in ISO 639:1989.[0] OP's change is questionable in that it may block regional dialects: `[zh-CN, zh-TW]; [pt-PT, pt-BR]` in case the system default is set incorrectly, but it will suffice for most Android apps which will realistically only be in a small subset of 'easy' languages. [0] https://xml.coverpages.org/iso639a.html https://xml.coverpages.org/iso639a.html (revised 1989)