0

我正在为使用此符号的阿联酋设置国际化:د.إ

但是当我将它插入我的 en-UAE.rb 时:

  :currency => {
    :format => {
      :unit => 'د.إ',
      :precision => 2,
      :format => '%u%n'
    }
  }

它产生:

100.00د.إ

我想要的地方:

( i actually can't get the symbol to appear before the number here either.. ) 
4

1 回答 1

2

您的符号IS出现在数字之前!

但是“之前”在 LTR(从左到右)上下文中表示“向左”,在 RTL(从右到左)上下文中表示“向右”。

数字始终显示为 LTR,但它们不会改变它们之后的上下文(因此,整个数字块可以被视为单个“中性”事物)。

因此,只有一行 2 个元素:一个阿拉伯字符串和一个“中性”数字。数字是“中性的”,它将表现得“好像”它在相同类型的相邻元素中(这里成对的嵌套有时会产生令人惊讶的结果)。在我们的例子中,邻居是前面的 RTL 元素,所以这个数字表现得好像它是 RTL 中的一个块;两个 RTL 元素,第一个显示在第二个的右侧(之前的意思是向右)。

将“之前”显示为“向左”仅在 LTR 上下文中有效;但恕我直言,在使用阿拉伯字母符号时推送 LTR 上下文是错误的。如果您在 LTR 上下文中,最好使用中性符号(例如 $ € 等。里亚尔有一个单字符的 unicode 符号,这应该是您想要的),或者使用拉丁字母(例如:“rial”或“AER”)。

但是对于数字之前的一串阿拉伯字母,正确的行为是数字出现在文本的左侧(在 RTL 中之后是左侧)

您应该搜索“bidi”并了解它的工作原理;只有这样,您才能正确处理这些复杂的问题。

一些网站(还有更多):

于 2013-02-22T08:36:14.253 回答