NSLocalizedString有什么用?什么时候使用?

时间:2013-12-24 08:59:53

标签: objective-c cocoa

NSLocalizedString有什么用?

self.textfiled.text=NSLocalizedString(@"testing", @"test")];

当我执行相同的操作时,textfield仅显示测试?那么第二个参数的用途是什么?

2 个答案:

答案 0 :(得分:1)

我不会详细介绍,但长话短说,它用于创建一个将以各种语言显示的应用程序。它是一个宏,根据设备的语言环境返回一个字符串。假设您正在编写一个具有英语和土耳其语版本的应用程序。您需要至少有两个不同版本的localizable.strings文件,一个是英语,一个是土耳其语。两者的格式相同:

/* Cancel button text */ 
"Cancel" = "Cancel";

和TR:

/* Cancel button text */
"Cancel" = "İptal";

请注意,格式不是“english”=“turkish”,两个版本中的“key”=“value”。如果您在代码中提供NSLocalizedString宏,它将由genstrings创建,如:

NSLocalizedString(@“取消”,@“取消按钮文字”)]

NSLocalizedString从应用程序包中找到localizable.strings版本,并根据设备的语言环境加载字符串。请注意,它不会帮助您在运行时更改语言;但如果您转到设置,更改区域设置并重新启动应用程序,它将更改应用程序语言。

答案 1 :(得分:0)

第二个参数将用作翻译者关于应用程序中使用的字符串上下文的提示。它将被添加到由genstring工具生成的文件中,输出将类似于:

self.textfiled.text = NSLocalizedString(@"AboutUserKey", @"Title for about user button")];
...
// en/Localizable.string
/* Title for about user button */
"AboutUserKey" = "About";

// ru/Localizable.string
/* Title for about user button */
"AboutUserKey" = "О пользователе";