【问题标题】:iOS what is the proper way to handle inserting localized text into an app programmatically?iOS以编程方式处理将本地化文本插入应用程序的正确方法是什么?
【发布时间】:2014-09-08 17:58:00
【问题描述】:

我正在处理我的应用程序的本地化,如果将我的应用程序中的所有可本地化字符串“集中化”以通过某个静态方法提供是一个好主意:[AppStrings stringWithType:type],我很感兴趣。

一方面,中心化的方法似乎会让将来编辑可本地化的字符串更容易,但另一方面,字符串本身不再可读,我将不得不定义很多枚举类型。

在大型项目中进行字符串本地化的正确方法是什么(要本地化 100 多个字符串)?我应该在代码中嵌入 NSLocalizedString(),还是应该尝试以某种方式集中提供这些字符串?

typedef enum : NSUInteger {
    ksCheckingCredentials,
    ksError
} kStringType;

+(NSString*)stringWithType:(int)type

{
    switch (type) {
        case ksCheckingCredentials:
            return NSLocalizedString(@"Checking Credentials",
                              @"Inform the user that credentials check is being performed"); 
            break;
         case    ksError:
            return NSLocalizedString(@"Error",
                                     @"Generic error message to display to the user");
            break;
         default:
            break;
    }
}

-- 或者-- 我是否只在我的应用中的 100 个不同位置使用下面的代码?

self.errorLabel.text = NSLocalizedString(@"Error",@"Generic error message to display to the user");

【问题讨论】:

    标签: ios objective-c localization translation localizable.strings


    【解决方案1】:

    您可能希望在整个应用程序中重复使用翻译。例如,很可能到处都有错误,您想要相同的本地化错误字符串。我过去这样做的方式是:

    1. 创建一个LocalizedDefs.h 文件(名称不重要),并将其导入整个应用程序。在那里,您将为您的 NSLocalized 字符串放置一系列 #define

    例子:

    #define ksLocalizedError NSLocalizedString(@"Error", @"Generic error message to display to the user")

    然后,在您的代码中,只要您想要该错误,您只需输入ksLocalizedError

    1. 最后你想要你的翻译(显然)所以在你的Localizeable.strings文件中简单地设置翻译。

    示例:"Error" = "Error";

    【讨论】:

    • 酷,定义绝对是一个更好的方法 - 我可以命令点击定义宏直接进入它的定义。
    猜你喜欢
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多