【问题标题】:How to localize database strings when using XLIFF in Xcode在 Xcode 中使用 XLIFF 时如何本地化数据库字符串
【发布时间】:2015-10-16 14:55:36
【问题描述】:

我正在尝试使用 Xcode (v7.0.1) 中的“本地化导出...”选项来本地化我的应用程序。此导出处理我的故事板和代码中的所有本地化字符串。但是,我正在使用一个数据库,并且该数据库中的一个字段包含一个需要本地化的颜色名称。我不知道如何本地化这些字符串,因为 Xcode 不知道要本地化的字符串。

如何将数据库字符串添加到导出的 xliff 文件中?

【问题讨论】:

    标签: ios database xcode localization xliff


    【解决方案1】:

    您可以在代码中使用某种带有 switch 语句的方法,如下所示:

    static NSString *const RED_COLOR = @"RED_COLOR";
    static NSString *const BLUE_COLOR = @"BLUE_COLOR";
    static NSString *const MISSING_COLOR = @"MISSING_COLOR";
    
    - (NSString *)localizedColor:(NSString *)color {
        switch (color) {
            case RED_COLOR:
                return NSLocalizedString(RED_COLOR, @"red color for figure");
            case BLUE_COLOR:
                return NSLocalizedString(BLUE_COLOR, @"red color for figure");
            default:
                return NSLocalizedString(MISSING_COLOR, @"color missing");
        }
    }
    

    您可以将数据库返回的颜色名称传递给此方法。您需要在.strings 文件中翻译所有可能存在于数据库中的颜色名称。

    【讨论】:

    • 我已经尝试过这样的事情。问题是 XLIFF 文件的导出不会将 RED_COLOR 添加到 localizable.strings 文件中。这只适用于我使用'return NSLocalizedString("Red", @"red color for figure");'在代码中。我不想在代码中两次指定相同的常量字符串。
    • 您是否尝试使用genstrings (link) 创建.strings 文件的内容?或者用#define替换const
    • 我使用的是 swift 而不是 obj-c,但我认为这并不重要。我是 XLIFF 导出的新手。我的理解是,在使用 XLIFF 导出时我不再需要使用 genstrings,并且 .strings 文件在 XLIFF 导入过程中得到处理。我理解错了吗?
    • genstrings 在源代码中搜索NSLocalizedString 宏。一般来说,这个工具是为与 Objective-C 一起工作而设计的,但它也可以与 Swift 一起工作。您可以在项目目录find . -name \*.swift | xargs genstrings -o . 中像这样使用它。 genstrings 创建 .strings 文件,然后您可以使用 Xcode 的 XLIFF-export 从 .strings 文件中获取 XLIFF 文件。
    猜你喜欢
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多