我的问题是,对于多种语言我有一套基本的Localizable.strings
,但我不希望 允许他们在我的所有构建目标/方案中(我们的一些客户只需要这些,其他人只需要那些语言)。
因为该集合对所有人来说都是相同的,并且会在每次更新时进行扩展,所以我希望避免在文件夹hirarchy 中更深层地复制文件并维护每个目标。
我使用NSLocalizedStringWithDefaultValue
和NSLocalizedString
,但没有找到任何选项来为他们提供允许的本地化。
提前谢谢。
答案 0 :(得分:1)
我最终改变了使用NSLocalizedString
语言特定语言命名文件(德语Localizable_de.strings
,英语Localizable_en.strings
等)的方式。
关注
https://stackoverflow.com/a/12004482/883799
我在翻译课中使用
NSString *tbl = [@"Localizable_" stringByAppendingString:[MyLibrary currentLocalization]];
NSString *fname = [[NSBundle mainBundle] pathForResource:tbl ofType:@"strings"];
if(!localStrings)
localStrings = [[NSDictionary dictionaryWithContentsOfFile:fname] retain];
NSString *value = [localStrings objectForKey:key];
其中[MyLibrary currentLocalization];
是
+(NSString *)currentLocalization
{
NSString *currentLocCode = [[NSLocale preferredLanguages] objectAtIndex:0];
if([[AppSettings supportedLocales] containsObject:currentLocCode])
return [currentLocCode substringToIndex:2];
return [AppSettings defaultLocalization];
}
AppSettings
是目标,取决于[AppSettings supportedLocales];
+(NSArray *)supportedLocales
{
return [NSArray arrayWithObjects:
@"de",
@"de_AT",
@"de_BE",
@"de_CH",
@"de_DE",
@"de_LI",
@"de_LU",
//
@"en",
@"en_AS",
@"en_AU",
@"en_BB",
@"en_BE",
@"en_BM",
@"en_BS",
@"en_BW",
@"en_BZ",
@"en_CA",
@"en_FJ",
@"en_FM",
@"en_GB",
@"en_GM",
@"en_GU",
@"en_GY",
@"en_HK",
@"en_IE",
@"en_IN",
@"en_JM",
@"en_MH",
@"en_MP",
@"en_MT",
@"en_MU",
@"en_MW",
@"en_NA",
@"en_NZ",
@"en_PG",
@"en_PH",
@"en_PK",
@"en_PW",
@"en_SB",
@"en_SC",
@"en_SG",
@"en_SL",
@"en_SZ",
@"en_TT",
@"en_UM",
@"en_US",
@"en_US_POSIX",
@"en_VI",
@"en_ZA",
@"en_ZW",
//
@"es",
@"es_419",
@"es_AR",
@"es_BO",
@"es_CL",
@"es_CO",
@"es_CR",
@"es_DO",
@"es_EC",
@"es_ES",
@"es_GQ",
@"es_GT",
@"es_HN",
@"es_MX",
@"es_NI",
@"es_PA",
@"es_PE",
@"es_PR",
@"es_PY",
@"es_SV",
@"es_US",
@"es_UY",
@"es_VE",
//
@"fr",
@"fr_BE",
@"fr_BF",
@"fr_BI",
@"fr_BJ",
@"fr_BL",
@"fr_CA",
@"fr_CD",
@"fr_CF",
@"fr_CG",
@"fr_CH",
@"fr_CI",
@"fr_CM",
@"fr_DJ",
@"fr_FR",
@"fr_GA",
@"fr_GF",
@"fr_GN",
@"fr_GP",
@"fr_GQ",
@"fr_KM",
@"fr_LU",
@"fr_MC",
@"fr_MF",
@"fr_MG",
@"fr_ML",
@"fr_MQ",
@"fr_MR",
@"fr_NE",
@"fr_RE",
@"fr_RW",
@"fr_SC",
@"fr_SN",
@"fr_TD",
@"fr_TG",
@"fr_YT",
//
@"it",
@"it_CH",
@"it_IT",
nil];
}
但如果有人有更好的解决方案,仍然接受对此的修改:)