2013-11-04 46 views
0

目前我正忙于为我的朋友写一个应用程序。它适用于各种翻译。我试图找出的是如何实现'自定义'本地化。作为一个例子,假设我们有en_US和en_US_Slang,我将如何将后者添加到本地化列表或NSLocalisedString下?可可NIB:自定义EN本地化

为了解释这种情况,这个人正在运行2个独立的应用程序来保存他的乐队的信息。一个是基于MS Access的,另一个是基于Filemaker Pro的(去图?!)

该乐队的各个成员或者在其上使用,或者在另一个上使用。他是唯一一个同时使用两者的人。

目前,当您启动应用程序(Mac App不是iOS)时,它会询问您以前是否是FMP或Access用户。

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

即在MSAccess中,乐队演出位置被称为“功能前提”,而在FMP中被称为“演出位置”。为了避免必须重新培训所有人(因为他们为我免费赠送生日演出免费),我认为最快的方法是保留他们习惯的标签,都是一样的。

从我可以计算出它的:

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

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

有人可以证实这一点还是有可能,我会指出我在正确的方向(也许有些苹果文档?)在我深入研究这个问题之前我更愿意找出:)

谢谢

A

回答

1

本质上,您的想法是定义您自己的区域设置(en_Access和en_FMP)以获得区分字符串。我不相信你可以在Mac OS X(或iOS)上这样做,因为系统只会识别它认为有效的区域标识符。

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

+0

另一种解决方法是什么?我试图避免在整个演出中使用if语句对所有内容进行双重编码:D –

+0

有多种选择。没有if语句遍布整个地方,而是用自己的实现替换NSLocalizedString调用。它可以是一个带有额外参数或两种不同方法或OO方法的新方法(例如,定义一个LocalizedStringProvider类并有两个不同的实例,一个用于旧术语,一个用于新术语) – Clafou