ios 多语言支持

xcode4中添加多国语言支持已经与前期的版本方式不太相同,这里进行简要的介绍。

一,在你的工程中找到Supporting Files,在其上右键,找到如下 所示的蓝色高亮项,单击。

注意,你已经看到了我生成的多个语言支持文件,你在没有添加以前这里是没有的!!!!。

二,如下,选择ios目录下的资源文件,找到string文件选择。

三,将新建的文件命名为Localizable,这个是一定的,不能命名为其他的名称。这里要注意。完成后打开inspector,选中Localizable.strings,你可以看到如下所示的界面。

四,找到localization,点击左下角的+号按钮如下:添加你想要的语言支持。


五,最终生成的语言文件如下:

此时你将在你的工程文件下面找到如下所示的文件目录:每一个文件目录中都有对应的语言文件支持。现在需要做的就是在这些对应的文件中添加字符串支持。最终在要设置字符串的代码中调用NSLocalizedString(@"String2",nil);方法进行字符串的显示,一切搞写。

范例如下: Localizable.strings (English)

"DemoTitle"="This is English Version";
"String1"="Apple";
"String2"="BAnana";
"String3"="Orange";
"String4"="Watermelon";
"String5"="Strawberry";

Localizable.strings (zh_CN)
"DemoTitle"="這是中文的版本";
"String1"="苹果";
"String2"="香蕉";
"String3"="橘子";
"String4"="西瓜";
"String5"="草莓";
代码:
MultiLanguageDemoViewController.h

#import <UIKit/UIKit.h>

@interface MultiLanguageDemoViewController : UIViewController {
        IBOutlet UILabel *lbldemotitle;
        IBOutlet UILabel *lblstr1;
        IBOutlet UILabel *lblstr2;
        IBOutlet UILabel *lblstr3;
        IBOutlet UILabel *lblstr4;
        IBOutlet UILabel *lblstr5;
}

@property (nonatomic,retain) UILabel *lbldemotitle;
@property (nonatomic,retain) UILabel *lblstr1;
@property (nonatomic,retain) UILabel *lblstr2;
@property (nonatomic,retain) UILabel *lblstr3;
@property (nonatomic,retain) UILabel *lblstr4;
@property (nonatomic,retain) UILabel *lblstr5;

@end
MultiLanguageDemoViewController.m
#import "MultiLanguageDemoViewController.h"

@implementation MultiLanguageDemoViewController

@synthesize lbldemotitle,lblstr1,lblstr2,lblstr3,lblstr4,lblstr5;

- (void)viewDidLoad {
    [super viewDidLoad];
        
        //系统设定取得多国语言字符串
        lbldemotitle.text=NSLocalizedString(@"DemoTitle",nil);
        lblstr1.text= NSLocalizedString(@"String1",nil);
        lblstr2.text=NSLocalizedString(@"String2",nil);
        lblstr3.text=NSLocalizedString(@"String3",nil);
        lblstr4.text=NSLocalizedString(@"String4",nil);
        lblstr5.text=NSLocalizedString(@"String5",nil);        
}

2. XIB文件国际化

在需要国际化的XIB文件上get info 添加多语言版本,
修改各语言版本相应的界面文字及图片。
模拟器测试记得要在模拟器上恢复原厂设置,Xcode也要clean一下,否则可能出错。

国际码查询:http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm

3. 程序名称国际化
新建一个InfoPlist.strings文件
然后国际化它,get info。。
在下面生成的语言文件里写上CFBundleDisplayName="中文名";
然后编辑Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为选中状态。

在程序中使用字符串的地方可以调用NSLocalizedString来取出对应语言的字符串

如果你的strings文件不是标准的Localizable.strings,假设叫my.strings 则可以用
  
NSLocalizedStringFromTable (@"button",@"my", nil);来取得字符串

时间: 2024-11-06 15:45:18

ios 多语言支持的相关文章

iOS 多语言支持,应用程序国际化 xcode4.5

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

我在写多语言支持时用到的东西

我在写多语言支持时用到的东西 絮叨絮叨:好久不来写了,竟然支持markdown 了. 我也是在项目里的wiki 里干刚接触了一些, 来这里也试试.然后悲催的发现,mac 电脑在markdown下直接上传图片有bug @2015-08-19 20:28:13.一会试一下链接版的吧. 我们的37度手环一不小心要卖到国外去了,自然要支持多国家多语言啦. 等卖到阿拉伯世界的时候,我会再补充RTL(Right To Left)相关的内容. 本文仅涉及安卓(Android)客户端的实现, 服务器后台的部分没

