【问题标题】:Localization of strings in static lib静态库中字符串的本地化
【发布时间】:2010-02-25 16:31:31
【问题描述】:

我有一个使用静态库 (SL) 的项目。在那个 SL 中,有几个我想本地化的字符串,该项目包括所有本地化文件。将所有文本翻译存储在同一个文件中时,本地化工作得很好。问题是我想将 SL 字符串与其他字符串分开。我试图将两个不同的 *.strings 文件(Localizable.strings 和 Localizable2.strings)放在感兴趣的语言文件夹中,但这不起作用。我还尝试使用两个具有相同名称(Localizable.strings)但路径不同的 *.strings 文件。它也没有用。好像只支持一个本地化文件吧?任何人都可以建议这样做的好方法吗?我正在使用 SDK 3.2 beta 2。

【问题讨论】:

    标签: iphone xcode localization static-libraries


    【解决方案1】:

    不可能将其捆绑在静态库中,但您可以创建新的捆绑包,如“MyStaticLibraryName.bundle”,放入所有本地化版本并使用下面的代码代替“NSLocalizedString ()”。您需要做的就是:添加一个静态库和资源包。

    NSString *MyLocalizedString(NSString* key, NSString* comment) {
    static NSBundle* bundle = nil;
    if (!bundle) {
        NSString* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyStaticLibraryName.bundle"];
        bundle = [[NSBundle bundleWithPath:path] retain];
    }
    
    return [bundle localizedStringForKey:key value:key table:nil];
    }
    

    【讨论】:

    • 要使 genstring 使用此设置,必须使用 -s 参数。
    【解决方案2】:

    将同名文件放在一个项目的介绍中永远不会奏效,因为在生成的应用程序中,它们最终都在同一个位置。 (Xcode 不会保留您的目录结构。)

    但是您可以将部分本地化放入 Localizable2.strings 中,然后使用:

    NSLocalizedStringFromTable(@"key", @"Localizable2", @"")

    【讨论】:

      【解决方案3】:

      为静态库制作可本地化的字符串,然后将该字符串文件放在文件夹“YourLibraryResource”中。 重命名文件夹“YourLibraryResource.bundle”。

      现在您也可以将此捆绑包与库一起包含在项目中。然后使用 abuharsky 给出的代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-12
        • 2022-07-28
        相关资源
        最近更新 更多