2012-09-06 53 views
0

我正确地为es(西班牙语),en(英语)和ca(加泰罗尼亚语)设置了本地化。西班牙语和英语是主要的,而辅助语言则像es-xx和en-xx。加泰罗尼亚语是次要的,有es-ca代码。 问题是,如果我用en-us启动应用程序,en.lproj资源被调用,因为en-us不存在。好,直到这一点,但如果我删除加泰罗尼亚语本地化,应该做同样的事情,并加载主要的一个,ES。但是,不会加载它并加载默认的(en)。我错过了什么?谢谢iOS辅助语言本地化

回答

1

我不确定你是以正确的方式建模问题。

删除加泰罗尼亚语(不知道为什么你会删除本地化)的问题是它会回落到西班牙语是否正确?我假设在巴塞罗那和讲加泰罗尼亚语的人也会说西班牙语,但是改变这些用户的语言并不合适。

在我的应用程序中,我提供英语(包括英国,美国),法语,日语和西班牙语。在启动时,我得到用户的首选语言环境,并使用NSDictionary将它们映射到最合适的匹配项,如果找不到匹配项,我将回退到美国英语。例如,如果你住在南非,最接近的英语是英国英语,但如果你住在菲律宾,美国英语更适合。

加泰罗尼亚用户将回退到英语不幸,但在下一版本中,我将让用户从支持的语言列表中指定的首选语言,以及使他们能够在未来退回到西班牙。

尝试使用NSDictionary将用户的语言环境映射到应用程序的可用语言,并查看它是否可以解决您的问题。希望这可以帮助!

+0

嗨杰森,谢谢你的回复。这可能是一个解决方案。您能否提供一个关于如何将用户语言环境映射到可用语言的示例?由于 – Jaume

+0

嗨,这是超级简单真的...你只用用户可能会作为字典键使用,使字典中的值是区域设置您的应用支持的语言环境的字典。所以如果你想将墨西哥西班牙语映射到西班牙的西班牙语,你可能有[mutableDictionary setObject:@“es_ES”forKey:@“es_MX”]; –