gpt4 book ai didi

ios - 后备语言 iOS(具有不完整的 Localizable.strings 文件)

转载 作者:IT王子 更新时间:2023-10-29 08:16:10 27 4
gpt4 key购买 nike

我有一个本地化为 16 种语言的 iOS 项目。只有一些词没有本地化(主要是那些进入更新和本地化办公室没有及时交付的词)。对于我的 key ,我使用英文措辞,因为如果翻译人员愿意,这也可以更改。所以现在如果我只是没有一种语言的翻译,如果回退到我使用的 key 。但是由于这个 key 不是“人类可读的”或者至少不是“人类阅读愉快”的,所以这是一个问题。

我做了一些研究,但找不到我的确切问题的解决方案。我有:

Localizable.strings in en.lproj
@"Key1" = @"Value 1"
@"Key2" = @"Value 2"

Localizable.strings in de.lproj
@"Key1" = @"Wert 1"
// Note that @"Key2" is missing here in my de.lproj

I would expect that if I make NSLocalizedString(@"Key2", ...)
and am running on a german phone, it falls back to the english
translation for this key as it exists...

所以现在我只是将英文翻译复制到丢失的 Localizable.strings 文件中。但这是一个大黑客!但是也使用英文单词作为键对我来说似乎是一种破解!

有什么方法可以告诉我的应用它应该使用 f.e.如果给定键没有值,英语作为后备?我尝试添加基本本地化,但这没有帮助...

非常感谢

最佳答案

据我所知,没有“官方”的方法可以做到这一点,但我以前实现过这样的功能:

NSString * L(NSString * translation_key) {
NSString * s = NSLocalizedString(translation_key, nil);
if (![[[NSLocale preferredLanguages] objectAtIndex:0] isEqualToString:@"en"] && [s isEqualToString:translation_key]) {
NSString * path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
NSBundle * languageBundle = [NSBundle bundleWithPath:path];
s = [languageBundle localizedStringForKey:translation_key value:@"" table:nil];
}
return s;
}

借自:https://stackoverflow.com/a/8784451/1403046

基本上,这个版本将在必要时回退到英语,而不是返回输入字符串的 NSLocalizedString()。

关于ios - 后备语言 iOS(具有不完整的 Localizable.strings 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20196607/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com