【发布时间】:2019-12-10 12:00:22
【问题描述】:
假设开发人员创建了一个支持de_DE 和en_US 的应用程序。
开发者在 App Store 中以德语和英语推广应用程序。
然后有一个会说西班牙语和德语的用户(按此顺序)下载该应用程序,因为有德语翻译。
此用户已使用以下首选语言列表设置他的手机:
es_ES
de_DE
现在,为了检测用户的语言,Cordova 建议使用 navigator.language(因为 ECMA 国际化 API 在所有主要平台上都可用)。
navigator.language 将是es_ES。此时,应用程序没有任何方法可以发现用户也说德语。在这种情况下,应用程序可能会退回到en_US,而不是de_DE。更糟糕的是,用户将在系统对话框中获得德语,但在应用程序的其余部分中获得英语。
Cordova 是否提供了一种可靠的方法来获取操作系统从应用支持的列表中选择的语言?
例如,iOS 将检查 CFBundleLocalizations 并在非 Cordova 应用程序中选择 de_DE。 Android 通过检查资源文件来做类似的事情。但我不知道如何在 Cordova 中获得操作系统做出的最终解决方案。
这里有一些关于不同操作系统如何选择应用语言的信息: https://developer.apple.com/library/archive/qa/qa1828/_index.html https://developer.android.com/guide/topics/resources/multilingual-support
【问题讨论】:
标签: android ios cordova localization internationalization