① android-添加新的语言支持(比如繁体)
这几天突然要发一个中国台湾版本,做法比较硬:复制一个工程,改包名,改图标,芹旁改api接口。语言全部都是繁体就行:
Android studio添加新语言资源文件(res/values/....)如下:
然后回车即可:
把对应的字符串翻译成繁体就行。至于翻译,有一些工竖兆具可以借鉴。同时网上也有很多多语言切换的方式,就是一个工程,一个app进行内部切换多语言支持的方式(像微信就是。不过微信繁体有些不一定都支持了...)嫌纤橡。具体看情况啦。。。
因为我们是整个app就是中国台湾台北版本,所以就都是繁体,不管系统是简体还是繁体还是别的,就是繁体!!!
简单记录下。好多东西没怎么关注或者使用,至于是否要深入,可能要看情况....
参考o: android--实现多语言支持 - snow_flower - 博客园
② 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则可,经过测试是完全正常的。
以下则是多语言操作的工具类,现在提供出来,需要的朋友可以自行进行改造。
③ 安卓手机如何添加多国语言
添加方法是有的,网上可以找到很多。不过很麻烦,以下以添加波斯语为例给你简单的说下:
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来解决吧!
④ 有什么安卓系统的输入法可以直接输入多种语言
触宝输入法,我一直在没升用。几十种外语,切换比较方便,你可以试一试。
早上好
Good morning
おはようございます
Buenas días
语言设置界面:
在Settings>>Languages中把想要的语言包下载后,只要按下面那个按钮就可以灵活切换语言,很方便。长时间不用某种语言时可以先将其去除,等到使用时再勾选上即可。
我喜欢学外语,经常需要输入好几种外语,这个余凯输入法是我目前知道的安卓系统上输入多种外语用起来最方便的,希望我的回答能帮到大家😀
更新:
触宝公司已经倒枯毁老闭了,词库也不更新了,我现在改用gboard,输入流畅度比触宝差点,但是习惯了感觉也不错,关键是人家有谷歌这样的大公司维护,语种多词库新。而且我还惊喜地发现gboard里面有我一直苦苦寻找的国际音标输入法,让我对它的好感度顿时增加不少。
⑤ android开发中怎么设置多语言版本
android多语言实现必须是将strings.xml放在不同的文件夹目录下,由安卓系统自动去加载文字资源。
1.Android 中要实现国际化比较简单,字符串国际化:只要在 res 文件夹下新建对应语言的 values 文件夹就好了。
例如:
英语环境下的,文件夹命名为:values-en
美国英文环境:values-en-rUS
中文环境为:values-zh
大陆地区中文环境:values-zh-cn
2.eclipse 下新建 Android 项目时,会在 res 目录下自动创建一个默认语言环境的文件夹 : values 。
3.当某一个资源没有在语言环境的对应的资源集合中找到时,就会使用 values 下的资源。若某一个语言环境没有在项目中定义语言环境,那么也会使用 values 下的资源。
⑥ Android如何实现多语言支持
无非是 把文字写在strings.xml文件里咯,拿中英说吧,
中文(简体):values-zh-rCN
中文(台湾):values-zh-rTW
中文(香港):values-zh-rHK
英文(美国):values-en-rUS
英文(英国):values-en-rGB
可以参考这里android多语言支持
还有一点细节需要处理的是控件的大小,英文单词或词组长度肯定是和中文不一样的,比如Button的背景、宽高等,注意用wrap_content,最好加上 minWidth, minHeight, 或者代码判断系统语言,然后代码控制控件的宽高
⑦ Android 内多语言切换实现
网上有很多安卓内多语言切换的文章,我也看了一些,很多都千篇一律,而且还是有问题,我就自己重新改了一下。整好分享给各位同学,废话不多说,我们正式开始
我们在点击切换语言的按钮时候弹窗dialog 然后用户可以选择 简体中文 英文 繁体中文 跟随系统 四种选项 ,这是我们基本的需求
首先我们要在资源文件res目录下面创建多语言的目录文件夹 values values-en values-zh-rTW values-TW 如图所示:
我们适配多语言的只需要在 values values-en values-zh-rTW 这个三个目录下面的string.xml文件里面写入对应的引用的文本即可
我们只需要这样配置就然后在布局的xml文件里面引用可以达到适配多语言的效果 :
具体引用:
切换的dialog实现这个我用原生的AlertDialog 你们自己可以自定义继承系统的Dialog来实现
这里的语言种类获取到的sta是重SharedPreferences 缓存里面获取到的因为需要
SharedPreferences 工具类:
我们在dialog点击事件里发送一个广播通知 用来触发刷新
然我们在baseActivity里面接收广播重启activity 来刷新多语言切换
关于Locale
实现多语言切换用到了Locale。Locale里很多常见国家和地区以及语言,如果我们做常见的语言,可以直接调用系统的,比如Locale.CHINESE。但是这次做的繁体中文的适配,略我坑一下。
繁体中文我们直接在Locale 属性里面传入 zh-rTW 但是切换没有生效 我翻了下源码只有TW的属性配置我就要修改了
问题是,我最开始直接这样写的:
到此我们说明下开头提到到为什么多出了 values-TW目录 是因为我发现在多语言切换更新 Configuration 中的 locale 属性 的时候翻开源码看到繁体中文(泛指港澳台并没有看到zh-rTW的属性配置)
所以目前的解决方案就是用values-TW来替代:
我这边目前是这样处理来兼容繁体中文切换不生效的做法 ,如果你有更好的方案 麻烦留言大家一起探讨。
Android 内多语言的切换网上的文章也挺多的,基本都千篇一律 很多有纰漏 ,这边也是翻了一下源码勉强能够兼容繁体中文, 项目地址
⑧ 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多语言设置的一些小小的总结,可能有理解不周的情况,欢迎给我留言指出😄
⑨ 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开启时,需要再次切换语言配置。