【问题标题】:IOS application change language with custom settings screenIOS 应用程序更改语言与自定义设置屏幕
【发布时间】:2012-08-13 07:59:55
【问题描述】:

我开发了多语言、基于导航控制器的应用程序。应用程序的主菜单也有下面的设置屏幕。用户可以通过按下语言按钮更改为应用程序语言。当用户更改语言时,我想刷新主菜单屏幕并设置屏幕语言但我没有。

【问题讨论】:

    标签: iphone ios localization multilingual


    【解决方案1】:
    NSString *path = [[NSBundle mainBundle] pathForResource:@"nl" ofType:@"lproj"];
    NSBundle *bundle = [NSBundle bundleWithPath:path];
    NSString *englishWord = @"translate";
    NSString *translation = [bundle localizedStringForKey:englishWord value:englishWord table:nil];
    NSLog(@"%@ = %@", englishWord, translation);
    

    // nl.lproj/Localizable.strings:
    "translate" = "vertaal"
    

    【讨论】:

    • 这是工作,谢谢 basvk。但是我使用了 NSLocalizedString() 方法所有的本地化标题。我可以改变你说的吗?
    • 创建一个简单的类,该类将使用正确的语言(@"nl"、@"de"、@"fr" 等)和另一个返回翻译单词的方法进行初始化。你必须用你的新类替换所有的NSLocalizedString() 函数调用。 (查找和替换)
    • 正是我需要的,谢谢,简单明了。出于一个奇怪的原因,我们的客户坚持要更改应用内语言,这让我很头疼
    【解决方案2】:

    请记住,Apple 不鼓励在应用中选择语言。最好的解决方案是只本地化你的视图并使用 NSLocalizableString,让应用中的语言跟随手机设置的语言。

    【讨论】:

      【解决方案3】:

      在 AppDelegate 中创建一个方法(返回从 plist 加载的语言字符串的字典)。 每当用户选择一种语言时,相应地设置 NSUserDefaults,并在应用程序委托中调用该方法。 现在在每个控制器的 viewWillAppear 中使用此方法并获取所需的语言字典并加载您的视图。

      -(NSMutableDictionary*)getCurrentLanguageDictionaryFromResource
      {
          NSString *defaultPath;
          defaultPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@.plist",[self getAppCurrentSettingsLanguage]] ofType:nil];
          if(languageDictionary !=nil)
          {
              [languageDictionary release];
              languageDictionary=nil;
          }
          languageDictionary  = [[NSMutableDictionary alloc] initWithContentsOfFile:defaultPath];
      
      
          return languageDictionary;
      }
      

      【讨论】:

        【解决方案4】:

        如果您想更改语言,您需要重新启动应用程序。

        为此,您可以使用本地通知再次重新启动您的应用程序,并向用户显示您的应用程序现在将重新启动的正确消息。

        希望这个描述对你有所帮助......

        【讨论】:

        • 这不是真的。只需使用不同的NSBundle,无需重新启动(我强烈反对这样做)。
        猜你喜欢
        • 1970-01-01
        • 2014-05-22
        • 2015-06-19
        • 2011-11-28
        • 2015-10-05
        • 2013-10-06
        • 2014-11-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多