iOS以什么方式处理以编程方式将本地化文本插入应用程序的正确方法?

时间:2014-09-08 17:58:01

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

我正致力于我的应用程序的本地化,并且如果对于集中化"这是一个好主意我会感到有兴趣。我的应用程序中的所有可本地化字符串都是通过某种静态方法提供的:[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");

1 个答案:

答案 0 :(得分:3)

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

  1. 制作LocalizedDefs.h文件(名称并不重要),然后在整个应用中导入。在那里你将为你的NSLocalized字符串添加一系列#define
  2. 示例:

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

    然后在您的代码中,只要您想要出现该错误,您只需输入ksLocalizedError即可。

    1. 最后,您希望翻译(显然),以便在Localizeable.strings文件中设置翻译。
    2. 示例:"Error" = "Error";