为啥我的 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++ 中是一种不好的做法,而不是在另一种语言中呢? [关闭]