原文:http://blog.csdn.net/dragoncheng/article/details/6703311

xcode5.0.2下国际化图文解说

        分类:             iphone              2013-12-06 17:57     1278人阅读     评论(0)     收藏     举报    

之前从来没有做个国际化的东西,最近项目紧急通知:要最快的速度做出一个英文的版本(客户在国外等着用)。晕。

网上看过的资料很多都是我这个版本以下。有些地方都不一致。特写这文章给自己留着。

根据网上的资料,国际化主要分三个模块:

1.icon模块。主要是桌面图标下的文字变化。

2.程序内文字的变化。

3.程序内图片的变化。

1.icon模块

先说说icon模块在xcode5.0.2上处理。

正如网上说的样,要建立中文版本和英文版本的InfoPlist.strings文件。 这个就直接上图。

选择工程菜单,

点击红色框后如下图

这里要选中Project,而不是Targets

按步骤先点击Info菜单, 下拉到最后,看到Localizations。 点击+号。

点击Finish按钮 就完成了中文的生成。

出现上图中红色框的两个文件。这个就是和网上不同的地方。其他的就一样了。

在InfoPlish.strings(english)文件中加入:

CFBundleDisplayName ="Program";

同理在InfoPlish.strings(chinese)文件中加入:

CFBundleDisplayName ="应用程序";

在TestLocationTests-Info.plist文件中的

Bundle display name = CFBundleDisplayName 完成了中英文的icon模块的国际化。

2.程序内文字的变化

类似“本地化应用程序名称”第一步,点击“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到“String File”的图标。创建这个文件,命名为“Localizable”(一定是这个文件名否则后面调用会有一些区别)就生成一个Localizable.strings文件;

(2)类似“本地化应用程序名称”第二第三步,在Localizable.strings(english)文件中加入:

[cpp] view plaincopy

 
  1. "welcome"="Click on the screen to continue...";

同理在Localizable.strings(chinese)文件中加入:

[cpp] view plaincopy

 
  1. "welcome"="点击屏幕继续...";

(3)在代码中使用NSLocalizedString(<#key#>, <#comment#>)来读取本地化字符串,代码如下:

[cpp] view plaincopy

 
  1. CCLabelTTF *label = [CCLabelTTF labelWithString:NSLocalizedString(@"welcome", nil) fontName:@"Marker Felt" fontSize:18];
  2. CGSize size = [[CCDirector sharedDirector] winSize];
  3. label.position =  ccp( size.width /2 , size.height/2+30 );
  4. [self addChild: label];

注意:如果你的strings文件名字不是Localizable而是自定义的话,如wang.strings,那么你就得使用NSLocalizedStringFromTable()来读取本地化字符串:

[cpp] view plaincopy

 
  1. NSLocalizedStringFromTable(@"welcome",@"wang", nil)

3.程序内图片的变化。

这里又分两种方法,第一种和本地化字符串方法类似,把中英文图片的名字分别存到中英文对应的strings文件,然后通过NSLocalizedString)来获取图片名称,如:

Localizable.strings(english)文件中加入:

[cpp] view plaincopy

 
  1. "BtnCancel"="BtnCancelEn.png";

Localizable.strings(chinese)文件中加入:

[cpp] view plaincopy

 
  1. "BtnCancel"="BtnCancelCn.png";

然后在代码中使用NSLocalizedString)来获取图片名称:

[cpp] view plaincopy

 
  1. CCSprite *btnCancel = [CCSprite spriteWithSpriteFrameName:NSLocalizedString(@"BtnCancel", nil)];
  2. btnCancel.position=ccp(s.width/2,s.height/2-40);
  3. [self addChild:btnCancel z:2 tag:104];

第二种就比较正规化了:点中你要本地化的图片,如“icon.png”,然后XCode-> View-> Utilities -> File Inspector,在Localization中点“+”添加chinese (zh-Hans);在图片左边就会出现一个倒三角,点开就会出现(english)和(chinese)的2张图,并且在项目文件夹中会出现en.lproj文件和zh-Hans.lproj文件;en.lproj文件存放的是英文版图片,zh-Hans.lproj存放的是中文版图片,中英文图片名字一样,我们在文件夹中直接替换图片就可以了,最后使用时直接使用正常名字就行了,如:“icon.png”

最后收集一些资料;

1. 取得 iPhone 支持的所有语言设置

NSUserDefaults *defaults = [ NSUserDefaults standardUserDefaults ];

NSArray *languages = [defaults objectForKey : @"AppleLanguages" ];

NSLog ( @"%@" , languages);

2.获取当前使用的语言版本,并比较

NSString *currentLanguage = [[NSLocalepreferredLanguages] objectAtIndex:0];

if([currentLanguage isEqualToString:@"en"]) {

// English

}

这里也感谢http://blog.csdn.net/wangqiuyun/article/details/7875442,有他的一部分内容。

