iOS 本地化应用程序汇总 国际化

 最近要做一个应用要实现本地化,因为使用的是xcode4,应用程序本地化的问题跟以前的版本还是有些不同,在网上找了些资料对于xcode4以上的版本资料还是相对较少,有些最后要通过手动创建文件,这样操作实在是太麻烦,所以经过一个下午的研究,总算是成功了一点点,还是庆幸一下。先给出结果。

英语:                                                                    中文:



              

                       

具体实现如下:

静态本地化 : 加载的文件,如xib文件,图像文件,还有实现应用程序名本地化

动态本地化: 显示的字符串本地化

 

一。先做准备:设置程序本地化

在xcode点击程序图标:点击Info选项->Localizationn,点击“+”,选择要添加的语言,简体中文选择Chinese(zh-Hans)

你会在你工程目录下发现多了个文件夹,“zh-Hans.lproj",x-code使用.lproj作为其本地化文件夹的扩展名。


 

二。设置xib文件本地化, 图像本地化的方法是一样道理的,可以根据用户的显示语言加载不同的xib文件

操作:点击xib文件,在IB窗口中选择选项选择“File Inspecter",也就是第一个选项,选择“Localization->"+"选择添加的语言,

效果如下,原来的xib文件就会出现三角形,其下有两个文件,因为我的为storyboard,但效果是一样的。就可以实现将其本地化了,非常简单吧

 


 

三。设置应用程序名本地化,

      设置应用程序名存储在应用程序的Info.plist文件中,我们例子实际上为Localize-Info.plist,选择文件,并不需要对文件进行本地化,而是使"Info.strings"本地化就可以了,在Localize.Info.plist,空白处右键,选择Show Raw Keys/Values,就会看到应用程序名实际为CFBundleDisplayName,我们只需要在对应的 Info.plist中添加以下代码就可以了

英文版:

C代码  收藏代码
  1. CFBundleDisplayName = "Localization";  

 中文版:

C代码  收藏代码
  1. CFBundleDisplayName = "本地化";  



 效果图:


 

 

四、加载的字符串本地化,

      原理:在代码中将加入的字符串加入NSLocalizeString宏中,启动程序时,系统将根据语言加载相应的文件得到其对应的字符串文件,这个字符串可以通过系统将NSLocalizedString中的宏生成名为“Localizable.strings”的文件,当然你可以自己去创建这个文件,然后手动是添加对应的字符串。,

C代码  收藏代码
  1. labelName.text = NSLocalizedString(@"Name", @"The name is ");  
  2. labelPassword.text  = NSLocalizedString(@"Password:",@"The password is");  

 NSlocalizeString 第一个参数是内容,第二个参数将会转化为字符串文件里的注释。

转化方法如下 :先关闭项目,打开终端,进入到项目的目录,输入genStrings 文件名.m就可以将该文件中的宏转化为相应的字符串文件,


效果如下:会看到生成"Localizable.strings",

打开文件,就可以交给翻译人员去翻译了


 

 

 

 

===================

1、本地化字符串,网上那些方法我就不说了,我只更正一点:如果你的Classes下面有子文件夹会报错,使用下面的命令:

find . -name \*.m | xargs genstrings -o /Users/apple/(你目标的文件夹)

2、本地化软件的名字:

(1)在info.plist文件里做如下设置:

 (2)创建一个InfoPlist.strings文件,里面写如下内容:

"CFBundleDisplayName"="你软件的名称";

"CFBundleName"="你软件的名称";

(3)本地化这个文件即可。

3、本地化资源,不必细说了,网上资料很多,这里我只说下我的疑惑:图片资源貌似只能用zh-Hans。

4、本地化icon,目前不支持,所以不要费劲的去本地化icon了。

5、商店的本地化,也不必细说了,很简单,按照苹果需要的填就可以了。

====================

 

 

 

应用genstrings和NSLocalizedString实现App文本的本地化


Admin
2012年3月20日

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.lproj
mkdir en.lproj

 

  3. 生成Localizable.strings文件

 


genstrings -o zh-Hans.lproj *.m
genstrings -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,然后加到工程中。 

 

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

