Objective c 可可笔尖:定制EN本地化

Objective c 可可笔尖:定制EN本地化,objective-c,macos,cocoa,localization,Objective C,Macos,Cocoa,Localization,目前,我正忙于本地化我为一位朋友编写的应用程序。它在各种翻译中都能完美地工作。我想了解的是如何实现“定制”本地化。例如,假设我们有en_US和en_US_俚语,我如何将后者添加到本地化列表或NSLocalisedString下 为了解释这种情况,这个家伙运行了两个不同的应用程序来为他的乐队保存信息。一个基于MS Access,另一个基于Filemaker Pro(见图?!) 乐队的不同成员要么使用on,要么使用其他。他是唯一一个同时使用这两种方法的人,因为他设计了这两种方法 此时,当你启动应用程

目前,我正忙于本地化我为一位朋友编写的应用程序。它在各种翻译中都能完美地工作。我想了解的是如何实现“定制”本地化。例如,假设我们有en_US和en_US_俚语,我如何将后者添加到本地化列表或NSLocalisedString下

为了解释这种情况,这个家伙运行了两个不同的应用程序来为他的乐队保存信息。一个基于MS Access,另一个基于Filemaker Pro(见图?!)

乐队的不同成员要么使用on,要么使用其他。他是唯一一个同时使用这两种方法的人,因为他设计了这两种方法

此时,当你启动应用程序(Mac应用程序不是iOS)时,它会询问你以前是FMP还是Access用户

基于此,本地化字符串恢复为各种应用程序中使用的术语

i、 e在MSAccess中,频带gig位置称为“功能前提”,而在FMP中,相同的位置称为“gig位置”。为了避免对他们进行再培训(因为他们为我做免费的生日演唱会,所以我是免费的),我认为最快的方法是保持他们习惯的标签不变

据我所知,它是:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"en_Access"] forKey:@"AppleLanguages"];

有没有人能证实这一点,或者给我指出正确的方向(可能是一些苹果文档?),在我深入研究这个问题之前,我更想知道:)

谢谢


A

本质上,您的想法是定义您自己的区域设置(en_Access和en_FMP),以获得不同的字符串。我不相信你能在MacOSX(或iOS)上做到这一点,因为系统只会识别它知道有效的语言环境标识符


有趣的是,如前所述,您可以在Microsoft Windows上创建自定义区域设置。但不是Mac OS X。

还有什么办法?我试图避免在整个节目中使用if语句对所有内容进行双重编码:dt有多种选择。没有遍布各地的if语句,但使用您自己的实现替换NSLocalizedString调用。它可以是一个带有额外参数的新方法,也可以是两个不同的方法或OO方法(例如,定义一个LocalizedStringProvider类,并有两个不同的实例,一个用于旧术语,另一个用于新术语)
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"en_FMP"] forKey:@"AppleLanguages"];