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文件夹中,最后引用就行了。

时间: 2024-11-03 02:08:08

IOS开发:应用程序多语言本地化解决方案的相关文章

iOS开发基础之C语言_IOS

为何学习iOS开发要先学C语言呢,学习c语言对ios开发有何作用. 现在越来越多的iOS开发兴趣爱好者投入到了iOS培训中,有的是已经在职的员工,有的是还在就读的学生,还有一些是完全零基础的同学,那么对于他们来说就要一切从基础开始学,首先从C语言学起. 因为C语言是一门语言基础,因具备简洁.灵活等特点而被广泛应用,在多种开发环境中都起着重要作用.那么,为什么学习iOS开发要先学C语言呢? 因为在iOS开发中,会经常使用C语言和汇编的,而汇编语言相对而言要生涩繁琐些,C语言因此便成为程序员的首选.

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

最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享! 多语言在应用程序中一般有两种做法: 一.程序中提供给用户自己选择的机会: 二.根据当前用户当前移动设备的语言自动将我们的app切换对应语言. 第一种做法比较简单完全靠自己的发挥了,这里主要讲第二种做法,主要分一下几点: 本地化应用程序名称 本地化字符串 本地化图片 本地化其他文件 1.本地化应用程序名称 (1)点击"new file"然后在弹出窗口左侧选择iOS的resource项,在

ios开发愤怒的小鸟的Lua语言:Wax框架详解

2011年6月的编程语言排行榜Lua语言一军突起,一举进入前十名.这与一年前苹果决定在iOS系统上使用Lua语言密不可分.但是,你了解如何用Lua语言在iOS上开发应用吗?将向各位介绍Lua语言的iOS应用开发框架--Wax,其中在iOS平台上无比火爆的<愤怒的小鸟>就是由Lua语言用Wax开发的.全文共分两部分,第一部分将带您深入探讨Wax具有的一些好处,同时演示把Lua与Xcode 4和iOS软件开发工具包(SDK)集成起来必不可少的实际步骤.第二部分将逐步介绍如何用Wax构建一个简单的应

IOS开发之路--C语言数组和字符串_IOS

概览 数组在C语言中有着特殊的地位,它有很多特性,例如它的存储是连续的,数组的名称就是数组的地址等.而在C语言中是没有String类型的,那么如果要表示一个字符串,就必须使用字符串数组.今天主要就介绍如下三个方面: 一维数组 多维数组 字符串 一维数组 一维数组操作比较简单,但是需要注意,数组长度必须是固定的,长度不能使用变量进行初始化:如果声明的同时进行赋值则数组长度可以省略,编译器会自动计算数组长度:同时数组不能先声明再一次性赋值(当然可以对每个元素一一赋值). #include <stdi

IOS开发之路--C语言基础知识_IOS

概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift 这么看下去还有大量的内容需要持续补充,但是今天我们从最基础的C语言开始,C语言部分我将分成几个章节去说,今天我们简单看一下C的一些基础知识,更高级的内容我将放到后面的文章中. 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述): Hello World 运行过程 数据类型 运算符 常用

iOS开发:Web应用简单本地化

 目前大多数的企业级IOS应用还是以报表和公文审批为主,而且应用的发展趋势必将是朝Web方向发展的,虽然Native App有着无法比拟的灵活性. 如何将IOS上的一个Web页面本地化呢? 1.编写一个Native App,然后内嵌WebBroswer 2.直接用浏览器打开应用,然后将其"添加至到主屏",这样下次就不需要输入网址了 显而易见,方法2是最灵活,最简便的方法.通过这个方式我们可以扩展,将一个众多应用入口集成到一个页面里面,然后对这个页面统一创建一个桌面入口. 通过Web的方

IOS开发之路--C语言预处理_IOS

概述 大家都知道一个C程序的运行包括编译和链接两个阶段,其实在编译之前预处理器首先要进行预处理操作,将处理完产生的一个新的源文件进行编译.由于预处理指令是在编译之前就进行了,因此很多时候它要比在程序运行时进行操作效率高.在C语言中包括三类预处理指令,今天将一一介绍: 宏定义 条件编译 文件包含 宏定义 对于程序中经常用到的一些常量或者简短的函数我们通常使用宏定义来处理,这样做的好处是对于程序中所有的配置我们可以统一在宏定义中进行管理,而且由于宏定义是在程序编译之前进行替换相比定义成全局变量或函数

IOS开发之路--C语言存储方式和作用域_IOS

概述 基本上每种语言都要讨论这个话题,C语言也不例外,因为只有你完全了解每个变量或函数存储方式.作用范围和销毁时间才可能正确的使用这门语言.今天将着重介绍C语言中变量作用范围.存储方式.生命周期.作用域和可访问性. 变量作用范围 存储方式 可访问性 变量作用范围 在C语言中变量从作用范围包括全局变量和局部变量.全局变量在定义之后所有的函数中均可以使用,只要前面的代码修改了,那么后面的代码中再使用就是修改后的值:局部变量的作用范围一般在一个函数内部(通常在一对大括号{}内),外面的程序无法访问它,

IOS开发之路--C语言指针_IOS

概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 什么是指针 数组和指针 函数指针 什么是指针 存放变量地址的变量我们称之为"指针变量",简单的说变量p中存储的是变量a的地址,那么p就可以称为是指针变量,或者说p指向a.当我们访问a变量的时候其实是程序先根据a取得a对应的地址,再到这个地址对应的存储空间中拿到a的值,这种方式我们称之为"直接