当前位置:首页 » 安卓系统 » android多国语言

android多国语言

发布时间: 2023-08-30 08:56:30

A. 安卓手机如何添加多国语言

添加方法是有的,网上可以找到很多。不过很麻烦,以下以添加波斯语为例给你简单的说下:

1、在sdkDemo.mk 中添加语言和国家的国际化的缩写代码,如伊朗:IR表示,波斯语用fa表示,这是国际化的标准,不可以随便写的。如果不知道国家与地区的缩写,可以去网上找找。
PRODUCT_LOCALES:= fa_IR en_US zh_CN en_GB fr_FR it_IT es_ES ……..
sdkDemo.mk的路径为:gingerbread\device\rockchip\sdkDemo\sdkDemo.mk.
2、在framework/base/data/font目录下添加波斯语的字库,如DroidSansArabic.ttf
3、字库加完后,就要去调用字库了,调用字库的文件是在external/skia/src/ports/SKFontHost-android.app下,
static constFontInitRec gSystemFonts[] = {
{ "DroidSans.ttf", gSansNames },
………
{
"DroidSansArabic.ttf",
gFBNames },
4、字库准备好了,还有一些makefile需要修改了。在external/icu4c/studata/ Android.mk下:
config := $(word1, \
$(if $(findstringar,$(PRODUCT_LOCALES)),large) \

$(if
$(findstring fa,$(PRODUCT_LOCALES)),large) \
5、 在frameworks/base/core/res/res/下新增加一个values-fa-rIR的文件夹,并新建一个strings.xml文件。
6、上面五步加完后,在settingsàLanguage&keyboardàSelect language列表下就会出现波斯语这个选项了,但是选了波斯语后,并没有出现波斯语文字。这时就需要在相应的APP下的res/下新建values-fa-rIR的文件夹,并翻译strings.xml文件即可。如主app的strings.xml路径为:gingerbread\packages\apps\Desktop2D_mbx_new\res\values-fa-rIR\strings.xml

最后,以上所有内容都加好后,一定要记得:
Make clean
Make prebuild
Make

建议你还是刷新ROM来解决吧!

B. Android国际化之多语言(配置及应用内设置)✈️

Android系统通过判断当前系统的Local配置,来使用对应的strings.xml文件

values-->strings.xml 默认语言(简体中文)

values-zh-rHK-->strings.xml 繁体中文

values-en-->strings.xml 英语

在Android系统中,系统的配置大都通过 Configuration 来管理,包括strings等等。

onCreate() 中注册

onDestroy() 中取消注册

setLanguage() 方法

通过上面的设置,可以实现不重启APP修改语言的效果

以上只是对Android多语言设置的一些小小的总结,可能有理解不周的情况,欢迎给我留言指出😄

C. Android国际化多语言切换

关于App国际化,之前有讲到国际化资源、字符换、布局相关,想要了解的猛戳 用力抱一下APP国际化 。借着本次重构多语言想跟大家聊一下多语言切换,多语言切换对于一款国际化App来讲是重中之重,并非难事,但是若要做好也是一件不容易的事情。

当我们做了系统的配置更改,比如说切换了系统导航或者说更改了深色模郑山式,那么我们一般的处理是也是要对Application作出处理。

如果项目中有用到ApplicationContext去getString(@StringRes int id)实现加载的提示语,那么如果只是单纯的重启界面则无法让当前的提示语跟随当前切换的语言,所以我们要么重启整个应用,要么对ApplicationContext中的Local也作出相应的更新方可,这里有一点问题,虽然Android N之后updateConfiguration是过时方法,官方给出使用createConfigurationContext代替,但是更新ApplicationContext的Local发现无效使用老版本updateConfiguration正常。

如果你发现你的应用广播通知栏适配无效,那就是context中的Local在切换语言是并未及时更新Local,这里调试一下便知,如果是Applicaiton注册的广播,那么喊高中多半情况下是没有更新ApplicationContext的Local所导致的。

多语言适配基本步骤大概就是如此了,下面看一下适配的细节问题。

[图片上传失败...(image-b42d06-1640685147639)]
还有一点Android N之后,手机系统的语言配置选项已经不是单选了,改为一个列表了,具体可以参考手机设置中的语言和输入法,所以 setLocal(@Nullable Locale loc) 方法建议不要再使用了,我相信很多人还在用,正确念谨的用法应该是 setLocals(@Nullable LocaleList locales) ,需要传递一个集合。

当你的应用使用的是androidx.appcompat:appcompat:1.2.0及以上时,BaseActivity中需要实现下面方法。

这套方案目前不在推荐,直接去替换attatchBaseContext()中的context则可,经过测试是完全正常的。

以下则是多语言操作的工具类,现在提供出来,需要的朋友可以自行进行改造。

D. Android:应用多语言切换,国际化实现

生成多种语言的string.xml,里面放置对应的语言,修改配置(Configuration),重启之后就会加载对应语言的string.xml。

1:在res目录下,生成对应的语言包,比如英语:

在res目录下生成了可看到生成了:

<string name="hello">你好</string>
英语:
<string name="hello">hello</string>
之后就可以使用getResource.getString(R.string.hello),这个字符串会加载相对应的配置的语言。
3:修改语言配置

修改语言配置后,需要重新启动进程,并且杀死进程。

1:有些手机是可以在设置里直接切换语言的,这个也就是Configuration改变。用户重新设置系统语言导致应用的语言也会重新设置。Configuration改变,如果在Manifest中不设置android:configChanges忽略掉配置改变,Activity会重新创建,那么我们就可以在Activity的onCreate中,重新修改语言配置。
2:切换语言后,退出应用,重新进来,你会发现又是系统设置的语言。所以需要在Application开启时,需要再次切换语言配置。

E. Android的国际化语言适配(系统语言适配+APP内部适配)

Android国际化语言适配分为两种

1.更改手机系统语言后,APP的语言也会跟着变化

2.只改变自己APP的语言,不受手机系统语言的影响,不影响其他APP的语言,可以参考微信的切换语言的效果。

只需要创建不同语言的values即可

具体操作参考  简单的Android客户端国际化(语言适配)方案

操作的时候要注意: 当选择所要切换的语言后,则进行修改Config以及重启APP,一定要将选择的语言保存到SP中,且在activity中的oncreate中将SP中存储的语言取出来重新设置Config,否则当重启APP后,还是会跟系统语言一样。 

具体操作参考  Android应脊敬明用稿轿程序内部切换语樱告言及自定义语言

F. Android中的多国语言是怎么实现的

虽然Android 从 2.3 开始已经支持50种以上的语言,但是不是每种语言都有字体可以显示。遇到一个新需求,
有客户要求对 hindi 语言的支持。于是上 网找了一些资料,发现网上介绍的大部分是如何替换默认字体,就
是替换./frameworks/base/data/fonts /DroidSansFallback.ttf,但是替换完之后,中文就无法正常显示。其实
只要有下面几个步骤,就可以实现新曾加一种语言的显示支持:
1. 需要有可以显示 hindi 语言的字体,我在网上下载了一个:DroidHindi.ttf
2. 需要修改的地方主要有
1) 将下载的字体文件拷贝到:./frameworks/base/data/fonts/
2) 修改./frameworks/base/data/fonts/Android.mk,将 DroidHindi.ttf 添加到 _from:

