导航:首页 > 操作系统 > 安卓应用如何实现国际化

安卓应用如何实现国际化

发布时间:2023-01-23 17:47:05

android app开发中工具类怎么国际化

工具类国际化的话,就要将里面的文字在values加上不同的国家代号.string.xml这样的形式,当别的国家使用就会去加载对应的文字

Ⅱ iOS App国际化

app有时需要同时支持多种语言,国际化分为应用名国际化和app内容国际化两部分,接下来以中英两种语言来介绍一下如何实现app国际化

一.应用名称国际化

1.首先创建一个项目,然后执行以下操作

选择语言后会有以下弹窗, 若项目中用到storyBoard并且里面的文字也需要国际化,此处要如下图勾选,然后店家Finish即可

2.创建一个Strings文件,命名为 InfoPlist.strings(此处名字不可以更改)

3.选中该文件

接下来,把所需要的语言都选中,如下图:

选中后InfoPlist.strings文件下面会出现两个文件,分别是英文和中文,如下图:

4.在两个文件中,分别写入app的英文名和中文名,key-value方式。key 为CFBundleDisplayName

运行程序后,app名称就会根据系统的语言来显示中英文

二.内容国际化

1.内容国际化和app名称国际化一样,只是创建Strings文件的时候把名字改为Localizable.strings (此名字不许随意更改)

2.把文字同样以key-value的形式分别加入到Strings文件中

注意:这两个文件里面的key要保持一致

先导入Foundation,然后通过 NSLocalizedString 函数找到key对应的value, 这样就可以实现语言根据系统语言来切换了

三.storyBoard和xib国际化

1.xib

选择语言后,会自动形成一个key

这样就可以实现语言切换

2.storyBorad和xib操作相同

Ⅲ 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则可,经过测试是完全正常的。

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

Ⅳ Android如何实现国际化

只要在 res 文件夹下新建对应语言的 values 文件夹就好了, 如,英语环境下的,文件夹命名为:values-en 美国英文环境:values-en-rUS 中文环境为:values-zh 大陆地区中文环境: 在 eclipse 下新建 Android 项目时,会在 res 目录下自动创建一个默认语言环境的文件夹 : values 当某一个资源没有在语言环境的对应的资源集合中找到时,就会使用 values 下的资源。 若某一个语言环境没有在项目中定义语言环境,那么也会使用 values 下的资源。 图片国际化同理。 在 res 下新建 drawable-zh 文件夹,存放中文环境下的图片 新建 drawable-en 作为英语环境下的图片 在 eclipse 下新建 Android 项目时,会在 res 目录下自动创建三个默认语言环境的文件夹: drawable-hdpi drawable-ldpi drawable-mdpi 分别用于存放高、中。低分辨率的图片。Android 系统会根据手机的分辨率,而自动从不同的对应的某一个文件夹下去加载图片。 同样,它们也可以国际化,命名规则如: drawable-zh-hdpi drawable-en-ldpi drawable-en-rUS-mdpi 使用,在 XML 中需要使用到图片的地方用表达式: @drawable/icon 代码中使用:R.drawable.icon。因为图片资源同样也会在 R 文件中生成一个索引

Ⅳ Android 国际化适配总结

只需要创建对应的values-xxx文件夹,再里面创建string文件,这是最基本的适配国际化。

这也是比较细节的地方,首页在设计布局的时候一定要有一种思维,去思考如果以后你这个布局要做国际化,方不方便扩展和优美的展示, 因为国外的语言比如英文,基本都会比中文长,如果你写布局的时候基本都写死宽高为多少dp,那就很难做适配
如果翻译出来的结果实在太长,也可以使用一些技巧,例如使用中文的近义词再翻译,总之,你要站在老外的角度去看,你就会发现有些中文表现成其它语言的时候,可以换个简短的词。比如说你有个账号密码输入提示框,有提示“请输入您要设置的密码”,那你是不是可以翻译成“passwork” (可能这个例子举的不是很好,但是大概就是能做一个转变的意思)

文字拼接翻译的时候,一般如果做翻译语序会混乱。比如说 “您已登陆了10天,总共亏损了6666元”。这种情况下最直接的方式是用String.format。
但是也会存在无法使用String.format的情况,我举一个极端的例子,假如这个 10 和 6666 两个数字的样式和其它文字的样式不同,比其他文字大啊,颜色不同之类的,甚至可能是图片。这样就不好用String.format,但我们也不能蠢到对 “您已登陆了”,“天,总共亏损了”,“元”这3段单独做翻译然后拼起来,这样语序就不对的。
其实这种情况也简单,做个思维的转变,我们需要根据变量去做分割,这里变量就是 10 和 6666 ,能把整段话分割成3段(翻译还是全部一起翻译,只是做国际化拆段做)。
我们就可以在string文件中定义

拼接就 result = getString(R.string.xxx_paragraph_1) + 10 + getString(R.string.xxx_paragraph_2) + 6666 + getString(R.string.xxx_paragraph_3)
英文就是(我用机翻,英语不太好)

结论就是先整体翻译再根据变量去拆,而不是先拆再翻。

后台返回的东西也要做国际化,如果是使用了第三方的东西,就要考虑别人有没有提供,别人没提供的话就只能自己写一个逻辑的adapter来做个简单的适配。如果不方向,可以把第三方返回的数据传给自己的后台,由我们的后台做翻译,就相当于多做了一步请求,但是方便修改。