IOS开发语言Swift入门连载---属性

IOS开发语言Swift入门连载-属性 属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性可以用于类.结构体和枚举里,存储属性只能用于类和结构体. 存储属性和计算属性通常用于特定类型的实例,但是,属性也可以直接用于类型本身,这种属性称为类型属性. 另外,还可以定义属性监视器来监控属性值的变化,以此来触发一个自定义的操作.属性监视器可以添加到自己写的存储属性上,也可以添加到从父类继承的属性上. 存储属性 简单来说,一个存储属性就是

IOS开发语言Swift入门连载---闭包

IOS开发语言Swift入门连载-闭包 闭包是自包含的函数代码块,可以在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 lambdas 函数比较相似. 闭包可以捕获和存储其所在上下文中任意常量和变量的引用. 这就是所谓的闭合并包裹着这些常量和变量,俗称闭包.Swift 会为您管理在捕获过程中涉及到的所有内存操作. 注意: 如果您不熟悉捕获(capturing)这个概念也不用担心,您可以在 值捕获 章节对其进行详细了

IOS开发语言Swift入门连载---枚举

IOS开发语言Swift入门连载-枚举 枚举定义了一个通用类型的一组相关的值,使你可以在你的代码中以一个安全的方式来使用这些值. 如果你熟悉 C 语言,你就会知道,在 C 语言中枚举指定相关名称为一组整型值.Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值.如果一个值(被认为是"原始"值)被提供给每个枚举成员,则该值可以是一个字符串,一个字符,或是一个整型值或浮点值. 此外,枚举成员可以指定任何类型的相关值存储到枚举成员值中,就像其他语言中的联合体(unions)和变体(v

IOS开发语言Swift入门连载---嵌套类型

IOS开发语言Swift入门连载-嵌套类型 枚举类型常被用于实现特定类或结构体的功能.也能够在有多种变量类型的环境中,方便地定义通用类或结构体来使用,为了实现这种功能,Swift允许你定义嵌套类型,可以在枚举类型.类和结构体中定义支持嵌套的类型. 要在一个类型中嵌套另一个类型,将需要嵌套的类型的定义写在被嵌套类型的区域{}内,而且可以根据需要定义多级嵌套. 嵌套类型实例 下面这个例子定义了一个结构体BlackjackCard (二十一点),用来模拟BlackjackCard 中的扑克牌点数.Bl

iOS多语言备选机制

近期伊书突然接到一些外国用户的投诉,说伊书界面变成了中文,但他们系统语言不是中文,是法文俄文日文等,伊书只支持中文跟英文,在不支持系统所用语言的时候,理应会自动选用英文,不知为什么会选成了中文,经过艰难困苦的重重排查,终于找到原因,知道了iOS多语言备选的规则. 主要有两个影响因素,一是CFBundleDevelopmentRegion(Info.plist的一个字段),二是iOS8新增的系统首选语言列表: iOS8 语言与地区 在iOS7及之前版本,系统只能设置一种语言,如果APP不支持系统设

IOS开发语言Swift入门连载---方法

IOS开发语言Swift入门连载-方法 方法是与某些特定类型相关联的函数.类.结构体.枚举都可以定义实例方法:实例方法为给定类型的实例封装了具体的任务与功能.类.结构体.枚举也可以定义类型方法:类型方法与类型本身相关联.类型方法与 Objective-C 中的类方法(class methods)相似. 结构体和枚举能够定义方法是 Swift 与 C/Objective-C 的主要区别之一.在 Objective-C 中,类是唯一能定义方法的类型.但在 Swift 中,你不仅能选择是否要定义一个类

IOS开发语言Swift入门连载---协议

IOS开发语言Swift入门连载-协议 协议(Protocol) 协议(Protocol)用于定义完成某项任务或功能所必须的方法和属性,协议实际上并不提供这些功能或任务的具体实现(Implementation) –而只用来描述这些实现应该是什么样的.类,结构体,枚举通过提供协议所要求的方法,属性的具体实现来采用(adopt) 协议.任意能够满足协议要求的类型被称为协议的遵循者. 协议可以要求其遵循者提供特定的实例属性,实例方法,类方法,操作符或下标脚本等. 协议的语法 协议 的定义方式与类,结构