为啥我的 UILabel 在使用另一种语言时没有初始化? (iOS 本地化)

Posted

技术标签:

【中文标题】为啥我的 UILabel 在使用另一种语言时没有初始化? (iOS 本地化)【英文标题】:Why is my UILabel not initializing when using another language? (iOS localization)为什么我的 UILabel 在使用另一种语言时没有初始化? (iOS 本地化) 【发布时间】:2013-05-16 04:11:55 【问题描述】:

我正在将本地化应用到我正在开发的 iPhone 应用程序中,并慢慢浏览整个应用程序中的所有文本/字符串/标签,以动态检索通过 Localizable.strings 完成的正确语言翻译 - 我正在测试两个语言以确保其正常工作。自然是英语,还有捷克语。

到目前为止,在这个特殊的 UILabel 之前,我还没有遇到任何问题。

在使用英文版 iPhone 和应用程序时,完全没有问题。但是,当将 iPhone 语言更改为捷克语并测试应用程序时,我的 UILabel 之一甚至不会初始化。如果我强制这样的文本甚至都没有关系:

- (void)viewDidLoad

    [super viewDidLoad];

    NSLog(@"show: %@", self.segmentedControlTitle);

    self.segmentedControlTitle.text = @"test";

    // Other code

基本上,当使用其他语言时,它只会显示情节提要中设置的占位符文本。到目前为止,我设置的所有其他标题即使使用实际的本地化方法也能完美运行;

- (void)viewDidLoad

    // The other code...

    [self.segmentedControl setTitle:NSLocalizedString(@"VIEWALL_all", nil)
                 forSegmentAtIndex:0];

有什么想法吗?如果需要,可以发布更多代码,但我假设一切都正确建立,就好像它都用英语工作一样。它必须是我忽略的一些简单的东西。我试过清理,从模拟器和我的 iPhone 中删除应用程序,再次尝试构建......同样的故事。也发生在同事的 iPhone 上。

提前致谢。 (另外我对 ios 开发者还是有点陌生​​,仅供参考)

戴夫

【问题讨论】:

你能解释一下wont even initialize吗?你的意思是说这个特定的UILabel 不会出现? 当然,抱歉应该指定。我无法设置它的文本属性,因为它为空。我尝试使用 NSLog() 标签来查看我是否得到了一个对象,而我得到的只是“null”——所以我假设它没有初始化。使用英文时,NSLog() 在输出中显示整个对象 您的故事板本地化了吗? 我假设是这样。我有两个故事板实例: MainStoryboard.storyboard (英语) MainStoryboard.storyboard (捷克语) 好的,所以我可以在情节提要本身中为每种语言的标签设置一个静态值。但这不是有点违背了拥有字符串文件的目的吗? 【参考方案1】:

功劳归于 Carl Veazey。您的评论帮助我弄清楚了这一点。

所以我吸取了教训,当您应用本地化时,您实际上也可以将其应用到您的故事板 - 因此为每种语言创建单独的故事板。

所以我的问题是故事板的英文版有 IBOutlet 连接,而捷克语版没有。

因为我将从 Localizable.strings 文件中以编程方式应用所有类似这样的字符串,所以我不需要本地化情节提要 - 我已经删除了捷克语版本并通过代码应用所有内容。无论如何,我认为这是更好的做法。

再次感谢!

【讨论】:

以上是关于为啥我的 UILabel 在使用另一种语言时没有初始化? (iOS 本地化)的主要内容,如果未能解决你的问题,请参考以下文章

为啥在尝试垂直对齐我的 UILabel 时 sizeToFit 不起作用?它只是停留在中心

为啥向下转换在 C++ 中是一种不好的做法,而不是在另一种语言中呢? [关闭]

为啥当我将我的 UILabel 移动到某个点时,当我进入全屏模式时它会被移动?

C语言初练习为啥下面代码编译后没有运行?

编译原理初感悟

为啥这个自定义 UIView 代码不显示 UILabel 的?