这也是我做海外翻译觉得最痛的点,比如说某些地方用了成语或者歇后语之类的,“新年你的运势是:虎虎生威”。这虎虎生威怎么翻译,这是比较蛋疼的一个点。

其它资源我们也可以像文字一样做适配,在values-xxx文件夹下创建相应的资源。
举几个我比较常用的做法:
(1)图片,如果有些图片存在中文,可以在这个文件夹下放一张名字一模一样的图片。缺点就是多占内存嘛,所以正确的做法是开发这种需求的时候尽可能图文分离,分离不了就放两张。
(2)尺寸,上面我说了有些翻译后的内容普遍比中文长,处理想办法改文字长度的方法外,我们还可以设多套长度,在使用的时候引用资源,这样不同语音展示出来的长度就不同。我觉得这个还是比较常用的。

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

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

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

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

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

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

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

具体操作参考  Android应用程序内部切换语言及自定义语言

Ⅶ android的程序怎么使资源文件随着系统语言来进行语言改变,也就是实现android代码的国际化。

这个很简单,在res目录下,新建对应语言的values文件夹
中文 : values-zh
中文简体: values-zh-CN
英文 : values-en
英文(美式) : values-en-rUS

系统提供的values是默认语言环境,当象上面一样提供了其它语言环境时,以提供的语言环境优先。

Ⅷ 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多语言设置的一些小小的总结,可能有理解不周的情况,欢迎给我留言指出😄

Ⅸ 全栈项目开发3:应用国际化和权限处理

对于现在的APP应用,国际化需求并不高,但是作为一项有用的功能,我们还是按部就班地去实现它,由于还未完成全局状态管理和全局事件总线,暂时使用了一个全局变量Locale去定义,因此要完成切换就需要手动修改变量值后重启应用(热更新是不可以的),目前仅实现简体中文和美式英文两种语言

1.引入国际化需要的包。

2.在Flutter节点下添加generate,可以在重启或者热更新时实时更新翻译文件。

3.在根目录下增加l10n.yaml文件,用于配置实时更新的内容。

4.在根Widget的MaterialApp中增加如下配置,大多都是来自第三步自动更新的内容,如果编译器不能自动识别,可以手动引入如下包:import 'package:flutter_gen/gen_l10n/app_localizations.dart'

5.编译翻译文件,在lib/I10n的目录下新增app_zh.arb和app_en.arb两个文件(如果要具体到国家代码可以新建为app_zh_CN.arb和app_en_US.arb),文件采用Json的语法,Vscode等编辑器也有对应的语法插件,至于翻译语法,大家可以自行了解,限于篇幅,仅做常用的展示。

注:app表示变量名,后续可以使用AppLocalizations.of(context)!.app调用,语言切换时就会按照对应的翻译文件进行展示。

@app表示对app变量的描述,是给翻译人员看的,与代码运行无关。

模板语句,有时候需要实现类似“倒计时20秒”只有数字变化的语句,此时就形成了模板插值语句,在模板上插入数字,上述hit6即实现了这样一个语法,最终会被翻译为一个函数,读者可自行尝试。

关于iOS平台

尝试过国际化的读者可能发现在iOS平台无法顺利完成切换(上述全局变量方式和使用全局状态管理的实现方式有本质区别,注意区分),这是因为iOS应用程序有一套自建的语言环境管理机制,所以使用上面的方式适配国际化对于iOS应用程序是无效的,为了让iOS应用程序也能支持国际化,还需要在原生iOS工程中进行额外的配置。 使用Xcode打开Flutter项目的iOS原生工程,切换到工程面板,然后在Localization选项配置中添加中文支持即可。

在Android/ios平台权限处理是绕不开的内容,本应用作为demo应用,会尽可能地多索要权限,但是设计为仅在用户安装后第一次打开时索取一次,后续不再主动索取,仅在用户需要使用相关功能时引导用户给予权限即可。权限管理的实现相对简单,可以引用permission_handler包,并加入以下代码,在APP启动时调用一次requestAllPermission函数即可。

下章内容 : 主题切换,欢迎页,引导页,

小破站同名,同步文章且定时直播编程,有兴趣可以移步

Ⅹ 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开启时,需要再次切换语言配置。

阅读全文

与安卓应用如何实现国际化相关的资料

热点内容
安卓手机mp3压缩工具 浏览:214
程序员和交易员 浏览:422
怎么变字体样式app 浏览:173
名字叫汤什么的视频app 浏览:209
金属加密键盘联系电话 浏览:335
自制解压牛奶盒子教程 浏览:64
编译高手的图片 浏览:922
单片机数码管显示时分秒 浏览:780
手指解压最简单的方法 浏览:345
韩国邮箱服务器地址 浏览:967
android版本介绍 浏览:410
pdf文件加密软件 浏览:410
长沙住房app怎么看备案 浏览:603
安装加密软件的电脑会被监控么 浏览:221
java微博源码 浏览:569
堆排序简单实现python 浏览:461
单片机引脚与键盘的关系 浏览:132
压缩火柴盒制作 浏览:38
谷歌地图android偏移 浏览:214
bitlocker硬盘加密空间 浏览:238