【问题标题】:Java Message Properties choice for languages reading from right to left从右到左阅读语言的 Java 消息属性选择
【发布时间】:2019-05-13 07:09:39
【问题描述】:

我的应用程序需要支持大约 30 种语言。我为每个人提供了一些相当简单的文本,但是在该文本中,我确实需要使用 {0, choice, 0# ...|0<...> 做出一个选择

目前我什至还没有测试这是否有效,因为我在说服我的文本编辑器允许我从左到右和从右到左组合文本时遇到了很多麻烦,但我真正想要的是知道这是否可能......

问题:是否可以将 Java 消息属性嵌入选项与从右向左流动的语言一起使用。

如果有人能想到任何其他标签可用于此问题,我将不胜感激。

【问题讨论】:

  • 我不是 100% 确定您是否想拥有类似 this 的东西。可能这可能会导致您找到解决方案。
  • 你能不能 a) 展示一个例子 b) 告诉我们你的编辑器是什么。听起来您的编辑器很难使用像 {}choice 这样的 LTR 字符穿插 RTL 文本?可能是时候寻找更好的编辑器了。

标签: java properties-file


【解决方案1】:

简短的回答是肯定的,这是可能的。这是一个棘手的问题,但 BIDI(双向)支持是文本编辑器的问题,而不是您的问题。因此,如果您的文本编辑器支持它(大多数编辑器都支持),那么它是可能的。首先,您必须确保使用支持多种语言的编码(字符集) - 推荐使用 UTF-8(但也推荐使用 UTF-16,并且可能其他一些可能有效)而不是 ISO-8859-X(其中 X是一位数),仅支持 2 种语言。您还可以将字符串作为 unicode 序列写入属性文件或代码中的任何位置。

有一个开源 java 库 MgntUtils 有一个实用程序,可以将任何语言的字符串(包括特殊字符和表情符号转换为 unicode 序列,反之亦然:

result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);

这段代码的输出是:

\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World

该库可以在Maven CentralGithub 找到它作为 maven 工件并带有源代码和 javadoc

这是StringUnicodeEncoderDecoder类的javadoc

【讨论】:

  • 感谢您的回答,但我正在使用 native2ascii,正如在提交给 cmets 中链接的问题之一的答案中所推荐的那样。您认为(据您所知)两者之间存在显着差异吗?我确实喜欢 native2ascii 将 ascii 字符保留为 ascii,使这些字符对我(西方人)可读。
  • 工具做同样的工作,但是我推荐的库可以集成到你的java代码中,这样你就可以在你的代码中转换回和强制文本。 MgntUtils lib 还允许您保留字符串的两个版本。不知道native2ascii是否可以集成到代码中,还是只能作为外部工具使用。我建议尝试 MgntUtils,然后选择更适合您的需求
  • 只是稍微了解一下 native2ascii。这是转换为文件的命令行工具。 MgntUtils StringUnicodeEncoderDecoder 类提供在您的代码中使用的相同功能。基于该类,编写命令行工具也很容易,但由于 native2ascii 已经存在,我认为没有必要。所以我猜这些工具是相同的,但 native2ascii 是命令行工具,而 MgntUtis 是编程等效的,可以在您的代码中提供相同的功能
猜你喜欢
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 2014-10-05
相关资源
最近更新 更多