文档章节

【国际化】app中的国际化

创意总监
 创意总监
发布于 2016/08/02 13:13
字数 682
阅读 40
收藏 0
点赞 0
评论 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
博文 86
码字总数 30497
作品 0
成都
项目经理
Android 国际化语言

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

末日__ ⋅ 2016/05/13 ⋅ 0

Java国际化

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

德彪 ⋅ 2017/11/25 ⋅ 0

iOS开发之国际化

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

ziyuzhiye ⋅ 2017/12/21 ⋅ 0

iOS10 权限设置国际化语言

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

Albert_Lee ⋅ 2017/05/31 ⋅ 0

Django 国际化实例及原理分析

当 Web 服务搭建好以后,可以接收来自全球不同国家用户访问。这样就要求开发人员调整软件,使之能适用于不同的语言,即国际化和本地化。国际化 -- Internationalization,i 和 n 之间有 18 个...

红薯 ⋅ 2011/02/03 ⋅ 9

IOS 国际化 XCODE6

首先,我这里使用的时xcode6,其实,这个xcode6一些文件在5上都没有了,需要自己创建,比如InfoPlist.strings和Localizable.strings文件,这两个个文件只能定义成InfoPlist.strings和Localiz...

哥特复心 ⋅ 2015/09/06 ⋅ 0

Localization Demo

简单的支持 App 国际化(Localization)的Demo。实现比较简单,比较适合初学者快速学会 App 国际化的实现。下面的测试截图,第一张是设置设备语言是中文时的显示;第二张是设置设备语言环境是...

匿名 ⋅ 2012/09/27 ⋅ 0

移动支付海外扩张,怎么不借共享单车东风?

高铁、共享单车、网购与移动支付,被外国友人形容为中国的“新四大发明”。与四大发明一样,它们也在远渡重洋,海外传播,如高铁技术的输出与海外承建,如网购与移动支付的国际化,又如ofo的...

谢璞 ⋅ 2017/12/11 ⋅ 0

iOS应用国际化教程(2014版)

本文最初由Sean Berry撰写,由Ali Hafizji针对iOS 7进行了更新。 开发一款伟大的iOS应用程序是件了不起的事情,但是还有比优秀的代码、华丽的设计以及直观化交互更多的事要做。跻身在App Sto...

mingxun ⋅ 2014/06/04 ⋅ 2

bboss/bboss-gencode

自动代码生成工具功能说明 自动代码生成器是针对bboss框架和bboss开发平台的自动代码生成工具,可以根据模板,自动生成给定表的增、删、改、分页查询、列表查询、国际化功能对应的程序和配置...

bboss ⋅ 2016/09/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 57分钟前 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部