iOS国际化和genstrings所有子目录本地化字符串

  最近在忙着一个国外项目,天天加班,没时间更新博客。就简单讲讲国际化的知识。  

  首先,我们使用字符串,必须用NSLocalizedString(key,comment),这样我们在不同的Localizable.strings对key指定不同的值,系统会根据当前系统语言,去不同的lproj找不同的字符串。用个图显示吧:

我们应用只支持中文,英文,所以只建了zh-Hans.lproj和en.lproj,然后在Localizable.strings指定了不同的值。举例如下:

这样程序就能根据系统语言,去选择“登录”还是“Log In”。

  但是如果每次加了一个本地化字符串,就得手动去Localizable.strings添加对应的key,那就太麻烦了,幸好苹果提供了快捷生成本地化key的命令。下面以en.lproj的生成为例:

  首先,我们进入程序工程所在的目录,用命令建立en.lproj

  mkdir en.lproj  

  然后我们遍历所有的子目录文件,去生成Localizable.strings,命令如下:

  find ./ -name *.m -print0 | xargs -0 genstrings -o en.lproj

  (基本都说genstrings -o en.lproj *.m就可以生成Localizable.strings,但是这个命令只能生成当前目录的,并没有遍历子目录,所以基本没用)

  这样系统就会把子目录用到NSLocalizedString函数的key值都写到文件里。

  需要注意的是,NSLocalizedString(key,comment),用这个函数时,key不能是宏定义或者一些动态字符串,否则用上面的命令会报错。

今天重新回来做国际化,发现上面的命令是只能遍历.m文件的,但实际发现经常有字符串放在了.h文件,所以应该用如下命令去遍历整个.h和.m文件,特意来加上:

   find . \( -name ‘*.m‘ -o -name ‘*.h‘ \) -print0 | xargs -0 genstrings -o en.lproj

  最后补一句,规范化还是很必须的。假如你以前的代码都没用到NSLocalizedString,那就麻烦了。

iOS国际化和genstrings所有子目录本地化字符串

时间: 2024-08-01 10:53:00

iOS国际化和genstrings所有子目录本地化字符串的相关文章

iOS国际化和genstrings所有子文件夹本地化字符串

在最近的一个繁忙的对外工程.每天加班.没有时间更新博客.简单谈一下知识的国际化. 首先,我们使用串.必须NSLocalizedString(key,comment),所以,我们是不同的Localizable.strings对key指定不同的值,系统会依据当前系统语言.去不同的lproj找不同的字符串.用个图显示吧: 我们应用仅仅支持中文,英文,所以仅仅建了zh-Hans.lproj和en.lproj,然后在Localizable.strings指定了不同的值.举比例如以下: 这样程序就能依据系统

IOS开发之本地化--字符串表的生产

IOS开发时,本地化需要使用字符串表,mac提供了自动生成工具-genstrings.可以使用genstrings从.m文件生成字符串表. 1.在mac设备上打开终端应用程序. 2.导航到代码目录.实现这一点的最简单的方法是在终端窗口输入cd空格,然后从finder打开程序文件夹,拖拽到终端窗口,一个长路径名就会出现,回车即可.可以通过ls命令查看目录内容确认. 3.通过以下代码生产字符串表: genstrings -o Base.lproj *m -o:指明输出的文件夹 *.m:告诉genst

iOS国际化

iOS国际化的大致步骤如下: #1 在最新的Xcode中没有InfoPlist.strings & Localization.strings文件, 所以我们要自己建立这两个文件 #2 选择刚创建的Localization.strings文件, 点击右边的Localize按钮 #3 一般默认有Base和English选项, #4 选择Base, 然后在右边这个位置可以根据需要把English选上 #5 在Project中Localizations栏位添加要做国际化的语言 比如我们添加中文, 如果只

详述iOS国际化

在真正将国际化实践前,只知道通过NSLocalizedString方法将相应语言的字符串加载进来即可.但最近公司项目的新需求增加英文版本,并支持应用内无死角切换~,这才跳过各种坑实现了应用内切换语言,并记录至此. 环境 系统环境: iOS7 - iOS9 开发环境: Swift2 & Xcode7 DEMO: LocalDemo 这个Demo的功能主要是切换语言后相应的界面文字&图片以及搜索引擎都会随语言变化.我们会围绕这个DEMO进行讲解,读者可以先下载这个Demo运行看下效果再往下 i

iOS 国际化 NSLocalizedString

iOS 国际化.根据系统不同的语言自动切换. 首先.选择项目 Add new file -->iOS -->Resource -->Strings File  . 命名为Localizable.strings 打开Localizable.strings.它的格式是这样的 "KEY" = "CONTENT"; 请按这种格式来输写,比如我这里是这样定义的 "testKey" = "qingjoin_english"

iOS国际化时遇到的错误:read failed: the data couldn't be read because it isn't in the correct format.

事实上这个错误非常easy,就是当我们在国际化的时候,写key,写着写着就忘了加 ";" 所以查看一下自己的Localization文件就能够了 iOS国际化时遇到的错误:read failed: the data couldn't be read because it isn't in the correct format.

iOS国际化时遇到的错误:read failed: the data couldn't be read because it isn't in the correct format.

其实这个错误很简单,就是当我们在国际化的时候,写key,写着写着就忘了加 ";" 所以查看一下自己的Localization文件就可以了 iOS国际化时遇到的错误:read failed: the data couldn't be read because it isn't in the correct format.

iOS 国际化多语言设置 xcode7

iOS 国际化多语言设置 方式一: 1. 在storyboard中创建好UI,然后在 project 里面  Localizables 栏目里面,添加你需要的语言:默认是Englist; 比如这里我添加了 简体中文 2.添加完之后,原来的Main.storyboard 就会多了一个国际化的语言配置文件 3. 点击 Main.strings 文件,就可以在这里配置中文的语言:里面自动添加现在storyboard上面创建好的UI控件的代码,直接在这里修改即可:此时sotyboard上设计的理解为 英

Xcode6本地化字符串,应用名称

应用名称本地化: 添加 InfoPlist.strings 文件 InfoPlist.strings的inspector 打钩须要本地化的内容(不用添加CFBundleDisplayName也可以) 分别本地化这些不同语言的CFBundleDisplayName-键配置应用显示长的名字 CFBundleName-配置应用短名字用来防止名称太长出现截断 CFBundleName(CFBundleDisplayName) = "name"; NSLocalizedString 第一个参数k