【问题标题】:Setting default language for iPhone app on first run首次运行时为 iPhone 应用程序设置默认语言
【发布时间】:2010-05-31 12:57:59
【问题描述】:

我正在开发一个应支持两种语言的应用程序:英语和法语。但是,由于尚未完成英文翻译,我们只想将其部署为法文,稍后再添加英文翻译。

问题是我不想从我的代码中去除英语,因为某些部分已经完成,该语言有不同的 NIB 等。相反,我只想在我的代码中暂时禁用英语应用程序。

我所做的是我把这段代码作为第一条指令

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

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSArray arrayWithObjects:@"fr", nil] forKey:@"AppleLanguages"];
[defaults synchronize];

除了一件事,它工作正常。安装后第一次启动应用程序时,它仍然是英文的。这可能是因为尚未为其设置 AppleLanguages 首选项。在我退出应用程序并重新启动后,它以法语正确显示。

有谁知道在第一次运行时也应用了法语的修复方法?

【问题讨论】:

    标签: iphone internationalization


    【解决方案1】:

    我遇到了同样的问题,我可以解决它的唯一方法是在应用程序的最早阶段拥有这段代码,即在 main.c 中:

     int main(int argc, char *argv[]) {
    
         NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
         [defaults setObject:[NSArray arrayWithObjects:@"fr", nil] forKey:@"AppleLanguages"];
         [defaults synchronize];
    
         int retVal = UIApplicationMain(argc, argv, nil, nil);
    
         [pool release];
         return retVal;
     }
    

    我不确定这是一个好的做法,但在我的情况下它按预期工作。

    【讨论】:

    【解决方案2】:

    听起来很乱。为什么不直接从目标中取消选中未完成的英语资源,这样它们就不会被部署?另外,您是否查看过 Info.plist 中的 CFBundleDevelopmentRegion 设置?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 2015-04-26
      相关资源
      最近更新 更多