在iOS上本地化变量值

时间:2011-06-06 00:51:37

标签: iphone objective-c ios4 localization

我的资源文件夹中有大约72个html文件,我需要对它们进行本地化。现在我用法语翻译了它们。文件选择取决于用户输入,因此文件名由变量创建。现在的问题是如何本地化变量的值。

例如,我在资源文件夹中有以下3个文件。

  1. AAAAA0.html
  2. BBBBB28.html
  3. CCCCC33.html
  4. 我还在资源文件夹中使用法语这些文件。

    1. AAAAA0-French.html
    2. BBBBB28-French.html
    3. CCCCC33-French.html
    4. 这是我的代码在没有本地化的情况下正常工作。


      // ViewController.m File
      
      appDelegate2=[[[UIApplication sharedApplication] delegate] retain];
      NSString *getSign2=[appDelegate2.globalString    stringByAppendingString:appDelegate2.globalindex];
      NSString *filePath=[[NSBundle mainBundle] pathForResource:getSign2 ofType:@"html" ];
      

      如果用户输入导致选择AAAAA0.html,则globalString将为“AAAAA”,globalIndex将为“0”,getSign2将为“AAAAA0”。

      如果用户输入导致选择BBBBB28.html,则globalString将为“BBBBB”,globalIndex将为“28”,getSign2将为“BBBBB28”。

      如果用户输入导致选择CCCCC33.html,则globalString将为“CCCCC”,globalIndex将为“33”,getSign2将为“CCCCC33”。

      现在我已经有了一个Localizable.string文件,我的.xib文件已经本地化(所有标签,图像和日期选择器等)。

      如果用户语言为法语,我想将getSign2的值从AAAAA0.html更改为AAAA0-French.html。同样,它应分别改为BBBB28-French.html和CCCC33-French.html,分别为BBBB28.html和CCCC33.html。

      我应该在localizable.string中添加什么来执行此操作?我应该在ViewController.m文件中做出什么改变?


      我知道我可以使用以下

      NSLocale *locale=[NSLocale currentLocale];
      NSString *currentlocale =[locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier]];
      NSLog(@"Complete Locale: %@",currentlocale);
      
      if (currentocale==@"French") {
      
          NSString *getSignNew=[getSign2 stringByAppendingString:@"-French"];
          NSString *filePath=[[NSBundle mainBundle] pathForResource:getSignNew ofType:@"html" ];
      }
      

      但是这个方法检查了ViewController.m文件中的条件,而我在localizable.string中完成了所有其他与本地化相关的编码。我提交申请时会引起问题吗?如果这不是正确的解决方案,那么请告诉我如何解决这个问题。

      请尽快回复。

      感谢。

1 个答案:

答案 0 :(得分:2)

本地化文件应该放在如下结构中:

Your.app/
  English.lproj/
    AAAAA0.html     // English localized file
    ....
  French.lproj/
    AAAAA0.html     // French localized file
    ...
  zh_TW.lproj/
    AAAAA0.html     // Chinese localized file
    ...

然后-pathForResource:ofType:将自动查找与当前区域设置匹配的正确文件。