(转)xcode5.0.2下国际化图文解说的更多相关文章

  1. Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 具体图文解说

    版权声明:本博客全部文章均为原创.欢迎交流.欢迎转载:转载请勿篡改内容,而且注明出处,谢谢! https://blog.csdn.net/waldmer/article/details/3272500 ...

  2. 图文解说:Nginx+tomcat配置集群负载均衡

    图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用  作者:niumd Blog:http://ari.iteye ...

  3. 硬盘安装CentOS 6.0(超级详细图文教程)

    硬盘安装CentOS 6.0(超级详细图文教程) 来源:   引言: 电脑系统是Windows XP,电脑没有光驱.手头没有U盘.没有移动硬盘.电脑主板不支持U盘启动,在这种情况下想安装CentOS ...

  4. MySQL 8.0.20 安装教程图文详解(windows 64位)

    MySQL 8.0.20 安装教程图文详解(windows 64位)  更新时间:2020年05月09日 15:09:04   转载 作者:瘦肉粥不加糖     这篇文章主要介绍了MySQL 8.0. ...

  5. MySQL8.0.20安装教程图文详解,MySQL8.0.20安装教程winodws10

    MySQL8.0.20安装教程图文详解,非常详细 一:mysql官网下载 https://dev.mysql.com/downloads/file/?id=494993 不用注册,直接下载就好 二:解 ...

  6. 【原】xcode5.0升级5.1遇到的clang: error: unknown argument: '-fobj-arc'错误

    XCODE5.0升到XCODE5.1后LLVM也从5.0升到5.1,工程报下面的错误了: clang: error: unknown argument: '-fobj-arc' [-Wunused-c ...

  7. Xcode5.0使用iOS6.1SDK及模拟器

    最近项目中,介于测试人员提出的问题,有些情况只在ios6的设备上才能显现,而本机的xcode已升级到最新的5.0,这可如何是好呢,在网上搜索了一番,找到如下方法解决此问题: 1.打开xcode5.0的 ...

  8. Linux 0.11下信号量的实现和应用

    Linux 011下信号量的实现和应用 生产者-消费者问题 实现信号量 信号量的代码实现 关于sem_wait和sem_post sem_wait和sem_post函数的代码实现 信号量的完整代码 实 ...

  9. 在ubuntu10.0.4下更新git

    今天想到要在ubuntu10.0.4下下载android的源码学习一下.源码下载用到了git.以前安装过git以为应该没什么问题的,没想到报了 “fatal: git 1.7.2 or later r ...

随机推荐

  1. sessionStorage

    for(i=0;i<tkt.length;i++){ if(tkt[i].redEnvelopeType==1){ full1+="<div class='pic_01' id= ...

  2. linux笔记:权限管理命令chmod,chown,chgrp,umask

    权限对文件和目录的含义是不同的:对文件来说:读:可以查看文件内容写:可以修改文件内容执行:可以执行文件对目录来说:读:可以列出目录中的内容写:可以在目录中创建.删除文件执行:可以进入目录 能够更改文件 ...

  3. noip2016酱油记day1

    真的是noip2016酱油记了. t1模拟,应该可以过. t2用了个简单的桶瞎搞,估计剩50pt了. t3直接不会写. 心好累... 考的分数肯定没去年高. 但不论如何,明天正常发挥就好. 正常发挥下 ...

  4. Web网页性能管理详解

    你遇到过性能很差的网页吗? 这种网页响应非常缓慢,占用大量的 CPU 和内存,浏览起来常常有卡顿,页面的动画效果也不流畅. 你会有什么反应?我猜想,大多数用户会关闭这个页面,改为访问其他网站.作为一个 ...

  5. 《javascript高级程序设计》第六章 Object Creation VS Inheritance

    6.1 理解对象 6.1.1 属性类型 6.1.2 定义多个属性 6.1.3 读取属性的特性6.2 创建对象 6.2.1 工厂模式 6.2.2 构造函数模式 6.2.3 原型模式 6.2.4 组合使用 ...

  6. BeautifulSoup 常用方法

    #输出所得标签的‘’属性值 获取 head里面的第一个meta的content值 soup.head.meta['content'] 获取第一个span的内容 soup.span.string 获取第 ...

  7. poj----(1470)Closest Common Ancestors(LCA)

    Closest Common Ancestors Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 15446   Accept ...

  8. 初学java之try-catch-finally语句的实例

    /* try - catch语句的例子,模拟向货船上装载集装箱 ,如果货船超重,那么货船认为这是一个异常,将拒绝装载集装箱, 但无论是否发生异常,货船都需要正点起航. */ package st; c ...

  9. Mybatis 实用

    1.<delete id="removeZtreeS" parameterType="String"> DELETE FROM sys_fun WH ...

  10. tab切换-自动、点击、内容变换

    <div class="tab">                    <ul class="pics">               ...