本地语言国际化
来源:互联网 发布:网络信号接收器 编辑:程序博客网 时间:2024/05/05 02:10
这段时间没有那么忙整理了一下关于语言国际化的内容,写在这上面,给没做过的当做资料,也当做是自己的笔记,
首先在工程中创建一个PCH文件,在PCH文件中写入一个宏定义
#define Localized(key)[[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"NSLocalizedLanguage"]
现在为工程建立.string的文件
在这里文件的名字必须要是 NSLocalizedLanguage 因为我的宏定义写的是这个名字
然后在工程中添加需要的语种,更具需要选择
回到工程文件下,点击.string的文件在右侧的设置栏中点击Locallzation 点击语言种类
此时在.string的文件下就会看到选择的语种的文件
在文件中将想要转换的文字,依次写到对应的语言文件里就行了
现在就去工程中添加获取获取系统当前语言的代码来到Application.h
声明选择设置语言界面的控制器 在声明一个方法 如图所示为了写block就写的很简单
接下来在Application.m中添加代码
为了方便我将代码单独放在这里
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; self.window.backgroundColor = [UIColor whiteColor]; /** * 获取当前语言 */ if (![[NSUserDefaults standardUserDefaults]objectForKey:@"appLanguage"]) { NSArray *langusges = [NSLocale preferredLanguages]; NSString *language = [langusges objectAtIndex:0]; if ([language hasPrefix:@"zh-Hans"]) {//开头匹配 [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"]; }else{ [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"]; } } self.window.rootViewController = [ViewController new]; [self.window makeKeyAndVisible]; return YES;}- (void)ToMain{ self.RootVC = [ViewController new]; self.window.rootViewController = self.RootVC;}
这样获取系统语言就算完成了,viewController.m
#import "ViewController.h"#import "AppDelegate.h"@interface ViewController ()@property (assign ,nonatomic)BOOL IsEngish;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; UIButton *LanguageButton = [UIButton buttonWithType:UIButtonTypeSystem]; LanguageButton.frame = CGRectMake(70, 100, 230, 30); [LanguageButton setTitle:Localized(@"你好") forState:UIControlStateNormal]; LanguageButton.backgroundColor = [UIColor orangeColor]; [self.view addSubview:LanguageButton]; UIButton *English = [UIButton buttonWithType:UIButtonTypeSystem]; English.frame = CGRectMake(70, 160, 60, 30); [English setTitle:Localized(@"英语") forState:UIControlStateNormal]; English.backgroundColor = [UIColor orangeColor]; [English addTarget:self action:@selector(English:) forControlEvents:UIControlEventTouchDown]; [self.view addSubview:English]; UIButton *Chinese = [UIButton buttonWithType:UIButtonTypeSystem]; Chinese.frame = CGRectMake(240, 160, 60, 30); [Chinese setTitle:Localized(@"汉语") forState:UIControlStateNormal]; [Chinese addTarget:self action:@selector(chinese:) forControlEvents:UIControlEventTouchDown]; Chinese.backgroundColor = [UIColor redColor]; [self.view addSubview:Chinese];}- (void)chinese:(UIButton *)sender{ [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"]; AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; [appDelegate ToMain];}- (void)English:(UIButton *)button{ [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"]; AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; [appDelegate ToMain];}
本地语言国际化大概就是这个流程,在这里我只用了中英文,其他的语言也是一样,
0 0
- 本地语言国际化
- struts2 国际化,修改本地语言
- Android国际化 动态更换本地语言
- 语言国际化
- 国际化语言
- iOS学习笔记7—程序实现国际化 (即本地多语言化)
- gettext:Python本地/国际化模块
- Qt 国际化语言版本
- Java 国际化 语言切换
- wince国际化语言支持
- String Resources(语言国际化)
- 国际化、OGNL表达式语言
- struts2国际化语言切换
- wince国际化语言支持
- iOS - 国际化(多语言):
- java语言实现国际化
- Android 之 语言 国际化
- APP语言国际化
- HTML+CSS基础课程之CSS基础代码语法
- Caching Bitmaps(官方文档)
- android 使用PullToRefresh实现下拉刷新和上拉加载更多
- JAVA + LR实现apache流媒体的性能测试(JAVA部分)
- Redis学习到实战(二)linux安装与从主
- 本地语言国际化
- java io流
- 性能测试新手误区(五):这是性能问题么
- android 标准OTA升级流程
- nodeJS实战:自定义模块与引入,不同模块的函数传递及回调处理,exports与module.exports(基于nodejs6.2.0)
- 跑马灯
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
- 性能测试新手误区(四):一切来自录制
- mysql使用like模糊搜索json的数据