问题标签 [messageformat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
internationalization - 使用带有消息格式的选择
我在 PHP 中使用MessageFormat(intl
扩展的一部分)。该扩展使用 ICU 4.6.1。
但是,问题不在于 PHP。
我想通过对第一个令牌做出决定来格式化一段字符串{0}
:
- 什么时候,文本应该
{0}
是0
a
- 如果是
1
,文本应该是b
- 对于所有其他情况,文本应为
c
我知道这可以用plural
,=0
来完成0
,但是通过我的测试,它似乎不起作用,很可能是因为在 4.8 中引入了偏移量和自定义复数。
因此,我正在尝试使用select
:
但是,由于某种原因,消息格式化程序无法格式化上述内容并返回false
(无法格式化)。
为什么会这样?我的语法有问题吗?
快速更新:经过一番挖掘,似乎我无法使用 select 来匹配以数字开头的值。有没有办法解决这个问题?
另一个更新:更新到 ICU 49.1.2 和intl
3.0.0a2。我现在可以使用=0
,=1
等,但这已停止工作(以前工作过):
这在哪里起作用:
java - 如何使用 JTable 使用 MessageFormat 打印多个标题行
我有一个名为的表table
,其中填充了数据,我还有一个MessageFormat
标题我想用作标题来打印JTable
这是MessageFormat
:
我想在标题中打印 3 行,一行用于 Product、Job 和 Task
我打印的方式table
是这样的:
我似乎无法弄清楚如何在 3 个单独的行中打印标题,我尝试使用\n
创建一个新行,但这似乎不起作用。
jsf - 使用消息包的 JSF 本地化和多元化
我正在使用消息包来本地化我的应用程序的输出。现在我想添加复数形式,我想知道是否有办法通过使用消息属性文件和消息参数来实现这一点?
像这样的东西:
以导致:
0个豆子,1个豆子,2个豆子,...
该格式label.bean={0} bean
当然适用于计数,但是如何根据 的值获得复数“s” {0}
?
java - {0} 和 {0,number,integer} 有什么区别
我试图更多地了解 Java 的MessageFormat实用程序,在我们的代码库和其他地方的示例中,我看到了两者{0}
并被{0,number,integer}
用于数字,但我不确定哪一个更可取。
快速测试打印差异:
输出:
这让我感到惊讶,如果有什么我会预料{0}
到不会对这个数字做任何事情,{0,number,integer}
而是为了正确地对其进行本地化。相反,两者都被本地化,但似乎显式形式总是使用 en_US 本地化。
根据链接的文档,{0}
当NumberFormat.getInstance(getLocale())
显式表单使用NumberFormat.getIntegerInstance(getLocale())
. 然而,当我直接调用它们(输出中的最后一列)时,它们看起来都相同,并且都正确定位。
我在这里想念什么?
java - 消息格式不起作用
我无法理解为什么我使用时消息格式不适用于此字符串html.format({"something","someotherthing"});
java - Java MessageFormat - 替换索引处的值
我有一个这样的字符串:
需要先替换第 0 和第 3 索引处的值。稍后,第一个和第二个索引将被替换(在已经部分格式化的字符串上)并最终使用。
我玩了一下ChoiceFormat但无法使用MessageFormat类来实现我想要的。
欢迎任何指点!
java - 正确复数的 Java 国际化 (i18n)
我打算将 Java 的标准 i18n 系统与 ChoiceFormat 类一起用于复数,但后来意识到它不能处理某些语言(例如波兰语)的复杂复数规则。如果它只处理类似于英语的语言,那么它似乎有点毫无意义。
有哪些选择可以实现正确的复数形式?使用它们的优点和缺点是什么?
java - LogBack 使用 MessageFormat
是否可以在 logback 中使用 MessageFormat ?
我看到它使用 slf4j MessageFormat ter,因为它比这里所说的更快: 出于好奇——为什么日志 API 不实现类似 printf() 的日志方法?
SLF4J 使用自己的消息格式化实现,这与 Java 平台的不同。这是合理的,因为 SLF4J 的实现速度提高了大约 10 倍,但代价是非标准和不灵活。
想法是像这样使用 MessageFormat 的完整堆栈功能:
任何人 ?
php - MessageFormat 字符串中的参数可以是可选的吗?
我正在使用MessageFormatter类来格式化翻译后的字符串以显示给最终用户。
问题是我还需要在最终结果中插入一些 html 标记。例如,字符串可能只是Peter liked a photo
,但是,我需要最终结果包含标记:
经过大量研究,特别是这些问题
我决定使用这种方法:
在哪里:
这工作得很好,除了有点麻烦。但是,我不想将标记包含到资源包字符串中的主要原因是,有时我希望返回的字符串不包含 HTML 标记。
问题是,如果我只是将 1 个参数 (Peter) 传递给MessageFormatter
,它会抱怨我缺少参数。
我可以做的一种解决方法是传递这个({1}
to{5}
将是空字符串):
但是,这非常麻烦并且不是很好。
无论如何我可以在消息格式字符串中将参数标记为可选(本质上,只是忽略参数,如果它的值没有传入)?