本地化与相机中显示英文

 工程PROJECT -> info ->Localizations 添加相应的国际化语言 

本地化,选择工程添加语言->自定义创建string本地化文件 -> 点击右侧的loca...即可

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

问题是:生成的strings文件中定义格式有问题,正确的定义格式:

"name" = "11111";

定义字符串前面没有@符号,但是末尾都要有;符号。

一.当你发现相机中显示英文,可以通过它设置 添加一项“Localized resources can be mixed”,值设置为“yes”即可!在InfoPlist文件中

 
  1. NSLocalizedString(key, comment),在代码中使用NSLocalizedString(key, comment)来读取本地化字符串,key是Localizable.strings文件中等号左边的字符串,comment纯粹是注释

    如:NSString *tip = NSLocalizedString(@"Tip", nil);

    NSString *ok = NSLocalizedString(@"Ok", nil);

    注意:如果你的字符串资源文件名不是Localizable.strings,如mj.strings,那么你就得使用NSLocalizedStringFromTable()来读取本地化字符串:

    1. NSLocalizedStringFromTable(@"Tip", @"mj", nil);

    2.如果使用NSLocalizedStringFromTable(key, tbl, comment)来获取字符串,资源文件会以tbl参数作为文件名,比如

    1. NSString *tip = NSLocalizedStringFromTable(@"Tip", @"mj", @"dialog title");
    2. NSString *ok = NSLocalizedStringFromTable(@"Ok", @"mj", @"dialog button");
  2. 创建的方法
 
    http://www.cnblogs.com/lyanet/archive/2012/12/03/2800257.html 本地化创建过程
 
添加一项“Localized resources can be mixed”,值设置为“yes”即可!

最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享!

多语言在应用程序中一般有两种做法:
一、程序中提供给用户自己选择的机会;
二、根据当前用户当前移动设备的语言自动将我们的app切换对应语言。

第一种做法比较简单完全靠自己的发挥了,这里主要讲第二种做法,主要分一下几点:

1.本地化应用程序名称
2.本地化字符串
3.本地化图片
4.本地化其他文件

1.本地化应用程序名称

(1)点击“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到“String File”的图标。创建这个文件,命名为“InfoPlist”(一定是这个文件名) 就生成一个InfoPlist.strings文件;

(2)选中InfoPlist.strings 点击 XCode-> View-> Utilities -> File Inspector,在Localization中点“+”,添加chinese (zh-Hans)类型的为简体中文,english 应该会自动添加上。然后在InfoPlish.strings 左边会多出一个三角形,点击展开后可以看到InfoPlish.strings(english)和InfoPlish.strings(chinese)两个版本的文件;

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

 
  1. CFBundleDisplayName ="Program";

其中“Program”为英文应用程序名称,同理在InfoPlish.strings(chinese)文件中加入:

 
  1. CFBundleDisplayName ="应用程序";

其中“应用程序”为中文名称,注意:CFBundleDisplayName加不加双引号都行

(4)编辑Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为YES即可

 2.本地化字符串

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

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

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

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

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

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

 
  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()来读取本地化字符串:

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

 3.本地化图片

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

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

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

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

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

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

 
  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”。

4.本地化其他文件

本地化其他文件和本地化图片第二种方法类似,先在Localization中添加语言,然后把对应版本拷贝到en.lproj和zh-Hans.lproj文件夹中,最后引用就行了。

5.添加本地化遇到的错误
 
 如添加的本地化文件为kerrorManager.strings,之后报这样的错,Read faild: the Data Couldn,t be read because it isn,t in the correct format (读取失败,因为它不是正确的格式),是你添加内容时没有加;(封号)所致,如"123" = "你好"  后面没有;号

