iOS开发Xcode中切换显示语言实现国际化

1.在Project设置,添加中英两种语言:

2.新建Localizable.strings文件,作为多语言对应的词典,存储多种语言,点击右侧Localization,勾选中英:

3.添加一个字段,

在English中,添加:SUBMIT_BTN_TITLE = Go;

在Chinese中,添加:SUBMIT_BTN_TITLE = 开始;

4.一个工具类GDLocalizableController,用来切换本地语言:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

//

//  GDLocalizableController.h

//  guide-book

//

//  Created by why on 7/16/14.

//  Copyright (c) 2014 why. All rights reserved.

//

#import <foundation foundation.h="">

@interface GDLocalizableController : NSObject

+(NSBundle *)bundle;//获取当前资源文件

+(void)initUserLanguage;//初始化语言文件

+(NSString *)userLanguage;//获取应用当前语言

+(void)setUserlanguage:(NSString *)language;//设置当前语言

@end

//

//  GDLocalizableController.m

//  guide-book

//

//  Created by why on 7/16/14.

//  Copyright (c) 2014 why. All rights reserved.

//

#import GDLocalizableController.h

@implementation GDLocalizableController

static NSBundle *bundle = nil;

+ ( NSBundle * )bundle{

    return bundle;

}

+(void)initUserLanguage{

    

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    NSString *string = [def valueForKey:@userLanguage];

    if(string.length == 0){

        //获取系统当前语言版本

        NSArray* languages = [def objectForKey:@AppleLanguages];

        NSString *current = [languages objectAtIndex:0];

        string = current;

        [def setValue:current forKey:@userLanguage];

        [def synchronize];//持久化,不加的话不会保存

    }

    

    //获取文件路径

    NSString *path = [[NSBundle mainBundle] pathForResource:string ofType:@lproj];

    bundle = [NSBundle bundleWithPath:path];//生成bundle

}

+(NSString *)userLanguage{

    

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    NSString *language = [def valueForKey:@userLanguage];

    return language;

}

+(void)setUserlanguage:(NSString *)language{

    

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    

    //1.第一步改变bundle的值

    NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@lproj ];

    bundle = [NSBundle bundleWithPath:path];

    

    //2.持久化

    [def setValue:language forKey:@userLanguage];

    [def synchronize];

}

@end</foundation>

5. 自定义一个宏方便处理:


1

2

3

4

// ----- 多语言设置

#define CHINESE @zh-Hans

#define ENGLISH @en

#define GDLocalizedString(key) [[GDLocalizableController bundle] localizedStringForKey:(key) value:@ table:nil]

6.使用:


1

2

3

4

[GDLocalizableController setUserlanguage:CHINESE];

NSLog(GDLocalizedString(@SUBMIT_BTN_TITLE));

[GDLocalizableController setUserlanguage:ENGLISH];

NSLog(GDLocalizedString(@SUBMIT_BTN_TITLE));

 

时间: 2024-11-08 04:16:53

iOS开发Xcode中切换显示语言实现国际化的相关文章

[iOS]如何在iOS开发中切换显示语言实现国际化

1.在Project设置,添加中英两种语言: 2.新建Localizable.strings文件,作为多语言对应的词典,存储多种语言,点击右侧Localization,勾选中英: 3.添加一个字段, 在English中,添加:"SUBMIT_BTN_TITLE" = "Go"; 在Chinese中,添加:"SUBMIT_BTN_TITLE" = "开始"; 4.一个工具类GDLocalizableController,用来切换

[iOS]怎样在iOS开发中切换显示语言实现国际化

1.在Project设置,加入中英两种语言: 2.新建Localizable.strings文件,作为多语言相应的词典,存储多种语言,点击右側Localization,勾选中英: 3.加入一个字段, 在English中,加入:"SUBMIT_BTN_TITLE" = "Go"; 在Chinese中,加入:"SUBMIT_BTN_TITLE" = "開始"; 4.一个工具类GDLocalizableController.用来切换

iOS开发Xcode中git使用(部分)

##Xcode中git使用 #####本文在此只介绍当新建工程时,没勾选git选项,但在后期开发过程中又需要使用git的解决办法. ***1. 打开终端2. 输入命令> cd /Users/电脑管理者身份/新建工程位置/新建工程名 如: cd /Users/CHEN-JIE/Desktop/CJGit使用 3. 输入命令:git init >这会初始化一个空的源,如果你在Finder里面查看或是输入ls命令,你会看到.git子目录已经被创建. 4.输入命令:git add. >当前目录所

iOS开发 Xcode中的Info.plist字段含义

Info.plist用于向iOS提供关于app,bundle或者framework的一些重要信息.它指定了比如一个应用应该怎样启动,它如何被本地化,应用的名称,要显示的图标,还有更多.Info.plist文件实际上是苹果预定义schema的XML文件. 为了构建一个设备相关的健,你在健的后面要加上~iphone或者~ipad. 常用字段: 1.获取版本信息: NSDictionary*infoDic = [[NSBundle mainBundle] infoDictionary]; NSStri

ios开发xcode中设置代码块

在开发中有很多重复的代码,很多开发者把常用的代码做成代码块提高开发效率. 在xcode里选中代码块的时候总是很不容易,点击选中的代码(文字),不要移动和松开鼠标左键,当竖线变成像拉长了的x(我也不知道怎么形容)之后就可以拖动了,其实不需要多少时间,基本上就是:不要直接点鼠标左键就滑动鼠标,而是要下再拖动就可以了. 以后再使用这个代码就可以直接从里面拖出来就可以了 还可以自定义代码块的名称,使用范围,快捷键等

iOS开发基础-图片切换(2)

延续:iOS开发基础-图片切换(1),对(1)里面的代码进行改善. 在 ViewController 类中添加新的数组属性:  @property (nonatomic, strong) NSArray *infoArray; //存放图片信息 通过 self.infoArray 的 getter 方法对其实现初始化(懒加载),其中代码中的 _infoArray 不能用 self.infoArray 替换: 1 //infoArray的get方法 2 - (NSArray *)infoArray

iOS开发- Xcode插件(一)-规范注释生成器VVDocumenter

分享几个常用的Xcode插件. 第一个, 规范注释生成器VVDocumenter. 顾名思义, 它可以很方便的为你自动添加注释 使用效果如下: 下载链接:https://github.com/onevcat/VVDocumenter-Xcode 使用说明: 1.前往GitHub下载工程文件:VVDocumenter-Xcode 2.用Xcode打开工程,Command + B Build成功后,可以在~/Library/Application Support/Developer/Shared/X

iOS开发基础-图片切换(3)

延续:iOS开发基础-图片切换(2),对(2)里面的代码用属性列表plist进行改善. 新建 Property List 命名为 Data 获得一个后缀为 .plist 的文件. 按如图修改刚创建的文件: 最后,修改 infoArray 的 getter 方法: 1 //infoArray的getter方法 2 - (NSArray *)infoArray { 3 NSLog(@"需要获取图片信息数组"); 4 //只实例化一次 5 if (_infoArray == nil) { 6

iOS开发 - XCode Debugger中的Icon符号的意义

这是之前在唐巧大牛博客上看到的, 虽然时间过了挺久的. 不过觉得挺有意义的,就Mark下. 你注意到了吗?在Xcode中,当你点击查看调用栈的时候,调用栈的每个方法前面都有一个Icon,而且还有好几种不同的样子,如下图所示,你知道它们代表什么意思吗? 其实它们代表的意义如下: Person icon is User Mug icon is AppKit (or UIKit) Briefcase icon is Frameworks Gear icon is System Morse code i