Android 实现资源国际化

前言

国际化指的是当Android系统切换语言时,相关设置也随之改变,从而使用不同的国家地区;

简而言之,就是我们的Android App中的文字和图片会随着不同国家的地区变化从而切换为不同语言文字和不同国家的图片

文字图片国际化

只要在 res 文件夹下新建对应语言的 values 文件夹,然后在对应的values文件夹下创建strings.xml即可

中文环境:values-zh

英语环境:values-en

美国英文环境:values-en-rUS

大陆地区中文环境: values-zh-rCN

1. 创建对应国家地区的文本资源包

我们在res资源文件夹下创建我们需要的国家地区资源包,包名一定要按此命名,创建好了之后把我们系统默认创建的string.xml复制到我们刚刚创建好的资源包中,如下图所示:

values中string.xml

<resources>
    <string name="app_name">MyComposeC15</string>
    <string name="test_demo">我的项目</string>
</resources>

values-zh-rCN中string.xml

<resources>
    <string name="app_name">MyComposeC15</string>
    <string name="test_demo">我的项目</string>
</resources>

这个中文资源包和默认的values中的一样,因为我这里默认的是中文

values-en-rUS中string.xml

<resources>
    <string name="app_name">MyComposeC15</string>
    <string name="test_demo">My Project</string>
</resources>

大家可以看到,我在美国地区将test_demo这一字符串设置为了英文文本

效果如下图:

2. 创建对应国家的文本资源包

刚刚我们创建好了不同国家地区的文本资源,接下来我们再为不同国家地区创建不同的图片资源包;

还是在res资源根目录中创建,如下图所示:

然后我们切换到Android目录来看看效果图:

2. 编写UI界面

我先用声明式UI写一个竖向布局,其中里面的UI元素有一张图片和一段文字,大家可以用命令式UI编写,这个都不会影响国际化,如下图所示

到此为止,我们便完成了中英文文字和图片的国际化了

国际化分享

Values的资源文件夹的写法规则有二种方式,第一种就是Values-国家简写,第二种方式就是Values-国家简写-地名

中文(中国):values-zh-rCN
中文(中国台湾):values-zh-rTW
中文(中国香港):values-zh-rHK
英语(美国):values-en-rUS
英语(英国):values-en-rGB
英文(澳大利亚):values-en-rAU
英文(加拿大):values-en-rCA
英文(爱尔兰):values-en-rIE
英文(印度):values-en-rIN
英文(新西兰):values-en-rNZ
英文(新加坡):values-en-rSG
英文(南非):values-en-rZA
阿拉伯文(埃及):values-ar-rEG
阿拉伯文(以色列):values-ar-rIL
保加利亚文: values-bg-rBG
加泰罗尼亚文:values-ca-rES
捷克文:values-cs-rCZ
丹麦文:values-da-rDK
德文(奥地利):values-de-rAT
德文(瑞士):values-de-rCH
德文(德国):values-de-rDE
德文(列支敦士登):values-de-rLI
希腊文:values-el-rGR
西班牙文(西班牙):values-es-rES
西班牙文(美国):values-es-rUS
芬兰文(芬兰):values-fi-rFI
法文(比利时):values-fr-rBE
法文(加拿大):values-fr-rCA
法文(瑞士):values-fr-rCH
法文(法国):values-fr-rFR
希伯来文:values-iw-rIL
印地文:values-hi-rIN
克罗里亚文:values-hr-rHR
匈牙利文:values-hu-rHU
印度尼西亚文:values-in-rID
意大利文(瑞士):values-it-rCH
意大利文(意大利):values-it-rIT
日文:values-ja-rJP
韩文:values-ko-rKR
立陶宛文:valueslt-rLT
拉脱维亚文:values-lv-rLV
挪威博克马尔文:values-nb-rNO
荷兰文(比利时):values-nl-BE
荷兰文(荷兰):values-nl-rNL
波兰文:values-pl-rPL
葡萄牙文(巴西):values-pt-rBR
葡萄牙文(葡萄牙):values-pt-rPT
罗马尼亚文:values-ro-rRO
俄文:values-ru-rRU
斯洛伐克文:values-sk-rSK
斯洛文尼亚文:values-sl-rSI
塞尔维亚文:values-sr-rRS
瑞典文:values-sv-rSE
泰文:values-th-rTH
塔加洛语:values-tl-rPH
土耳其文:values--r-rTR
乌克兰文:values-uk-rUA
越南文:values-vi-rVN
缅甸语 : values-my

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现 Android 国际化的关键在于创建对应语言的资源文件,并在代码中动态加载。下面是一个简单的示例: 1. 创建默认的资源文件 在项目的 res/values 目录下创建 strings.xml 文件,用于存放默认的字符串资源。例如: ```xml <resources> <string name="hello_world">Hello, World!</string> </resources> ``` 2. 创建其他语言的资源文件 在项目的 res 目录下创建对应语言的子目录,并在其中创建对应的 strings.xml 文件。例如,创建 res/values-en 目录,并在其中创建 strings.xml 文件,用于存放英文的字符串资源。例如: ```xml <resources> <string name="hello_world">Hello, World!</string> </resources> ``` 3. 在代码中动态加载资源 在代码中可以通过调用系统 API 获取当前设备的语言信息,并根据不同的语言加载对应的资源。例如: ```java String lang = Locale.getDefault().getLanguage(); // 获取当前设备的语言信息 Resources res = getResources(); int resId = res.getIdentifier("hello_world", "string", getPackageName()); // 获取对应的资源 ID String helloWorld = res.getString(resId); // 获取对应的字符串资源 ``` 通过上述代码,即可根据当前设备的语言信息动态加载对应的资源文件。如果当前设备的语言为英文,则加载 res/values-en/strings.xml 文件中的字符串资源;如果当前设备的语言为中文,则加载 res/values-zh/strings.xml 文件中的字符串资源,以此类推。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

认真的小尹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值