格式化具有多个值的本地化字符串

时间:2018-07-16 19:59:11

标签: swift localization

我创建了一个本地化字符串,其格式类似于

cols_of_interest <- c("A", "B")
tbl <- table(df)[, cols_of_interest]

rowSums(tbl)
#1 2 3 4 5 
#2 1 1 1 2

unname(which(rowSums(tbl) == length(cols_of_interest)))
#[1] 1 5

,并且正在使用以下格式程序:

"text_key" = "Collected %d out of %d";

哪个给

let numberOfItems = 2
let totalNumberOfItems = 10
let format = NSLocalizedString("text_key", comment: "Says how many items (1st var) were collected out of total possible (2nd var)")
let text = String.localizedStringWithFormat(format, numberOfItems, totalNumberOfItems)

但是我可以想象,在某些语言中,使这些值以不同的顺序出现会更自然,从而导致出现非理性的字符串,例如

"Collected 2 out of 10"

我找不到使用标准Swift库(例如

)对此进行编码的简单方法
"Out of a possible 2 items you collected 10"

,随着添加更多的值,可以看到这种繁琐的硬编码。

1 个答案:

答案 0 :(得分:2)

String.localizedStringWithFormat()与“位置参数”一起使用 %n$。就您而言

"text_key" = "Out of a possible %2$d items you collected %1$d"

可以解决问题。

这些内容记录在fprintf中:

  

可以将转换应用于参数列表中格式之后的第n个参数,而不是下一个未使用的参数。在这种情况下,转换说明符字符%(请参见下文)由序列“%n $”代替,其中n是[1,{NL_ARGMAX}]范围内的十进制整数,给出了参数在参数中的位置清单。