假设我的应用程序支持English
,Spanish
和French
,项目中包含以下文件夹结构:
root/
res/
values/
strings.xml
values-es/
strings.xml
values-fr/
strings.xml
我如何动态检测到该应用是否支持其他语言支持?
虽然我认为这部分几乎是不可能的,但我会试一试......
在更深层次上, IF 可以实现我之前提到的,有没有办法去全面潜水在它上面并检测应用程序中支持给定语言的程度?
以前抓住这个例子,让我说我有这个:
root/
res/
values/
strings.xml
title: Title
message: Message
random_message: This is a random message.
values-es/
strings.xml
title: Título
message: Mensaje
random_message: Este es un mensaje aleatorio.
values-fr/
strings.xml
title: Titre
random_message: Ceci est un message aléatoire.
我能在多长时间内检测到应用完全支持Spanish
,但French
有1个或更多缺少的翻译?
背景
我正在尝试开发一个设置页面,用户可以在其中设置应用程序的语言。为了避免可能的缺少语言(例如:我有strings.xml
阿拉伯语,但它不在列表中)或语言可以选择但是全部用英语设置(例如:我在列表中有韩语,但strings.xml
不存在),我想让这个变得动态。
这样,我只需添加文件夹和strings.xml
,应用程序就会检测到支持的语言。
答案 0 :(得分:0)
请记住, app 所拥有的- (void)updateInfoCenterWithTitle:(NSString *)title andArtist:(NSString *)artist andCover:(UIImage *)cover
{
if (cover == nil) {
cover = [UIImage imageNamed:@"defaultCover"];
}
MPNowPlayingInfoCenter *infoCenter = [MPNowPlayingInfoCenter defaultCenter];
[infoCenter setNowPlayingInfo:@{MPMediaItemPropertyTitle:title,
MPMediaItemPropertyArtist:artist,
MPMediaItemPropertyArtwork:[[MPMediaItemArtwork alloc] initWithImage:cover]}];
}
文件夹会被您使用的库中的values-...
文件夹扩充。您的应用无法在运行时区分这些内容。
如果您想以不同方式处理资源目录(应用程序中的那些)的特定集,则需要在编译时自行处理。例如,您可以编写一个自定义Gradle任务,迭代这些目录,确定您支持的语言环境,并在某处写入该信息(自定义字符串数组资源,自定义Java类,可能 {{1}如果你可以正确的语法)。然后,在运行时,您可以使用此生成的列表作为应用程序代码支持的语言列表。