应用程序中的多语言支持

时间:2012-10-02 20:50:34

标签: android multilingual

我不确定这是否是一个愚蠢的问题,但我有一个应用程序,我需要提供给其他语言。我已经阅读了很多关于此的内容,但我对如何解决这个问题感到困惑。我是否真的需要将整个应用程序翻译成我想要的语言或者系统会这样做?我阅读了有关使用本地化(Android docs)和许多论坛帖子的Android文档。我已阅读有关在应用程序中更改配置的信息,但即使更改设备上的区域设置也无效。任何人都可以指出我正确的方向吗?我希望用户能够更改应用程序本身的语言,因为它可能会在具有不同首选项的人之间传递。提前谢谢!

2 个答案:

答案 0 :(得分:3)

基本上,您需要将要翻译的字符串放入文件

res/values/strings.xml  

表示默认的en语言环境,然后是通过Resources.getString(R.string.theId)或通过@string/theId在其他xml文件中引用代码中的此类条目, 其中theId表示条目的ID,例如在

<string name="theId">Username</string>

在xml文件中。

现在要翻译它,你可以创建额外的

res/values-<lc>/strings.xml 

文件where代表相应的2个字母的区域代码。

答案 1 :(得分:0)

要添加对更多语言环境的支持,请在res /中创建其他目录。每个目录的名称应遵循以下格式:

-b + [+]例如,values-b + es /包含语言代码为es的语言环境的字符串资源。类似地,mipmap-b + es + ES /包含具有es语言代码和ES国家代码的语言环境的图标。 Android在运行时根据设备的区域设置加载适当的资源。

例如,以下是针对不同语言的一些不同资源文件:英文字符串(默认语言环境),/ values / strings.xml:

<resources>
    <string name="hello">Hello</string>
</resources> 

法语字符串(fr locale),/ values-fr / strings.xml:

<resources>
    <string name="hello">Bonjour</string>
</resources> 

使用您应用中的资源:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello" />