iOS本地化的更多相关文章

  1. [IOS]本地化

    我们在IOS开发应用中,会碰到做好的一个应用,如何趋向国际化,也就是说支持多种语言?下面我就来简单演示一下,用一个Demo来实现中文和英文的实现. 实现步骤: 1.本地化项目中xib的view 1.在 ...

  2. IOS本地化应用

    BK项目已完成7788,在项目的后期需要被翻译成多国语言版.为了适应全球多个国家使用多个存储. 应用本地化是分别对字符串.图片和 xib 或 storyboard 文件本地化,而传统的做法是对 xib ...

  3. IOS本地化。

    1,项目名本地化 点击项目,蓝色图标->info 最下面+号,添加chinese本地化. Supporting Files->infoPlist.strings 下会有两个文件,有一个是设 ...

  4. iOS 本地化应用程序(NSLocalizedString)

    App本地化的需要不用讲大家也都明白,本文将介绍一种简单的方法来实现字符串的本地化. 在不考虑本地化的情况下,我们如果在代码中给一个Button定义title,一般会这样写: btn.titleLab ...

  5. iOS本地化应用程序

    因为使用的是xcode4,应用程序本地化的问题跟以前的版本还是有些不同,在网上找了些资料对于xcode4以上的版本资料还是相对较少,有些最后要通过手动创建文件,这样操作实在是太麻烦,所以经过一个下午的 ...

  6. ios本地化多语言支持

    右键 -> new file -> resources -> strings file 一定要命名为: Localizable.strings 点击这个文件 -> xocde ...

  7. Xcode5和6上新建工程如何本地化启动页面

    建议阅读本篇文章前先具备iOS本地化的基本知识,Google中搜索“iOS本地化”,有成片的教程~~ 最近有个app需要支持英语.简体中文.繁体中文,由于启动页面上有文字,所以也不得不做下本地化处理. ...

  8. Xcode4.5 本地化,多语言设置

    网上已有很多关于ios本地化的博客和资料,由于部分原作者使用的Xcode版本较早,4.5以后的版本已不再支持该方法,后来也没有更新,因此在此写一点学习资料分享出来.废话不多说.     ios本地化主 ...

  9. 最全的iOS数据存储方法

    目的 项目准备运用的Core Data进行本地数据存储,本来打算只写一下Core Data的,不过既然说到了数据存储,干脆来个数据存储基础大总结!本文将对以下几个模块进行叙述. 沙盒 Plist Pr ...

随机推荐

  1. iOS 三方库fmdb 的使用

    使用fmdb 做本地数据的存储非常方便, 1. github 上搜索fmdb 下载压缩包 导入到工程中 (如果你的mac 有cocoapod 也可以直接通过cocoapod 添加) 2. 以下代码是通 ...

  2. UISlider相关

    设置slider当前位置的图像 [slider setThumbImage:[UIImage imageNamed:@"dd.png"] forState:UIControlSta ...

  3. ReactiveCocoa学习总结

    最近一直断断续续学习关于ReactiveCocoa的知识内容,对于它的一些基础内容将通过本文进行一个总结,主要是一些入门知识 一:RACSignal一些运用 @interface RACSignalT ...

  4. 从技术经理的角度算一算,如何可以多快好省的做个app

    [导读]前端时间,一篇“从产品经理的角度算一算,做个app需要多少钱”的文章在网上疯传,可见大家对互联网创业的热情!这次,从一名技术经理的角度再给大家分析一下,如何使用跨平台开发技术为你节省上百万的开 ...

  5. H5一二事

    先回顾一下WEB技术的几个阶段 Web 1.0 内容为主,主要流行HTML和CSS Web 2.0 动态网页,流行AJAX/JavaScript/DOM H5 时代,WEB开发回归富客户端 那么H5肯 ...

  6. oom_kill_process造成数据库挂起并出现found dead shared server

    这篇博客是上一篇博客Oracle shutdown immediate遭遇ORA-24324 ORA-24323 ORA-01089的延伸(数据库挂起hang时,才去重启的),其实这是我们海外一工厂的 ...

  7. SQL Server 2014新特性——Buffer Pool扩展

    Buffer Pool扩展 Buffer Pool扩展是buffer pool 和非易失的SSD硬盘做连接.以SSD硬盘的特点来提高随机读性能. 缓冲池扩展优点 SQL Server读以随机读为主,S ...

  8. javascript-简单工厂两种实现方式

    简单工厂笔记 两种方式: 第一种:通过实例化对象创建 第二种:通过创建一个新对象然后包装增强其属性和功能来实现 差异性:前一种通过类创建的 对象,如果这些类继承同一个父类,他们父类原型上的方法是可以共 ...

  9. 创建一个三角形类,成员变量三边,方法求周长,创建类主类A来测试它

    package com.hanqi.test; public class sanjiaoxing { private double a; private double b; private doubl ...

  10. 按要求编写Java应用程序。 编写一个名为Test的主类,类中只有一个主方法; 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一 个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

    int[]x=new int [50]; char[][]y=new char[10][10]; int j=1,w=0; for(int i=0;i<50;i++) { x[i]=j; j+= ...