iPhone/iOS:如何获取我的应用程序本地化所用的所有语言的本地化字符串列表?

发布于 2024-11-14 19:34:14 字数 305 浏览 3 评论 0原文

我需要向我的服务器发送特定字符串的本地化列表。

意思是,如果我的应用程序有一个字符串 Foo,其英语本地化为 @"Foo",俄语本地化为 @"Фу",我想向服务器发送一个如下列表:

  • String Foo:
    • 英语:“Foo”
    • 俄语:“Фу”

我认为我需要做的是:

  1. 枚举我的应用程序本地化的每种语言的本地化字符串
  2. 获取每种语言的 Foo 的本地化版本

我该怎么做(1)以及我该怎么做(2)?

I need to send my server a list of localizations for a particular string.

Meaning, if my app has a string Foo which is localized as @"Foo" in English and @"Фу" in Russian, I'd like to send the server a list such as this:

  • String Foo:
    • English: "Foo"
    • Russian: "Фу"

What I think I need to be able to do is:

  1. Enumerate localized strings for each language my app is localized for
  2. Get the localized version of Foo for each language

How do I do (1) and how do I do (2)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

思念满溢 2024-11-21 19:34:14

您可以通过以字典形式读取 English.lproj/Localized.strings 并获取其键来检索所有字符串键:

NSString *stringsPath = [[NSBundle mainBundle] pathForResource:@"Localizable" ofType:@"strings"];
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:stringsPath];

要获取每种语言的翻译,您可以迭代每个英语键的语言并使用 NSLocalizedStringFromTableInBundleNSLocalizedStringFromTableInBundle:

for (NSString *language in [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]) {
    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]];
    NSLog(@"%@: %@", language, NSLocalizedStringFromTableInBundle(@"Testing", @"Localizable", bundle, nil));
}

You can retrieve all of the string keys by reading in English.lproj/Localizable.strings as a dictionary and fetching its keys:

NSString *stringsPath = [[NSBundle mainBundle] pathForResource:@"Localizable" ofType:@"strings"];
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:stringsPath];

To get each language's translation, you can iterate over the languages for each English key and use NSLocalizedStringFromTableInBundle:

for (NSString *language in [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]) {
    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]];
    NSLog(@"%@: %@", language, NSLocalizedStringFromTableInBundle(@"Testing", @"Localizable", bundle, nil));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文