让 App 支持不同的语言(中文,法文)

Android 开发

让 App 本土化的第一件事就是语言,知道如何让 App 支持各种语言会很有帮助,而且可以减少字符串硬编码

因为文档解释得很详细了,所以下面就跟着 文档 走一轮,有一些地方做出小小的标识和改动

创建


要怎样做?按照这个 文档 里说的

Create Locale Directories and String Files
创建语言区域目录和字符串文件

如何做?继续照着 文档

To add support for more languages, create additional values directories inside res/ that include a hyphen and the ISO language code at the end of the directory name. For example, values-es/ is the directory containing simple resources for the Locales with the language code "es". Android loads the appropriate resources according to the locale settings of the device at run time. For more information, see Providing Alternative Resources.

如需添加对更多语言的支持, 在 res/ 创建另外的 values 文件夹,并在文件夹 (values) 名称末尾加上连字符 -ISO 语言代码。例如,values-es/ 目录包含的资源会用于语言代码为“es”的语言区域 (这个是西班牙语)Android 根据运行时设备的语言区域设置加载相应语言的资源**。如需了解详细信息,请参阅提供备用资源

意思是在 res/ 目录下创建 名称末尾 不同的 values ,其中目录末尾 ISO 语言代码 则对应着相应语言,譬如:values-fr 则代表着手机系统语言为 法语 时读取的目录

一旦您决定了为哪些语言提供支持,便可创建资源子目录和字符串资源文件。例如 我要支持 中文法文, 英文(默认):

  1. 创建目录, 对 res 右键-> New -> Android resource directory:


    create dir
  2. 在相应目录下创建 strings.xml 文件,右键目录-> New -> Values res...ce file


    创建 strings.xml

最后res文件夹里的结构大致上如下:

MyProject/
    res/
       values/
           strings.xml
       values-zh/
           strings.xml
       values-fr/
           strings.xml

将各个语言区域的字符串值添加到相应文件中。

在运行时,Android 系统会根据当前为用户设备设置的语言区域使用相应的字符串资源集的

例如,以下是一些不同语言下的不同 strings.xml 文件。

英语(默认语言区域),/values/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">My Application</string>
    <string name="hello_world">Hello World!</string>
</resources>

中文,/values-zh/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">我的应用</string>
    <string name="hello_world">你好 世界!</string>
</resources>

法语,/values-fr/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mon Application</string>
    <string name="hello_world">Bonjour le monde !</string>
</resources>

注:您可以在任何资源类型上使用语言区域限定符(或任何配置限定符),例如,您可以提供本地化版本的可绘制位图。 如需了解详细信息,请参阅本地化

使用定义在 strings.xml 里的字符串


继续照着 文档

You can reference your string resources in your source code and other XML files using the resource name defined by the <string> element's name attribute.

您可以使用由 <string> 元素name 属性 定义的资源名称在您的源代码(java 代码) 和 其他 XML 文件(布局文件) 中引用您的 字符串资源(定义在 strings.xml 里的字符串)

字符串资源(string resources) 可以理解为 定义在 strings.xml 里的字符串

在您的源代码中,可以使用语法 R.string.<string_name> 引用字符串资源(定义在 strings.xml 里的字符串), 有许多方法都接受以这种方式引用字符串。

例如,这里取出名字为 "hello_world" 的字符串资源,假设手机语言是中文的,那么取出的字符串,按照上面定义好的,就为: 你好 世界!


// Get a string resource from your app's Resources
//变量 hello 的值为 "你好 世界!"
String hello = getResources().getString(R.string.hello_world);

// Or supply a string resource to a method that requires a string
// textView 会显示 "你好 世界!"
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);

在其他 XML 文件中,只要 XML 属性接受字符串值,您就可以使用语法 @string/<string_name> 引用字符串资源。

例如:

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

更多


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容