转载于:https://www.cnblogs.com/rywx/archive/2013/01/22/2872308.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260075.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图卷积神经网络_深度层次化图卷积神经网络

来源&#xff1a;IJCAI 2019论文地址&#xff1a;https://arxiv.org/abs/1902.06667代码地址&#xff1a;https://github.com/CRIPAC-DIG/H-GCNIntroduction1、问题定义&#xff1a;什么是半监督的节点分类&#xff1f;图1 半监督节点分类如图1所示&#xff0c;在标记数据量很少…

计算机二级怎么测试c语言,全国计算机等级测试二级C语言视频教程(完整版).doc...

第一章 程序设计的基本概念01-01.程序设计的基本概念(1)01-02.程序设计的基本概念(2)01-03.程序设计的基本概念(3)第二章 C语言基础知识02-01.简单C语言的构成和格式(1)02-02.简单C语言的构成和格式(2)02-03.标识符的组成和分类02-04.整型数据和实型数据(1)02-05.整型数据和实型…

去掉Phoca Download的Powered By

进入components/com_phocadownload/views/ 这是Phoca Download的模板文件夹 打开category/tmpl/default.php 分类页 //echo </div><div class"pd-cb"> </div> . $this->tmpl[phoca_download];echo </div> ; 打开file/tmpl/default.php …

如何居中div

div居中 博客分类&#xff1a;笔记csshtmldiv CSS中怎么让div居中 CSS 如何使div层水平居中今天用CSS遇到个的问题,div本身没有定义自己居中的属性, 网上很多的方法都是介绍用上级的text-align: center然后嵌套一层div来解决问题. 可是事实上这样的方法科学吗? 经过网络搜索…

c语言小数加分,求救:c语言课程设计 员工工资管理程序 有加分的。谢谢

#define SIZE 50/* 定义结构体 */struct date{int month;int day;int year;};typedef struct employee{char name[50] ,num[10],sex,edu[10],duty[15];int age,income;struct employee *next;}empl[SIZE];/* 逐项输出链表中的内容 */void view (struct employee* head){struct …

老师能提供什么帮助

老师能提供什么帮助&#xff1f; 这篇本来想上周写的&#xff0c;原计划在感恩节推送&#xff0c;可惜太忙&#xff0c;计划赶不上变化。 时隔十年&#xff0c;我又要给计算机系的同学们上课了&#xff0c;心里还是有些小激动的。我下学期要开一门大课叫程序设计与数据结构,涵盖…

(转)SystemProcessesAndThreadsInformation

http://hi.baidu.com/hanjdud8606/item/7a970408a95acc843d42e27f NTSTATUS NTAPI ZwQuerySystemInformation(ULONG SystemInformationClass,PVOID SystemInformation,ULONG SystemInformationLength,PULONG ReturnLength ); 第一个参数是一个枚举类型&#xff0c;传入的是你需…

12个Icon图标资源网站

1.除了Icon以外&#xff0c;还有很多不错的UI设计素材。 地址&#xff1a;http://worldui.com/2.除了免费Icon资源下载以外&#xff0c;还提供Icon定制的付费服务。地址&#xff1a;http://dryicons.com/3.很喜欢这个icon资源站的展示方式。地址&#xff1a;http://www.icotrip…

python列表split_Python-split()函数实例用法讲解

在Python中&#xff0c;split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串&#xff0c;这些子串会被保存到列表中(不包含分隔符)&#xff0c;作为方法的返回值反馈回来。split函数用法split(sepNone, maxsplit-1)参数sep – 分隔符&#xff0c;默认为所有的空字…

go语言基础 -- 闭包

什么是闭包 闭包的概念&#xff0c;在很多语言中都有&#xff0c;比如python&#xff0c;这里要介绍的go&#xff0c;闭包就是函数与其相关的环境组合的一个整体。 我们通过一个例子来理解闭包&#xff1a; func Addfunc() func (x int) int {var n int 0// 返回的是一个函数…

linux中解决SSH连接慢问题

