IOS程序名称及内容国际化(本地化)
2014-10-20 18:55
387 查看
1、IOS程序名称国际化
1.1 新建一个Single View app模版项目,命名为Localization。
1.2 新建后,可以看到工作目录结构文件如下,单击InfoPlist.strings,查看右边的属性,在Localization栏添加语言。
1.3 添加完成后打开对应语言文件,比如English的添加
CFBundleDisplayName="China";
Chinese文件添加
CFBundleDisplayName="中国";
运行,如果此时你的模拟器是中文,你会看到你的程序名称变成了 中国:
来到设置里把语言设置成 English。此时程序名称变成了:China
这时,程序名称的国际化完成了。那里面内容呢?
2、内容国际化
2.1新建Localization.strings文件
2.2 添加语言和1.1环节一样。
2.3 添加语言内容
添加"Key"="value"; 然后使用时用NSLocalizedString(@"key", @""); 读取内容.
Localization.strings English文件添加
"key" = "english value";
Localization.strings English文件添加
"key" = "中文内容";
在ViewController.m 中添加UILabel实验一下
[objc]
view plaincopy
- (void)viewDidLoad
{
[super viewDidLoad];
UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(20, 40, 250, 60);
label.text = NSLocalizedString(@"key", @"");
[self.view addSubview:label];
}
运行
设置项里切换英文
如果你的strings文件名字不是Localizable而是自定义的话,如wang.strings,那么你就得使用NSLocalizedStringFromTable()来读取本地化字符串:
[cpp] view
plaincopy
NSLocalizedStringFromTable(@"welcome",@"wang", nil)
3、本地化图片
这里又分两种方法,第一种和本地化字符串方法类似,把中英文图片的名字分别存到中英文对应的strings文件,然后通过NSLocalizedString)来获取图片名称,如:
Localizable.strings(english)文件中加入:
[cpp] view
plaincopy
"BtnCancel"="BtnCancelEn.png";
Localizable.strings(chinese)文件中加入:
[cpp] view
plaincopy
"BtnCancel"="BtnCancelCn.png";
然后在代码中使用NSLocalizedString)来获取图片名称:
[cpp] view
plaincopy
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文件夹中,最后引用就行了。
5、如何在运行的时候判断现在运行环境是哪个语言?
5.1 获得所支持的语言
[objc]
view plaincopy
NSUserDefaults *defaults = [ NSUserDefaults standardUserDefaults ];
// 取得 iPhone 支持的所有语言设置
NSArray *languages = [defaults objectForKey : @"AppleLanguages" ];
NSLog ( @"%@" , languages);
运行,打印结果:
(
en,
"zh-Hant",
"zh-Hans",
fr,
de,
ja,
nl,
it,
es,
pt,
"pt-PT",
da,
fi,
nb,
sv,
ko,
ru,
pl,
tr,
uk,
ar,
hr,
cs,
el,
he,
ro,
sk,
th,
id,
"en-GB",
ca,
hu,
vi
)
"zh-Hant" 繁体中文
"zh-Hans", 简体中文
这段代码获取当前系统支持的语言。
5.2 获取当前使用语言
[objc]
view plaincopy
NSArray *languages = [NSLocale preferredLanguages];
NSString *currentLanguage = [languages objectAtIndex:0];
NSLog ( @"%@" , currentLanguage);
打印结果:
en
用获取到的当前语言,和支持的语言做字符串对比,就可以知道是那种语言了。
[objc]
view plaincopy
if([currentLanguage isEqualToString:@"en"])
{
NSLog(@"current Language:en");
}
1.1 新建一个Single View app模版项目,命名为Localization。
1.2 新建后,可以看到工作目录结构文件如下,单击InfoPlist.strings,查看右边的属性,在Localization栏添加语言。
1.3 添加完成后打开对应语言文件,比如English的添加
CFBundleDisplayName="China";
Chinese文件添加
CFBundleDisplayName="中国";
运行,如果此时你的模拟器是中文,你会看到你的程序名称变成了 中国:
来到设置里把语言设置成 English。此时程序名称变成了:China
这时,程序名称的国际化完成了。那里面内容呢?
2、内容国际化
2.1新建Localization.strings文件
2.2 添加语言和1.1环节一样。
2.3 添加语言内容
添加"Key"="value"; 然后使用时用NSLocalizedString(@"key", @""); 读取内容.
Localization.strings English文件添加
"key" = "english value";
Localization.strings English文件添加
"key" = "中文内容";
在ViewController.m 中添加UILabel实验一下
[objc]
view plaincopy
- (void)viewDidLoad
{
[super viewDidLoad];
UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(20, 40, 250, 60);
label.text = NSLocalizedString(@"key", @"");
[self.view addSubview:label];
}
运行
设置项里切换英文
如果你的strings文件名字不是Localizable而是自定义的话,如wang.strings,那么你就得使用NSLocalizedStringFromTable()来读取本地化字符串:
[cpp] view
plaincopy
NSLocalizedStringFromTable(@"welcome",@"wang", nil)
3、本地化图片
这里又分两种方法,第一种和本地化字符串方法类似,把中英文图片的名字分别存到中英文对应的strings文件,然后通过NSLocalizedString)来获取图片名称,如:
Localizable.strings(english)文件中加入:
[cpp] view
plaincopy
"BtnCancel"="BtnCancelEn.png";
Localizable.strings(chinese)文件中加入:
[cpp] view
plaincopy
"BtnCancel"="BtnCancelCn.png";
然后在代码中使用NSLocalizedString)来获取图片名称:
[cpp] view
plaincopy
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文件夹中,最后引用就行了。
5、如何在运行的时候判断现在运行环境是哪个语言?
5.1 获得所支持的语言
[objc]
view plaincopy
NSUserDefaults *defaults = [ NSUserDefaults standardUserDefaults ];
// 取得 iPhone 支持的所有语言设置
NSArray *languages = [defaults objectForKey : @"AppleLanguages" ];
NSLog ( @"%@" , languages);
运行,打印结果:
(
en,
"zh-Hant",
"zh-Hans",
fr,
de,
ja,
nl,
it,
es,
pt,
"pt-PT",
da,
fi,
nb,
sv,
ko,
ru,
pl,
tr,
uk,
ar,
hr,
cs,
el,
he,
ro,
sk,
th,
id,
"en-GB",
ca,
hu,
vi
)
"zh-Hant" 繁体中文
"zh-Hans", 简体中文
这段代码获取当前系统支持的语言。
5.2 获取当前使用语言
[objc]
view plaincopy
NSArray *languages = [NSLocale preferredLanguages];
NSString *currentLanguage = [languages objectAtIndex:0];
NSLog ( @"%@" , currentLanguage);
打印结果:
en
用获取到的当前语言,和支持的语言做字符串对比,就可以知道是那种语言了。
[objc]
view plaincopy
if([currentLanguage isEqualToString:@"en"])
{
NSLog(@"current Language:en");
}
相关文章推荐
- iOS程序名称及内容国际化(本地化)
- ios-App程序名称或者内容(国际化/本地化)
- iOS学习之iOS程序名称及内容国际化(本地化) .
- iOS学习之iOS程序名称及内容国际化(本地化)
- IOS程序名称及内容国际化(本地化)
- (转) IOS程序名称及内容国际化(本地化)
- iOS学习之iOS程序名称及内容国际化(本地化)
- IOS程序名称及内容国际化(本地化)
- IOS程序名称及内容国际化(本地化)
- iOS学习之iOS程序名称及内容国际化(本地化)
- IOS学习之IOS程序名称及内容国际化(本地化)
- IOS程序名称及内容国际化(本地化)
- 【IOS游戏开发】之iOS程序名称及内容国际化(本地化)
- iOS学习之iOS程序名称及内容国际化(本地化)
- iOS学习之iOS程序名称及内容国际化(本地化)
- iOS国际化:程序名称国际化、内容国际化、storyboard国际化
- iOS国际化:程序名称国际化、内容国际化、storyboard国际化
- iOS App名称和内容国际化
- 【转】iOS 设置APP的名称(浅述APP版本国际化与本地化)
- 全面解析iOS中App的名称和内容以及启动页三大板块的国际化方案