【问题标题】:internationalization of an iPhone ApplicationiPhone应用程序的国际化
【发布时间】:2012-01-24 16:39:02
【问题描述】:

我是 iPhone 应用程序开发的新手(我正在使用 XCode 4.2),我想知道是否有一种方法可以在内部翻译所有字符串、标题等......而无需逐一翻译。

我想到的一个想法是使用 NSUserDefaults 将语言保存为全局变量并相应地翻译所有内容

另一种选择是制作一个查找表(在 Objective-C 中甚至可能吗?)

谢谢

【问题讨论】:

  • 你期待什么..?你只能一个接一个地翻译它们……Apple 没有发布魔法翻译工具,但它可以通过某种方式实现。

标签: iphone objective-c ios internationalization xcode4.2


【解决方案1】:

查找 NSLocalizedString 的文档。以及如何本地化您的 .xib 文件(您制作 English.lproj、de.lproj、fr.lproj 等的本地化副本)。

【讨论】:

    【解决方案2】:

    您可以使用NSLocalizedString(@"<#key#>", @"<#comment#>") 和一个文件(命名为Localizable.strings(每种语言。如果您使用上述功能,您可以使用App Linguan(可在Mac App Store 上获取)生成Localizable.strings 文件。

    还有一个名为 genstrings 的命令行工具会为您创建文件,但相信我,Linguan 应用程序会在几分钟内收回成本。

    您应该始终添加注释以实现更好的翻译并提供有关键的上下文。

    【讨论】:

      【解决方案3】:

      您只需要创建包含要翻译的每种语言的键值对的文件,并相应地命名它们,例如 _en、_fr 等。

      那么你所要做的就是向这个方法发送一条消息:

      NSLocalizedString(@"myKey", nil)
      

      这将返回本地化的字符串,无论当前 iPhone 配置是什么语言。

      【讨论】:

        【解决方案4】:

        您可以在此处阅读该过程的分步教程:

        iPhone Localization Tutorial

        这是对基础知识的高级概述(上面的教程有详细信息):

        1) 更改所有编码字符串以调用:NSLocalizedString(@"My text", @"Context for the translator")

        2) 使用genstrings Terminal 命令导出所有字符串。

        3) 这将创建一个名为 Localizable.strings 的文本文件,其中包含所有英文(源)字符串。它看起来像这样:

        /* Context for the translator */
        "My text" = "My text";
        

        您将该文件发送给翻译人员。他们会这样翻译右侧:"My text" = "Mi texto";

        4) 您将每个翻译后的 Localizable.strings 文件放在其适当的语言文件夹中:en.lprojfr.lprojes.lproj

        当您的应用在 iPhone 上加载时,它会检查用户的语言设置。如果用户选择法语作为系统语言,您的 fr.lproj 文件夹文件中的 Localizable.strings 将加载。如果有任何未翻译的字符串,则默认为英语(或任何您的源语言)。

        值得关注整个教程并注意文件/文件夹名称必须准确!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多