多语言设置

http://www.jianshu.com/p/88c1b65e3ddb

http://blog.csdn.net/feng2qing/article/details/60479620

一、设置多语言环境

1、先在 Project 的 .info 里添加所需要支持的语言,这里选择的是Chinese(Simplified)和English-Development Language

2、创建 Localizable.strings 文件(注意:文件名最好不要随意更改)作为多语言对应的词典,存储多种语言

3、设置文件夹选择支持的语言

4、设置宏定义,在 Localizable.strings 里随意设置所需要支持的语言

Localizable.strings 格式:Localizable.strings内设置格式:"testName" = "测试名称"
使用的时候:NSLocalizedString 代替 String:NSLocalizedString(@"testName",nil)

二、使用

  1. 宏定义
// #define ChangeLanguageNotificationName @"changeLanguage"

#define ASLocalizedString(key)  [NSString stringWithFormat:@"%@", [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"Localizable"]]

#define appLanguage  @"appLanguage"
  1. APPDelegate.m 里面设置多语言
在 didFinishLaunchingWithOptions 方法中调用该方法
[self setLangueage];

#pragma mark - settingLanguage
- (void)setLanguage {
    if (![[NSUserDefaults standardUserDefaults] objectForKey:appLanguage]) {
        NSArray  *languages = [NSLocale preferredLanguages];
        NSString *language = [languages objectAtIndex:0];
        if ([language hasPrefix:@"zh-Hans"]) {
            [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:appLanguage];
        } else if ([language hasPrefix:@"zh-TW"] || [language hasPrefix:@"zh-HK"] || [language hasPrefix:@"zh-Hant"]) {
            [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hant" forKey:appLanguage];
        } else if ([language hasPrefix:@"en"]) {
            [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:appLanguage];
        }else{
            [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:appLanguage];
        }
    }
}
  1. 在页面中使用
self.usernameField.placeholder = ASLocalizedString(@"usernameField");

APP 内设置按钮

self.changeLanguageBtn.selected = !self.changeLanguageBtn.selected;
    NSLog(@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:appLanguage]);
    if ([[[NSUserDefaults standardUserDefaults] objectForKey:appLanguage] isEqualToString:@"zh-Hans"]) {
        [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:appLanguage];
    } else {
        [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:appLanguage];
    }

results matching ""

    No results matching ""