我有一个多语言的应用程序与主要语言英语和第二语言阿拉伯语.
如文档中所述,
android:supportsRtl="true"在清单中添加了.left和right属性start,并end分别.strings-ar(和其他资源类似).以上设置正常.改变后的Locale到ar-AE,阿拉伯文字和资源都正确地显示在我的活动.
但是,每次我导航到
ActivityaWebView和/或a时WebViewClient,语言环境,文本和布局方向都会突然恢复为设备默认值.
进一步提示:
Activity有a WebView和/或a WebViewClient(并且我有几个)时才会发生语言环境的突然转变.它不会发生在任何其他活动上.Android 7.0具有多语言环境支持,允许用户设置多个默认语言环境.因此,如果我将主要区域设置为Locale.UK:
然后在导航到时
WebView,语言环境从更改ar-AE为en-GB.
Android 7.0 API更改:
如API更改列表中所示,API 24中的以下类中添加了与语言环境相关的新方法:
Locale:
Configuration:
但是,我正在使用API 23构建我的应用程序,并且我没有使用任何这些新方法.
此外......
问题也出现在Nexus …
android locale android-webview android-7.0-nougat android-chrome
好的,我知道标题声音疯了:)
这就是我想要的.我的应用程序已本地化为设备用户,但我发送回服务器的信息需要全部为英文.我的默认应用语言环境英语.
例如,我有数组:
我有本地化的数组:
当俄罗斯用户看到列表并选择几个项目时 - 我需要获得相应的英文版本.
我想我的答案归结为如何做getString()并传递locale?或者如何在特定区域设置中获取阵列?
我使用了最新的android包装格式捆绑包,并将我的应用发送到Beta渠道,捆绑减少了应用大小的〜60%,这真是太棒了,
我的应用程序支持英语和阿拉伯语(可以在应用程序中即时切换)
现在的问题是:AFAIK基本apk将仅在应用程序下载期间具有用于用户语言的资源(如果在下载时,如果语言是英语,则只会对string-en.xml进行废弃)
所以我该如何处理用户在应用内切换语言的情况..
请告诉我..
我的应用程序中有两个区域设置.我是否可以访问资源,例如来自不同语言环境的字符串数组,而无需更改当前语言环境?我的意思是编码我不喜欢在设置中更改它.
例如,有一个提供多语言支持的应用程序,在我的activity/UI中,我调用getResources().getString(R.string.hello)了strings.xml中存在的内容
values\strings.xml
values-ru\strings.xml
Run Code Online (Sandbox Code Playgroud)
现在在调用getResources().getString(R.string.hello)并需要根据系统区域设置访问字符串时,是否会从values\strings.xmlOR中获取字符串values-ru\strings.xml?
要么
是否需要根据系统区域设置更改我的应用程序区域设置(保持应用程序区域设置与系统区域设置相同),然后从getString()以下链接中建议的内容中检索值
我搜索了其他各种链接,但无法找到解决方案
我们都知道Android应用程序可以根据不同语言环境的支持进行高度自定义.在我的情况下,我的应用程序目前支持6个语言环境,一切顺利.每当用户选择手机区域设置时,应用程序切换到另一个区域设置,所有菜单,消息都使用本地语言.
现在问题是我希望以编程方式抑制应用程序中的特定区域设置,因为我将使用不同的渠道,定价政策等在不同国家/地区分发应用程序(并非总是通过Android Market).因此,如果应用程序用于说中国 - 用户无法将语言环境切换为英语或法语.
最简单的方法是从应用程序中删除其他语言环境资源 - 我理解这一点.但是从源维护的角度来看它并不是很舒服,所以我更倾向于采用一些编程方式来减少/抑制应用程序中的某些语言环境.
有任何想法吗?