【问题标题】:iPhone localization for xib filesxib 文件的 iPhone 本地化
【发布时间】:2011-04-11 20:18:04
【问题描述】:

我刚刚熟悉 xib 文件的本地化,想知道是否有一种方法可以通过直接引用 plist 来本地化 xib 中的字符串...

欣赏一些想法..

【问题讨论】:

    标签: iphone localization xib


    【解决方案1】:

    我认为直接本地化 xibs 不是一个好选择。我正在使用https://github.com/steipete/Aspects 来挂钩 UILabel 的 awakeFromNib 方法并在那里本地化文本。示例:

     #define Localized(_v_) NSLocalizedString(_v_, nil)
     NSError *err = nil;
    [UILabel aspect_hookSelector:@selector(awakeFromNib)
                     withOptions:AspectPositionAfter
                      usingBlock:^(id<AspectInfo> aspectInfo) {
                          UILabel *label = aspectInfo.instance;
                          NSString *lStr = Localized(label.text);
                          if (lStr) {
                              label.text = lStr;
                          }
    } error:&err];
    

    【讨论】:

      【解决方案2】:

      我的方法有点偏离@Clafou 的答案,但它可能更简单一些。我只是在我的 .h 控制器中为我的按钮和标签字符串(在 xib 上创建)设置 IBOutlets。

       @interface DetailViewController : UIViewController {
      
      
      IBOutlet UILabel *TitleLabelMain;
      
      }
      

      然后转到我的 .m 控制器并使用 NSLocalizableStrings 给这些标签和按钮一个值。

      - (void)viewWillAppear:(BOOL)animated {
      
      TitleLabelMain.text = NSLocalizedString(@"titleLabel",nil);
      

      当然你需要在 Localizable.strings 中定义一个值

      "titleLabel" = "THIS TEXT IS LOCALIZED!";
      

      【讨论】:

        【解决方案3】:

        如果您不想直接本地化 .xib 文件,您可以将它们包含的文本提取到 .strings 文件中,一旦 .strings 文件被翻译,将它们注入您的 .xib 文件以生成本地化版本.这些提取/注入操作是使用ibtool 实用程序完成的。

        我在this website 上找到了有关如何执行此操作的详细说明。

        【讨论】:

          【解决方案4】:

          Apple 建议的方法是将字符串导出到 .lproj 包中的 .strings 文件中,这将由 Cocoa 的本地化框架切换。

          Xcode 可以从 xib 生成 .strings 文件,这使得本地化非常简单。

          在Xcode中右击xib文件,选择Get Info。选择General 选项卡并在底部单击Make File Localizable。然后,您将能够通过单击同一选项卡上的 Add Localization 添加本地化。

          我会推荐 this tutorial 获取分步信息(和漂亮的图片)。

          【讨论】:

          • 谢谢。实际上,我也试图直接将诸如 en_Strings.plist/fr_Strings.plist 之类的 plist 引用为 XIB 字符串。我想避免创建 en_XIB,fr_XIB。
          猜你喜欢
          • 2011-04-24
          • 2012-02-05
          • 1970-01-01
          • 1970-01-01
          • 2013-08-27
          • 2013-10-21
          • 2013-08-16
          • 2016-04-10
          • 2012-11-01
          相关资源
          最近更新 更多