博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用genstrings和NSLocalizedString实现App文本的本地化
阅读量:4110 次
发布时间:2019-05-25

本文共 1176 字,大约阅读时间需要 3 分钟。

App本地化的需要不用讲大家也都明白,本文将介绍一种简单的方法来实现字符串的本地化。

在不考虑本地化的情况下,我们如果在代码中给一个Button定义title,一般会这样写:

btn.titleLable.text = @"Example Button";

 

也许我们已经写了很长的代码才考虑到本地化的问题,大可不必头疼,这时候,我们要做的是把代码从头扫一遍,然后把每个会显示给用户看的字符串做如下修改:

(对于内部使用的字符串就用不着本地化了)

btn.titleLable.text = NSLocalizedString(@"btn_title", nil);

NSLocalizedString是一个定义在NSBundle.h中的宏,其用途是寻找当前系统语言对应的Localizable.strings文件中的某个key的值。

第一个参数是key的名字,第二个参数是对这个“键值对”的注释,在用genstrings工具生成Localizable.strings文件时会自动加上去。

 

到目前为止,我们还没有生成Localizable.strings文件。这是一个逆向的过程,也就是先写好调用过程,再生成strings资源文件。

当我们把所有的.m文件都修发好了,就该genstrings工具出场了。

  1. 启动终端,进入工程所在目录。
  2. 新建两个目录,推荐放在资源目录下。
    目录名会作用到Localizable.strings文件对应的语言,不能写错了。这里zh-Hans指简体中文,注意不能用zh.lproj表示。

mkdir zh-Hans.lprojmkdir en.lproj

  3. 生成Localizable.strings文件

genstrings -o zh-Hans.lproj *.mgenstrings -o en.lproj *.m

  -o <文件夹>,指定生成的Localizable.strings文件放置的目录。

  *.m,扫描所有的.m文件。这里支持的文件还包括.h, .java等。

  4. 右键点击工程的Resources目录,选择“New Group”,添加两个目录zh-Hans.lproj和en.lproj。

  5. 在新建的group中添加刚刚生成的Localizable.strings文件。
  6. 最后在Localizable.strings文件中,修改每个key所对应的内容,就大功告成了。

 

说了一大堆,其实操作起来还是很简单的,总的来讲就是两条:

  1. 在代码里用NSLocalizedString获取要本地化的字符串
  2. 用genstrings扫描代码文件,生成Localizable.strings,然后加到工程中。 

最后祝大家的产品早日走向世界。

转载地址:http://msosi.baihongyu.com/

你可能感兴趣的文章
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day12 集合
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
Day_15JavaSE 异常
查看>>
异常 Java学习Day_15
查看>>
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
MySQL-分布式架构-MyCAT
查看>>