Cocoa 新软件包的多语言实现
我正在实现一个mac应用程序。它的窗口版本已经实现。现在我面临以下问题:Cocoa 新软件包的多语言实现,cocoa,macos,Cocoa,Macos,我正在实现一个mac应用程序。它的窗口版本已经实现。现在我面临以下问题: 使用多语言实现新软件包(用户可以在安装应用程序时选择应用程序的语言)。ie对于windows版本的软件,在执行安装文件时,用户可以选择应用程序应安装的语言。我希望mac版本中包含此功能。ie在使用创建的软件包安装应用程序时,用户应能够选择安装语言。(目前在mac版本中,多语言是使用NSLocalizedString实现的,因此应用程序根据机器语言显示语言,安装软件包是本地化的)。但我特别希望用户在安装时能够选择应用程序的安
使用多语言实现新软件包(用户可以在安装应用程序时选择应用程序的语言)。ie对于windows版本的软件,在执行安装文件时,用户可以选择应用程序应安装的语言。我希望mac版本中包含此功能。ie在使用创建的软件包安装应用程序时,用户应能够选择安装语言。(目前在mac版本中,多语言是使用NSLocalizedString实现的,因此应用程序根据机器语言显示语言,安装软件包是本地化的)。但我特别希望用户在安装时能够选择应用程序的安装语言。请帮助解决此问题。…使用
NSString*locString=NSLocalizedStringFromTable(@“key”、@“Japanese”、@“comment for key”)代码>而不是;)
说明:
如果查看NSLocalizedString
宏定义,您会发现它实际上调用了-[NSBundle localizedStringForKey:value:table://code>方法,其中最后一个参数是本地化文件(即:Localizable.strings)。您可以使用-[NSBundle本地化]代码>方法
这意味着您可以使用它直接访问以下本地化文件:
// This gets the localized string found in Japanese.strings for the key @"key"
NSString *locString = [thisBundle localizedStringForKey:@"key"
value:@"No translation"
table:@"Japanese"];
或者使用宏(这几乎是等效的)
区别在于当给定的密钥不可用时会发生什么:
- 前者返回
@“无翻译”
- 后者返回
@“key”
有关更多详细信息,请参阅
希望它能有所帮助请注意:#定义SLocalizedStringFromTable(key,tbl,comment)[[NSBundle mainBundle]localizedStringForKey:(key)value:@“table:(tbl)]表是宏中的第二个参数,comment排在最后
NSString *locString = NSLocalizedStringFromTable(@"key", @"Japanese", @"comment for key");