IOS应用程序多语言本地化的两种解决方案_IOS

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

多语言在应用程序中一般有两种做法:

一、程序中提供给用户自己选择的机会;

二、根据当前用户当前移动设备的语言自动将我们的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)文件中加入:

CFBundleDisplayName ="Program"; 

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

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)文件中加入:

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

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

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

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

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

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

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

 3.本地化图片

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

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

"BtnCancel"="BtnCancelEn.png"; 

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

"BtnCancel"="BtnCancelCn.png"; 

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

CCSprite *btnCancel = [CCSprite spriteWithSpriteFrameName:NSLocalizedString(@"BtnCancel", nil)];
btnCancel.position=ccp(s.width/2,s.height/2-40);
[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文件夹中,最后引用就行了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ios
, 多语言本地化
本地化语言
网站多语言解决方案、多语言解决方案、前端 多语言解决方案、教师语言问题解决方案、php 多语言解决方案,以便于您获取更多的相关知识。

时间: 2024-09-21 21:56:19

IOS应用程序多语言本地化的两种解决方案_IOS的相关文章

XP系统经常提示“应用程序正在运行”的两种解决方案

XP系统经常提示"应用程序正在运行"的两种解决方案 原因一:输入法出现问题 打开"任务管理器",就会发现每次打开IE都会多运行一个ctfmon.exe进程,当把任务栏多出来的ctfmon.exe进程删掉的时候,在打开连接还是一样会再多出来一个ctfmon.exe进程. 解决方案一: 1.打开 控制面板-区域和语言选项-语言-详细信息-高级-把兼容配置下的"将高级文字服务支持应用于所有程序"选中-重启,即可解决问题; 2.借助第三方修复工具来修复c

XP系统笔记本摄像头倒置的两种解决方案

  XP系统笔记本摄像头倒置的两种解决方案         方案一: 1.一般是驱动的问题,需要根据摄像头的硬件ID进行查找下载; 2.设备管理器; 3.图像设备--选择图像设备下的摄像头点; 4.选择图像设备下的摄像头点击右键属性--详细信息; 5.详细信息--查看VID和PID; 6.然后到华硕的官网上下载摄像头驱动; 7.进入华硕官网选择"服务支持"--"更多详情"; 8.在搜索框中输入"Camera",选择对应的操作系统.再根据摄像头的硬

XP系统提示“无法访问您要使用的功能所在的网络位置”的两种解决方案

XP系统提示"无法访问您要使用的功能所在的网络位置"的两种解决方案   方案一: 直接覆盖安装或者选择修复安装Office即可. 方案二: 1.打开注册表(打开方法:开始-运行,输入:regedi). 2.按f3搜索gaozhi.msi(ps:先备份). 3.你可以在"hkey_current_usersoftwaremicrosoftinstallerproducts762812c5feec1b428f26679f2dfae7c"键值中找到相应的东东. 4.先备份

WinXp桌面快捷方式图标变成蓝色的两种解决方案

  WinXp桌面快捷方式图标变成蓝色的两种解决方案         方案一: 1.在桌面上单击右键,点击"属性"; 2.点击"桌面"选卡,点击下面的[自定义]按钮; 3.点击"Web"选卡,在"网页"框中将所有网址勾选,然后点击"删除",在弹出的提示框总点击"是" ,点击确定--确定; 方案二: 1.在"我的电脑"上单击右键,选择"属性" ; 2

上网异常:出现黄色感叹号不能上网的两种解决方案

  我们常常用电脑时会遇到黄色感叹号不能上网的情况,为此不知道怎么办,以下我为大家介绍两种解决方案. 工具/原料 电脑 方法/步骤 第一步:上网异常,常常在右下角出现黄色感叹号,我们直接右击它,如图所示 第二步,右击黄色感叹号时,会出现打开网络和共享中心,然后选择点击它,如图所示 第三步:点击进去后会看到有个红色X的,点击那里,如图所示 第四步:点击红色X后会进到以下这个正在检测页面,系统会自动帮你修复,然后黄色感叹号就给修复好了,如图所示如果不行,请试第二个方法 方法/步骤2 第一步:点击右下

IOS开发:应用程序多语言本地化解决方案

  多语言在应用程序中一般有两种做法: 一.程序中提供给用户自己选择的机会; 二.根据当前用户当前移动设备的语言自动将我们的app切换对应语言. 第一种做法比较简单完全靠自己的发挥了,这里主要讲第二种做法,主要分一下几点: 1.本地化应用程序名称 2.本地化字符串 3.本地化图片 4.本地化其他文件 1.本地化应用程序名称 (1)点击"new file"然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到"String File"的图标.创建这个文件,

win8程序出现停止工作的两种修复方法

  运行时死机是指我们在使用windows操作系统的过程中出现的死机情况,也就是说在windows操作平台下运行一些应用程序而无缘无故的出现死机现象.这种现象一些是应用程序与操作系统之间存在冲突,一些是应用程序本身就有bug等等,今天小编介绍的关于Win8突然停止工作,这与电脑死机现象很相似,但却不如死机现象这么严重,所以大家就和小编一起学习Win8突然停止工作的解决方法吧. Win8停止工作时修复的方法如下: 分以下两种情况: 1.如果Windows 8能够启动,选择Metro控制面板应用程序

【ANDROID游戏开发之十】(优化处理)详细剖析ANDROID TRACEVIEW效率检视工具,分析程序运行速度!并讲解两种创建SDCARD方式!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/316.html ----------------------- 『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块:请点击下面联系进入阅读:

IOS实现圆形图片效果的两种方法_IOS

先来看看效果图 ↓ 这个显示效果的做法有很多: 方法一: 使用两张图片, 作为边框的背景图片和中间的图片,然后使用imageView的cornerRadius来做圆, 具体代码如下: backImageView.layer.cornerRadius = backImageView.frame.size.width / 2; backImageView.layer.masksToBounds = YES; frontImageView.layer.cornerRadius = frontImage