根据developer.android.com,为了支持多种语言,我们应该为每种语言创建唯一的xml文件。他们的例子:
MyProject/
res/
values/
strings.xml
values-es/
strings.xml
values-fr/
strings.xml
假设单个语言的xml文档可能有几百个字符串条目,将这些文件捆绑到应用程序中的想法似乎不必要地沉重。
编译成.apk的语言xml文件也是如此?
或Android是否有另一个系统用于提供所需的语言内容(我是Android生态圈的新手,所以我还不知道Android操作系统如何与其上的应用程序进行交互)。
通常对于网站,语言内容存储在数据库中,并根据需要进行ajax检索。
答案 0 :(得分:1)
默认情况下,是的。您拥有的所有xml文件都包含在APK中。当用户将默认语言从“英语”更改为“法语”时,语言将在您的应用程序中更改,而无需重新下载和/或重新安装。
然而,可以发布多个仅包含某些捆绑包的APK,并通过Google Play商店将其发布到不同的受众特征。这通常适用于可以占用大量空间的Drawables,这些空间在下载它们的手机上永远不会被使用。因此,例如,使用XXHDPI分辨率资源下载具有低分辨率屏幕的应用程序是没有意义的。出于上述原因,语言通常不是一个好主意。
答案 1 :(得分:1)
XML文件捆绑在APK中。所以是的,所有语言文件都将随应用程序一起安装。请参阅:https://en.wikipedia.org/wiki/Android_application_package(XML文件位于/res
目录中)。
我不知道在应用程序中翻译文本的另一种方法,除了提供包含已翻译字符串的XML文件之外,正如您所见,这是按文档执行的方式。所以不,似乎没有其他办法。
但是,我有一个XML文件,其中包含超过2400个单词,并且该文件只有大约90Kb,并不是那么大。即使你支持所有16种(或18种)“主要”语言,它仍然只有1.62 Mb。
就我个人而言,我认为支付国际支持的代价很小。更不用说那是XML文本文件的大小。编译后的XML可能更小。
如果该大小仍然存在问题,您可以在发布时提供一些语言,并可以选择下载更多语言,让用户指定他需要的内容。
您还可以发布separate APKs并将语言基于用户可能从中下载的位置。