2019独角兽企业重金招聘Python工程师标准>>> 现在连接linux服务器一般都是使用SSH远程连接的方式。最近新装了一台服务器&#xff0c;发现telnet时速度很快&#xff0c;ping时一切也正常&#xff0c;但SSH连接的时候却很慢。经过网上资料查询&#xff0c;大致是有以…

利用Theme自定义Activity进入退出动画

有没有觉得Activity的默认动画太快了或者太难看了。。我原来使用Activity.overridePendingTransition来自定义Activity的进入动画&#xff0c;却发现没法定义退出的动画。结果就发现了强大的Theme和Style&#xff0c;之后还需要好好研究一下。具体是这样子的&#xff1a;在Andr…

阿里云深圳数据中心正式开放

阿里云深圳数据中心正式开放 ​ 8月29日&#xff0c;阿里云深圳数据中心正式开放运营&#xff0c;这是继杭州、青岛、北京、香港之后&#xff0c;我们在全球开放的第五个数据中心。 深圳数据中心主要辐射以深圳、广州为中心的华南区域&#xff0c;以满足这一区域内的商贸企业、…

vue 文件及描述信息一起上传_用Vue实现一个大文件上传和断点续传

前言这段时间面试官都挺忙的&#xff0c;频频出现在博客文章标题&#xff0c;虽然我不是特别想蹭热度&#xff0c;但是实在想不到好的标题了-。-&#xff0c;蹭蹭就蹭蹭 :)事实上我在面试的时候确实被问到了这个问题&#xff0c;而且是一道在线 coding 的编程题&#xff0c;当时…

c语言函数声明定义参数命名,C语言函数声明与定义

C语言函数声明与定义教程在C语言函数声明与定义语法type funcName(paramType1 param1, paramType2 param2){// 执行语句...return val}参数参数描述type函数的返回值类型&#xff0c;如果没有任何返回值&#xff0c;则写 void&#xff0c;不可以死省略不写。funcName函数名。pa…

gcc g++ Linux下动态库_静态库

关于Unix静态库和动态库的分析 基本概念 库有动态与静态两种&#xff0c;动态通常用.so为后缀&#xff0c;静态用.a为后缀。 例如&#xff1a;libhello.so libhello.a 为了在同一系统中使用不同版本的库&#xff0c;可以在库文件名后加上版本号为后缀,例如&#xff1a; libhell…

SNF开发平台WinForm之五-高级查询使用说明-SNF快速开发平台3.3-Spring.Net.Framework

5.1运行效果&#xff1a; 5.2开发实现&#xff1a; 1、按上面效果来说&#xff0c;先来看一下在程序当中如果调用。第一步在页面拖拽一个按钮为“高级查询”&#xff0c;事件上写下如下代码&#xff1a; 如果是单表查询的话&#xff0c;只需要传GridView就行&#xff0c;如果是…

【转】PowerDesigner表结构和字段大小写转换

【转自】http://blog.csdn.net/xysh1991/article/details/8016192 使用方法&#xff1a;进入PowerDesigner&#xff0c;打开一个PDM&#xff0c;在菜单栏找到&#xff1a;Tools – Excute Commands – Edit/Run Script&#xff0c;或者直接按CtrlShiftX调出脚本执行窗口&#x…

新唐c语言怎么计算指数运算,C语言位域精解

有些信息在存储时&#xff0c;并不需要占用一个完整的字节&#xff0c; 而只需占几个或一个二进制位。例如在存放一个开关量时&#xff0c;只有0和1 两种状态&#xff0c;用一位二进位即可。为了节省存储空间&#xff0c;并使处理简便&#xff0c;&#xff23;语言又提供了一种…

华为荣耀5cvs华为v9play_华为荣耀v9play和荣耀9哪个好_华为荣耀v9play和荣耀9对比评测_飞翔教程...

华为荣耀v9play是华为最新发布的手机&#xff0c;这款手机可以说是华为荣耀v9的青春版&#xff0c;把这款手机跟华为荣耀9对比起来哪款更好呢&#xff1f;下面就为大家带来详细的华为荣耀v9play和荣耀9对比评测&#xff01;荣耀9介绍&#xff1a;6.12日下午&#xff0c;荣耀在上…