问题标签 [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.
java - 如何转义 MessageFormat 模式字符串中的 { 字符?
我有一个如下的字符串。
ABC {A WELL-KNOWN MAGICIAN} 将在 {0} 表演 {1} 小时。
第一对花括号没有占位符。当我将此字符串传递给 MessageFormat.format(String, Object[]) 方法时,对象数组包含两个字符串以替换占位符 {0} 和 {1},我收到以下错误。
java.lang.IllegalArgumentException:所有参数标识符必须是非负数或遵循模式 ([:ID_Start:] [:ID_Continue:]*) 的字符串。
似乎正在为第一个占位符解析第一对大括号,并且由于它不是有效的占位符,因此会发生错误。
如何告诉 MessageFormat.format 忽略第一对花括号并与另外两个一起使用?
java - Java MessageFormat 空值
在 Java MessageFormat 中处理空值的最佳方法是什么
但实际上“价值:”会很好。
与日期相同
一个“价值:”会更受欢迎。
有没有办法做到这一点?我试过选择
这导致选择格式无效,检查“null”或“not null”的正确方法是什么?
javascript - Meteor 本地化/i18n 库比较
我正在尝试评估使用哪一个,因此将不胜感激做出此决定的其他人的任何反馈。似乎有两个大的翻译项目:
消息格式
http://messageformat.meteor.com/
优点
- 基于 MessageFormat.js 的大量库
- 包括提取工具
- 处理模糊字符串和版本,如果字符串在应用程序中更新
- javascript 和车把方法
- 用于字符串翻译的预构建翻译工具/webUI http://messageformat.meteor.com/translate/af
- 由 Gadi 撰写,流星大师活跃社区人士
TAP i18n
笔记:
- 基于 i18next 引擎
- 使用 AJAX 加载语言
优点
- 引导程序/语言选择器的助手
- 对包的支持
- 支持数据库集合翻译 https://github.com/TAPevents/tap-i18n-db)
缺点?- 只有 JSON 格式,没有 yaml,编辑起来很乏味 - 没有用于管理字符串的 webUI
还有一些其他项目,例如https://github.com/Nemo64/meteor-translator 但上面两个似乎是最彻底的。我错过了其他人吗?
人们在选择正确的工具时还使用了哪些其他标准?messageFormat 与 i18next 的底层技术似乎是一个因素。
问题:
1)页面中的多种语言
我正在尝试做一个双语应用程序,但是:
点击:“仅通过网络发送当前客户语言所需的翻译”
这是否意味着语言只能是 A 或 B,而不是混合,基于会话自动切换?
即如何在页面中提供帮助以进行多种翻译
2)提取动态数据
至少 messageFormat 项目将在静态页面中捕获/提取字符串,但是如果我在复杂的 mongo 集合中已经有很多内容,有没有办法捕获这个?
感谢包创建者或该领域其他人提供的任何见解。
java - 如何以全精度输出本地化的 Java 浮点值?
如果我使用该方法格式化双toString
精度,那么我将获得双精度。例如(使用Scala语法):
将产生一个包含以下内容的字符串:
但是,此值未本地化。如果我将 double 值作为 boxed 传递Double
,则为:
(是等效于JavaAnyRef
中的Scala类型),则结果是具有截断精度的本地化字符串:Object
即使我向格式字符串添加更多提示,结果也是一样的:
我可以通过指定自定义格式来获得完整的精度:
但这需要对双精度的大小和精度有所了解。如果我正在打印任何双精度值(不仅仅是Pi),并且想要保留该值的完整精度,那么这种方法意味着我必须动态更改格式字符串 - 如果(在我的情况下)这并不完全方便) 格式字符串实际上是从资源包中获取的。
例如,考虑 的双精度值1.0e37
。首先转换为字符串并使用“{0}”作为格式字符串会产生适当但未本地化的字符串值1.0E37
。如果我将其作为Double
格式字符串“{0,number}”的框传递,那么我会得到荒谬的值10,000,000,000,000,000,000,000,000,000,000,000,000
。
简而言之,如果不首先将其转换为字符串,我似乎无法找到一个保留双精度的格式字符串 - 这是我宁愿避免像瘟疫一样的事情。是否有数字格式字符串将双精度的完整精度输出为本地化值?
更新:
只是为了澄清为什么我不想将双打转换为字符串:
toString
返回,据我所知,一个有效的Java双字面值。作为一个字符串,结果在传递给MessageFormat.format
. 例如,假设我想输出 value 的本地化形式1234.567
。toString
会返回"1234.567"
,并MessageFormat.format
会离开它。美好的。我有我的精确输出。但是,在德国,如果它显示为"1.234,567"
. 即使在美国/英国,如果它显示为"1,234.567"
.- 如果我将 boxed
Integer
、Boolean
或任何其他非浮点原始类型传递给MessageFormat.format
(使用简单的“{ n }”格式),那么我会得到很好的本地化、全精度输出。我不需要——也不应该——因为我会丢失本地化输出——首先将这些值转换为字符串。这意味着我必须以BigDecimal
不同的方式处理双精度数(以及浮点数和 s),并将它们转换为字符串,然后再将它们传递给MessageFormat.format
. (此外,我必须记住每次都这样做。)
java - 有没有用java MessageFormat写消息的原则,避免转义大括号或引号引起的错误?
我在几个项目中使用 MessageFormat 时遇到问题。在基础项目中,我们使用消息格式来构建警告消息,例如:
在另一个项目中,我使用基础项目做某事,并将使用来自基础项目的消息记录消息。
在基础项目中,警告输入是转义大括号 {。所以消息是“字符({)的例外”。第二个项目中的消息是“请求成功,但来自基础项目的警告:[ char ({) 的异常。]。”
但是,如果我们在第三个项目中使用第二条消息,它会抛出异常
我想知道是否有原则可以避免 MessageFormat 出现此类异常。需要我们对带有输入的最终错误消息做些什么。使错误消息在另一个 MessageFormat 处理中可用。
解决方法是替换最终错误消息中的特殊字符。那么当另一个项目需要引用该消息时,也不例外。
或者,是否不建议引用其他项目的消息?
项目 C 中的代码。
java - 如何从java中生成的模式中获取原始代码?
假设我有java.util.Set<String>
其中"200Y2Z", "20012Y", "200829", "200T2K"
遵循相同的模式"200$2$"
,"$"
占位符在哪里。现在哪种方法是从 Java 中的此类字符串中获取唯一代码集的最有效方法?
输入:java.util.Set<String>
的"200Y2Z", "20012Y", "200829", "200T2K"
预期产出:java.util.Set<String>
的"YZ", "1Y", "89", "TK"
我的尝试::
它工作正常,但是有没有比这更有效的方法来实现它?我需要为超过 1000K 的代码执行此操作。
java - messageFormt() 多维数组出错
您好,我正在尝试运行我的程序,但我得到了一个非常奇怪的输出。该程序在其单个数组时有效,但是当我将其设为多维时,它会出错。请帮忙
我的输出是:
java - 有没有办法在 ICU MessageFormat 和 Gettext Po 之间进行转换?
我一直在寻找转换器,但没有找到。在 Javascript 世界中,ICU 的 MessageFormat(带有 CLDR 复数形式)似乎赢得了人们的关注。
但 iOS 和 Android 等其他平台有自己的本地化格式。Gettext 的 .po 是一种较旧的格式,可以转换为许多这些格式并返回
是否有任何语言的转换器可以从 MessageFormat 转换为 Po 并返回?
wso2 - 如何在 wso2 ESB 中接受未形成的请求 xml 消息
我正在使用 wso2esb 4.8.1,所以我的客户端正在发送如下所示的未形成的 xml。
在上面的请求中, xsi前缀命名空间没有被声明所以它在 wso2esb 服务器中给出如下错误。
它是一个属性,因此他们没有为此声明任何名称空间。 在 java.lang.Thread.run(Thread.java:744) 引起:org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException:ParseError at [row,col]:[4,41] 消息:http ://www.w3.org/TR/1999/REC-xml-names-19990114#AttributePrefixUnbound?r:user&xsi:type&xsi
如何在 wso2esb 中禁用 xml 验证,或者我将如何处理这种消息,如果我声明命名空间它工作正常,但我的旧系统没有在其他 ESB 相同请求工作正常的地方发送这个。
我尝试使用 Http、NHttp 传输更改axis2文件中的不同消息构建器。
提前致谢。