gpt4 book ai didi

Android 希伯来语 (RTL) 集成

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:55 30 4
gpt4 key购买 nike

我正在开发一个相对简单的 Android 应用程序。我希望它有英文版和希伯来文 版。 (RTL 从右到左对齐)

我已在布局 xml 文件中手动将对齐方式更改为右对齐。当一个句子包含数字时(在它的中间),数字出现在镜像 View 中:29 显示为 9221:45 显示为 54:122,000 显示为 000,2

此外,当一个句子以数字或英文字符开头时,它们会被扔到句子的末尾,把它弄得一团糟。

我认为 android 版本 4.0.3 支持希伯来语。我已经在模拟器中检查过了。

那么对于旧版本是否有正确的方法来实现希伯来语?请帮忙。

最佳答案

我认为Android 的bidi 分析算法存在一些缺陷。 Unicode 有两个不可见的强方向字符,可能有助于解决这些问题:

  • U+200E - 从左到右的标记
  • U+200F - 从右到左的标记

对于数字顺序问题,尝试在数字序列的两侧放置从左到右的标记 (U+200E)。

Unicode 还具有以下双向格式代码:

  • U+202A - 从左到右嵌入
  • U+202B - 从右到左嵌入
  • U+202C - 弹出定向格式化(取消之前的嵌入或覆盖)
  • U+202D - 从左到右覆盖
  • U+202E - 从右到左覆盖

对于希伯来语文本中英文 fragment 的问题,可能很简单,就是在英文前面加上一个从右到左的标记。 (Android 的算法可能给人的印象是段落是从左到右的,因为第一个字符是英文。)如果这不起作用,也许可以尝试使用格式代码的某种组合包围选定的文本。 (我会尝试从左到右嵌入,然后是弹出方向格式化。我还会尝试从右到左嵌入所有内容,并结合选择性显式从右到左嵌入。)

这些影响文本布局的方式由 Unicode 双向算法定义 Unicode Standard Annex #9 .然而,如果 Android 的实现被破坏(我怀疑它是),你能做的最好的事情就是反复试验,直到你找到正确的东西。祝你好运。

编辑

就代码而言,这里是一个如何用 Java 完成的示例:

String text = "גרסה \u200e2.100\u200e זמינה";

在 XML 中,它可能是:

<string name="update_available">גרסה &#x200e;2.100&#x200e; זמינה</string>

关于Android 希伯来语 (RTL) 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10975176/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com