文档章节

【国际化】app中的国际化

创意总监
 创意总监
发布于 2016/08/02 13:13
字数 682
阅读 50
收藏 0

###iOS中的国际化

相关链接

国际化流程

是为每种语言定义一种资源,然后通过NSLocalizedString方法将相应语言的字符串加载进来即可。

如果要求,在应用内进行语言切换?怎么办

每种语言都有自己的 **语言代码.lproj**文件夹,加载资源时只需要加载相应语言文件夹下的资源就OK, 这步可以系统为我们完成,也可以手动去做。

###国际化哪些

首先点击项目->Project->Info->Localizations中添加要支持的语言。

启动国际化

注意:如果不添加国际化的语言,那么在图片和文本资源国际化的时候会没有选项

1.文本国际化

2.图片资源国际化

3.xib storyboard国际化

4.货币值国际化

5.app icon 名字国际化

    5.1 然后添加一个StringFile,命名为InfoPlist.strings。并且在文件属性里将所需要的多国语言勾上。
    5.2 添加一条新的多语言记录,CFBundleDisplayName,并对其做多语言处理。
    5.3 在targets->info里面添加一条新的记录,Application has localized display name, 并将值设为YES。
    5.4 info.plist 中添加一行 Localization native development region = china 默认 en

  《Info.plist中Bundle display name 对应值 ${PROJECT_NAME}》, ${}//Settings中的值 project name

###应用内语言切换

应用启动时,首先会读取NSUserDefaults中的key为AppleLanguages的内容,该key返回一个String数组,存储着APP支持的语言列表,
数组的第一项为APP当前默认的语言。
swift 可以这样取 (NSUserDefaults.standardUserDefaults().valueForKey(kUserLanguage) as! Array<String>)[0]

oc 这样取

NSArray *languages = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];
NSString *currentLanguage = languages.firstObject;
NSLog(@"模拟器当前语言:%@",currentLanguage);

###自动化的工具

AutoGenStrings.py 可以由python自动编译

###genstrings使用

genstrings是一个命令行工具,可以自动检测国际化相关的宏,从而生成对应的Localizable.strings文件,对应的命令很简单

find . -name *.m | xargs genstrings -o en.lproj// 1.在相对目录下建en.lproj文件夹 2.在当前目录的.m文件中写入宏

NSLocalizedString(@"KEY", nil)的后一个参数实际上就是服务于genstrings的,它的意义就是备注,使用genstrings工具可以按照第一个参数为KEY和VALUE,第二个参数为Comment来生成对应的键值对

比如NSLocalizedString(@"Hello",@"This is a comment")就能生成

/ This is a comment /

"Hello" = "Hello";

//只支持Localizable.strings 这个文件,其他名字不能国际化

###国际化调试方法

参考

点击快捷键option + shift键 点击相应的Storyboard

打开storyboard实时预览

添加实时预览

不同机型选择

选择不同机型

使用快捷键 option+shift + (storyboard的左边小按钮)

###高级使用twine

https://github.com/knight2010/twine

gem install twine

###crowdin

https://my.oschina.net/kshopping/blog/734050

crowdin 云端合作工具

© 著作权归作者所有

共有 人打赏支持
创意总监
粉丝 14
博文 87
码字总数 30533
作品 0
成都
项目经理
私信 提问
iOS 国际化 (国际化文字内容不改变,app名字国际化,一键切换语言)

首先我们要分三个步骤讲解怎么一步步实现app名字国际化、内容国际化、一键切换国际化的: 一、app设置内容或者可以说是app名字或者可以说Info.Plist中的东西国际化 app名字国际化 1、首先新建...

PeterWolf
08/09
0
0
Android 国际化语言

最近战转海外开发,所以就涉及到一些国际化的问题。 value这些我就不BB了,我说下我自己在目前做国际化语言中遇到的坑吧。 如:微信一样我们可以直接在app中动态对该App设置其语言。设置方式...

末日__
2016/05/13
43
0
Java国际化

使用java编写一个带GUI程序或者其他需要给用户传递文字信息的程序的时候,就很有可能需要用到国际化的知识,来总结一下。 所谓的国际化,就是使编写的程序可以适应不同的语言环境,比如,在中...

德彪
2017/11/25
0
0
iOS开发之国际化

前言 语言本地化,又叫做语言国际化。是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言。往往一些应用程序需要提供给多个国家的人群使用,或者一个...

ziyuzhiye
2017/12/21
0
0
iOS10 权限设置国际化语言

最近有人问我:“iOS中权限设置怎么做到国际化语言”。其实很简单,实现的方法跟App名称的国际化大同小异。下面就来简单的描述一下这个问题。 1 1.如上图所示,在info.plist文件中我们添加的...

Albert_Lee
2017/05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
3
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
6
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
7
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
5
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部