【问题标题】:How to select an storyboard programmatically?如何以编程方式选择故事板?
【发布时间】:2012-06-08 09:52:09
【问题描述】:

我有一个支持 3 种不同语言的 iOS 5 应用。本地化情节提要会创建每种语言的副本,并且必须翻译每个副本。

语言选择取决于系统设置,因此如果我的 iPhone 将“英语”作为系统语言,我的应用程序中选择的情节提要将是英语版本。如果我更改为加泰罗尼亚语,我的应用会显示加泰罗尼亚语单词。

我认为这种方法有几个缺点:

  • 应用程序无法翻译成 Apple 不支持的语言。这对于单一语言可能很重要(直到 iOS 5 才支持加泰罗尼亚语)。

  • 如果用户希望我的应用程序使用加泰罗尼亚语,但系统的其余部分使用英语?

所以我的问题是如何在应用启动时选择故事板语言?有可能吗?它也适用于使用 NSLocalizedString 本地化的字符串?

问候, 琼巴

【问题讨论】:

    标签: ios localization storyboard


    【解决方案1】:

    您似乎可以将故事板拆分为本地化版本,就像本地化.strings 一样,如何做到这一点?

    This question之前已经回答过了,虽然我没有尝试过。

    【讨论】:

      【解决方案2】:

      在阅读了 Jacob 的答案并进行了一些测试之后,这是对我有用的代码:

          int main(int argc, char *argv[])
      {
          NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
          // Reset system defaults to get the complete language list.
          [defaults removeObjectForKey:@"AppleLanguages"];
          // Default language choosen by user.
          NSString *defLanguage = [defaults objectForKey:@"Language"];
          NSArray *sysLangugages = [defaults arrayForKey:@"AppleLanguages"];
          // System default language: first element of array.
          NSString *sysLanguage = [sysLangugages objectAtIndex:0];
          NSArray *array = [NSArray arrayWithObjects:defLanguage, sysLanguage, nil];
          [defaults setObject:array forKey:@"AppleLanguages"];
      
          @autoreleasepool {
              return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
          }
      }
      

      更改默认语言后重新启动应用程序,所有本地化资源都会更改:字符串和情节提要。

      还在 AppDelegate.m 中尝试过这段代码,方法:

      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      

      但它不起作用。只有在 main.m 中才能正常工作。我不知道为什么。

      请注意,使用此代码,您可以拥有 iOS 不支持的语言的应用程序。

      问候,

      乔安巴

      【讨论】:

      • 可能是因为它在达到 didFinishLaunching 时加载了信息。很高兴我能帮上忙!
      猜你喜欢
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      • 2015-03-15
      相关资源
      最近更新 更多