实现多语言的新包

时间:2011-01-01 14:00:36

标签: cocoa macos

我正在实现一个mac应用程序。它的窗口版本已经实现。现在我面临以下问题:

使用多语言实现新包(用户可以在安装应用程序时选择应用程序的语言)。即对于Windows版本的软件,在执行安装文件时,用户可以选择应该安装应用程序的语言。我希望这个功能包含在mac版本中。即,在使用创建的包安装应用程序时,用户应该能够选择安装语言。(目前在mac版本中,多语言是使用NSLocalizedString实现的,以便应用程序根据机器语言显示语言,并且安装包已本地化)。但我特别希望用户能够选择应用程序的安装语言,而安装.Pls有助于解决这个问题....

1 个答案:

答案 0 :(得分:1)

使用NSString *locString = NSLocalizedStringFromTable(@"key", @"Japanese", @"comment for key");代替;)

说明:

如果查看NSLocalizedString宏定义,您会发现它实际上调用了-[NSBundle localizedStringForKey:value:table:]方法,其中最后一个参数是本地化文件(即:Localizable.strings)。您可以使用-[NSBundle localizations];方法获取可用的本地化。

这意味着您可以使用它直接访问本地化文件,如下所示:

// This gets the localized string found in Japanese.strings for the key @"key"
NSString *locString = [thisBundle localizedStringForKey:@"key"
                                                  value:@"No translation"
                                                  table:@"Japanese"];

或使用宏(几乎等效)

NSString *locString = NSLocalizedStringFromTable(@"key", @"Japanese", @"comment for key");

区别在于给定密钥不可用时会发生什么:

  • 前者返回@"No translation"
  • 后者返回@"key"
  • 的默认本地化

有关详细信息,请参阅NSBundle class reference

希望有所帮助