3) Hindi 的语言代码是 hi_IN,修改./device/qcom/common/common.mk,将 hindi 的语言代码加进去,
这样在你的设置->语言和键盘->选择语言里面就可以看见 hindi 语言了:

4) 修改./external/skia/src/ports/SkFontHost_android.cpp,将 DroidHindi.ttf 加进去。网上 介绍的很多
方法都没有提到这一步,如果没有这一步的话,添加的语言是不生效的,显示的是乱码,因为 android 无法
找到 hindi 语言可以显示的字体, 还是会选择默认字体去显示。修改的地方为:

5) 去./build/target/proct/full.mk 看看系统选择的是哪个语言列表,我的是:
$(call inherit-proct, build/target/proct/languages_small.mk)
那我就去修改./build/target/proct/languages_small.mk,若这里显示的是 languages_full.mk,那么
就修改./build/target/proct/languages_full.mk 文件,修改如下:
PRODUCT_LOCALES := en_US en_GB fr_FR hi_IN it_IT de_DE es_ES
6)在 external/icu4c/studata 下的 Android.mk 下添加
$(if $(findingstringhi,$(PRODUCT_LOCALS)),large)\
3. 剩下的就是重新编译一下,然后 flash 到手机或模拟器上就可以了。

G. Android-添加新的语言支持(比如繁体)

这几天突然要发一个中国台湾版本,做法比较硬:复制一个工程,改包名,改图标,改api接口。语言全部都是繁体就行:

Android studio添加新语言资源文件(res/values/....)如下:

然后回车即可:

把对应的字符串翻译成繁体就行。至于翻译,有一些工具可以借鉴。同时网上也有很多多语言切换的方式,就是一个工程,一个app进行内部切换多语言支持的方式(像微信就是。不过微信繁体有些不一定都支持了...)。具体看情况啦。。。

因为我们是整个app就是中国台湾台北版本,所以就都是繁体,不管系统是简体还是繁体还是别的,就是繁体!!!

简单记录下。好多东西没怎么关注或者使用,至于是否要深入,可能要看情况....

参考o: android--实现多语言支持 - snow_flower - 博客园

热点内容
项目编译啥意思 发布:2025-02-02 00:25:13 浏览:221
逐鹿中原怎样做挂机脚本 发布:2025-02-02 00:23:39 浏览:26
安卓系统跟踪在哪里 发布:2025-02-02 00:23:38 浏览:896
安卓uc浏览器怎么安装油猴 发布:2025-02-02 00:23:38 浏览:298
中商情报网数据库 发布:2025-02-02 00:09:26 浏览:532
python获取目录下所有文件名 发布:2025-02-01 23:47:54 浏览:896
生物安全柜配置哪些药品 发布:2025-02-01 23:37:19 浏览:424
光遇安卓画质为什么没有ios好 发布:2025-02-01 23:33:33 浏览:845
免费网店系统源码 发布:2025-02-01 23:24:05 浏览:311
压缩不原图 发布:2025-02-01 23:23:30 浏览:926