【问题标题】:What is the second parameter of NSLocalizedString()?NSLocalizedString() 的第二个参数是什么?
【发布时间】:2010-11-29 09:26:40
【问题描述】:

什么是*comment参数:

NSString *NSLocalizedString(NSString *key, NSString *comment)

如果我这样做:

NSLocalizedString(@"Hello_World_Key", @"Hello World")

并且有两个版本的 Localizable.strings(英语和西班牙语),每个版本都需要条目吗:

English.lproj/Localization.strings: @"Hello_World_Key" = @"Hello World";

Spanish.lproj/Localization.strings: @"Hello_World_Key" = @"Hola Mundo";

英文不是多余的吗?

【问题讨论】:

    标签: ios objective-c swift xcode localization


    【解决方案1】:

    这只是为了让开发人员理解翻译,即您提供了一个从相应的字符串文件中获取相应字符串的密钥。

    comment 参数使开发者能够理解键代表什么...

    【讨论】:

      【解决方案2】:

      第二个参数是一个注释,如果您使用 genstrings 命令行实用程序,它将自动出现在字符串文件中,该实用程序可以通过扫描您的源代码为您创建字符串文件。

      该评论对您的本地化人员很有用。例如:

      NSLocalizedString(@"Save",@"Title of the Save button in the theme saving dialog");
      

      当您运行 genstrings 时,这将在 Localizable.strings 文件中生成一个条目,如下所示:

      /* Title of the Save button in the theme saving dialog */
      "Save" = "Save";
      

      【讨论】:

      • @JuandelaTorre:这个问题有些年头了,也许 4thSpace(提出问题的人)因为接受了其中一个答案,所以没有看他的问题。
      • 如果字符串文件不包含与您指定的标识符匹配的条目,也将使用它。
      • 不,在这种情况下使用的是密钥,而不是注释。
      • 重点是什么?是的,它对短 id 很有用("id" - "word";,就像在你的例子中"Save" = "Save";),但你必须手动添加更长的东西"id" - "word 1 word 2 word 3";
      • 注释(第二个参数)是针对本地化的。为您的应用程序添加另一种语言的字符串的人需要上下文才能知道要应用什么翻译。第一个参数只是指定本地化字符串文件中的键,字符串文件是实际存储要在 UI 中显示的文本。
      【解决方案3】:

      应用程序忽略注释字符串。它用于翻译者的利益,为在应用程序中找到的键的上下文用法添加含义。

      例如,Hello_World_Key 键在给定语言中可能采用不同的值,具体取决于 Hello World 短语在该语言中的正式或非正式程度(“What's up World”、“Yo World”、“ Good Day World”等)。

      您可以在注释字段中添加一个字符串以向翻译人员提示此用法,他们将(假设)能够更好地本地化您的应用程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-22
        • 1970-01-01
        • 1970-01-01
        • 2016-10-05
        • 1970-01-01
        • 2021-03-24
        • 2012-05-04
        • 2012-12-09
        相关资源
        最近更新 更多