如何使用多种语言的Android资源?

时间:2016-09-22 20:41:58

标签: android assets

我在我的应用中使用资产文件作为帮助文件,并且已经有十几个。我正在将应用程序移植到多种语言。替代语言资产文件在哪里?

我已经在语言文件(值,值等)中使用“res / values”目录,以便在应用程序中使用。我认为“资产”目录用于帮助文件和类似的项目。

我试图用我所包含的许多帮助文件来混淆我的值文件夹,并使用“activity.getAssets()。open(file)”来读取文件。

此外,其中一些“资产”文件是不同的语言图片。

4 个答案:

答案 0 :(得分:1)

你能把文件放在/ res而不是/ assets吗?这内置了对多种语言的支持,有一个易于遵循的指南here

基本上,如果您的原始文本位于/res/values/strings.xml中,您可以将翻译放在/ res / values- {ISO LANGUAGE CODE} /strings.xml

例如,您的法语翻译将位于/res/values-fr/strings.xml。

Android会根据用户手机的区域设置选择合适的翻译文件。

/ res和/ assets here之间的其他差异有一些很好的解释。

答案 1 :(得分:0)

您可以找到on the official documentation所需的一切。请记住Android,几乎每个现有平台都有官方文档,您可以轻松找到这样的简单实现问题。这个网站是为了提出聪明,非平凡的问题。

答案 2 :(得分:0)

在资产中创建文件夹: 1. htmlpagesNL 2. htmlpagesUS

从htmlpagesNL复制文件并粘贴到htmlpagesUS并进行翻译

在Nl字符串文件中使用url: file:/// android_asset / htmlpagesNL进行NL翻译 在我们字符串文件中使用url: file:/// android_asset / htmlpagesUS用于美国翻译

支持不同的语言 Support different languages and cultures

答案 3 :(得分:0)

对于我的应用程序中的语音识别(使用 Vosk),我已将特定资产文件夹定义为资源字符串。 IE。 values\strings.xml 包含:

<resources>
    <string name="language_directory">vosk-model-small-en-us-0.15</string>
    ...

values-de-rDE\strings.xml 包含:

<resources>
    <string name="language_directory">vosk-model-small-de-0.15</string>
    ...

所以我可以通过

访问资产目录
val assets = Assets(activity)
val assetDir = assets.syncAssets()
val modelDir = activity.getString(R.string.language_directory)

recognitionListener.model = Model("$assetDir/$modelDir")

这样,始终会根据活动区域设置选择正确的目录。

就我而言,它们位于 models\src\main\assets\sync\<language_directory>