iOS 支持中文和英文的语言本地化

今日学习了语言本地化完整的流程,撰此文以记之。

一、创建.strings文件,并本地化。

1、新建项目,创建.strings文件。

2.本地化

3.添加支持的语言

选中PROJECT下的项目->Localization -> 点击+添加。这里添加简体中文的.strings文件。

勾选三个文件,项目中就会创建名为Language.strings(Chinese(Simplified))文件。

finder中项目目录下就会创建名为zh-Hans.lproj文件夹。

同样的方式可以创建English.strings。

二、语言本地化的使用

1.在Language.strings(Chinese(Simplified))文件和Language.strings(English)文件中添加键值对。

2.在代码中本地化的使用方式。

搭建UI,添加UILabel在storyboard上,用于在不同系统语言的情况下展示所显示的文字。

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    //1.获取系统当前语言
    NSArray *languages = [NSLocale preferredLanguages];
    NSLog(@"languages==%@",languages);
    NSString *currentLan = [languages firstObject];
    NSRange range = [currentLan rangeOfString:@"-C"];
    NSString *string = [currentLan substringToIndex:range.location];
    [[NSUserDefaults standardUserDefaults]setObject:string forKey:@"language"];
}

ViewController.m

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *Lab;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //1.获取当前语言
    NSString *name = [[NSUserDefaults standardUserDefaults] objectForKey:@"language"];

    //2.获取当前语言的文件
    NSString *pathStr = [[NSBundle mainBundle]pathForResource:name ofType:@"lproj"];

    //3.根据key转换为当前语言。key为.strings文件中的键名 table:为.strings文件名
    NSString *valueStr = [[NSBundle bundleWithPath:pathStr] localizedStringForKey:@"key" value:nil table:@"Language"];

    self.Lab.text = valueStr;
}

建议ViewController.m文件中的代码写成全局宏定义,因为在很多地方可以用到。宏定义及使用如下:

#define Localize(key)  [[NSBundle bundleWithPath:[[NSBundle mainBundle]pathForResource:[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"Language"];

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *Lab;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *value = Localize(@"key");
    self.Lab.text = value;
}

3.效果图手机系统语言分别设置为简体中文和英文。

注:

获取系统语言时

NSArray *languages = [NSLocale preferredLanguages];NSLog(@"languages==%@",languages);
NSString *currentLan = [languages firstObject];
languages数组

打印结果:

这里的内容是和手机->设置->通用->语言和地区页面中PREFEREND LANGUAGED对应。

时间: 2024-08-03 18:29:19

iOS 支持中文和英文的语言本地化的相关文章

小米2S 中文和英文支持TWRP,真实双系统支持

经过我几天的努力小米2S的TWRP 的功能已经完美了. 支持功能 : 中文和英文显示能相互切换 真实双系统功能已经完成95%. 刷入手机方法.由于时间原因我只制作了img文件.没有制作成卡刷包格式. 刷入方法用 Fastboot 命令: fastboot flash recovery recovery.img fastboot reboot 源代码地址:https://github.com/sndnvaps/android_bootable_recovery_twrp 发布日期 2014-08-

中文和英文的比较

全本的粗浅观察大约得出以下的一些论点. (现代文)中文和英文比较最大的一个弊端是输入复杂度和基础符号复杂度.然而在其他很多方面,中文的能力应该超过英文. 英文或拉丁字母化文字另外有个词法上的优势是基于发音和音节的单词随意构造. 这个词法上的好处是英文可以借用大量外来语,尤其法语,来提升语言的文学性和趣味性. 另一个显著的好处是比较低的发音二义性(英文很多单词多词一音,这是造词的问题,也是英文的幽默的地方,不得不承认英文在各方面(尤其是其弱点上)表现出其幽默的特点). 还有一个好处是组合词.英文中

JS-只能输入中文和英文

<span style="font-family:KaiTi_GB2312;">转自:<a target=_blank href="http://www.cnblogs.com/liupeizhi/articles/2487472.html">http://www.cnblogs.com/liupeizhi/articles/2487472.html</a></span> </pre><pre nam

python2.7.x的字符串编码到底什么鬼?(中文和英文的处理)

一直以来我其实一直对python的编码弄得非常晕,能正常编码,也能处理一些情况.但是始终不明白有些问题究竟为何出,原因是什么,为什么要这样用. 今天晚上正好好好研究了一番解答了自己心中的困惑. Q:python2.7.x里面的中文表示到底是什么鬼? A:直接来看看 In [23]: x = '好不好喝都要喝' In [24]: x Out[24]: '\xe5\xa5\xbd\xe4\xb8\x8d\xe5\xa5\xbd\xe5\x96\x9d\xe9\x83\xbd\xe8\xa6\x81\

ios 应用中的文字多语言化

一.应用中的文字多语言化 1.Step 1:为应用添加多语言版本 2.Step 2:编程中的变化 要实现多语言,在编程中就不能直接用NSString 了,而是使用 NSLocalizedString(key, comment) key是对应显示的NSString,comment则为注释 3.创建Localizable.strings文件 文件名字为Localizable时用 NSLocalizedString(@"title", nil)即可 当自定义文件名字时用 NSLocalize

shell中的 &nbsp; 中文和英文 &nbsp; 双引号

使用sed替换文本中的字符时,添加字符时不小心添加了个中文的双引号,结果替换时,总是不能将其替换掉. 文件名称为a.txt,文本内容如下: "" https://www.baidu.com/ 想把""替换掉,使用命令sed -i 's#""##g' a.txt 总是替换不掉,在这里可以一眼看出是两种不同的双引号,但在shell里不容易注意到,想着是不是需要转义字符,使用转义字符也不行. 最后发现命令中的双引号似乎比文本内容中的站的比较直,恍然大悟

python 匹配中文和英文

在处理文本时经常会匹配中文名或者英文word,python中可以在utf-8编码下方便的进行处理. 中文unicode编码范围[\u4e00-\u9fa5] 英文字符编码范围[a-zA-Z] 此时匹配连续的中文或者英文就很方便了,例如: >>> import re >>> strings = u'中国china美国American' >>> print strings 中国china美国American >>> ch_pat = re

IOS编程中设置系统默认语言的方法

1. 创建新的语言包 ---文件名必须为:Localizable.strings 之后选中Localizable.strings文件,在Utilites中,点击Localizable选项 设置语言 2. 在info.plist 文件中系统默认语言 2. 设置运行时的语言(参考开发者文档 :Testing Specific Languages and Regions) 方法:Product->Scheme->Edit Scheme 在选择Options下的 Application languag

js正则表达式验证中文和英文及数字

<script type="text/javascript"> function check(v){  var regex = new RegExp("^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9_]){1,20}$");//不包含"-"  //var regex = new RegExp("^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9_