0

我的问题是,我有一套基本的Localizable.strings多种语言但我不想在我的所有构建目标/方案允许它们(我们的一些客户只需要这些,其他只需要允许的语言)。

因为该集合对所有人都是相同的,并且会随着每次更新而扩展,所以我想避免将文件复制到文件夹层次结构的更深处并维护每个目标。

我使用NSLocalizedStringWithDefaultValueand NSLocalizedString,但没有找到任何选项来为他们提供允许的本地化。

先感谢您。

4

1 回答 1

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];
}

但如果有人有更好的解决方案,仍然接受对此的修改:)

于 2013-06-11T09:50:57.520 回答