据我所知,iOS使用ICU。我想访问ICU的MessageFormat功能,以获取涉及数字和复数的字符串,例如,
There {0,choice,0#are no files|1#is one file|1<are {0,number,integer} files}.
iOS是否公开此功能?如果是这样我该如何使用它?我以为我可以写
[NSString stringWithFormat: "There {0,choice,0#are no files|1#is one file|1<are {0,number,integer} files}.", n];
或
[NSString stringWithFormat: "There {0,plural, =0{are no files}=1{is one file}other{are %ld files}}.", n];
但这些格式(分别是ICU4J和ICU)不起作用。
答案 0 :(得分:1)
iOS与OS X一样,确实包含/usr/lib/libicucore.dylib
。但是,它不是任何操作系统上受支持的公共API。有关如何在OS X上使用它的说明,请参阅this old message。
在iOS上,我想还有一个问题是Apple可能会拒绝您使用不受支持的API的应用程序。
答案 1 :(得分:0)
stringWithFormat的格式规则不包括ICU格式。您需要为这些事情调用不同的函数。 AFAIK iOS不公开与ICU MessageFormat兼容的NSString API。
但是,鉴于您确实可以访问API(通过公开公开或将ICU的自定义版本与您的应用程序捆绑在一起),为了使这种消息格式化工作,ICU库必须能够访问以下资源文件: p>
有关详细信息,请参阅ICU documentation。