2011-11-22 12 views
12

Cuando mi sitio web muestra texto en hebreo mezclado con números, y hay un número con un guión en el centro, el número con el guión en el medio se muestra RTL. Por ejemplo, con el texto: רמה 4–0, debería mostrar 4-0 en lugar de 0-4, ya que es una secuencia numérica, y el '4' precede al '0'. Sin embargo, en los navegadores que revisé, muestra el '0' antes del '4'.RTL está en la página web invierte los números con un guión

Dado que esto podría ocurrir en la pantalla cualquier lugar en los datos del sistema, que sería mucho más preferible tener una solución CSS que no requiere algo como:

<span style="direction:ltr">4-0</span> 

La dirección general para el texto debe permanecer RTL, pero los números con guiones deben mostrarse LTR. Debe mostrarse correctamente en los principales navegadores (IE, Firefox, Chrome).

+0

Ponga su contenido en una etiqueta ''. – ako

Respuesta

9

puede incrustar el left-to-right y right-to-left caracteres de marcador (&lrm; y &rlm; respectivamente) antes y después de las secuencias numéricas - Esto no tiene ningún marcado adicional, sin delimitadores y preservará el orden del texto en el documento fuente.

Una alternativa es tener algunos marcadores para delimitar los números con guiones (similar a lo que ha hecho), como el algoritmo de Unicode BIDI simplemente no maneja esta situación específica muy bien sin ayuda (LRM y RLM) .

No hay necesidad de que el CSS sea en línea como lo han hecho, pero todavía se necesitará algo como:

CSS:

.numdash 
{ 
    direction: ltr; 
} 

HTML:

<span class="numdash">4-0</span> 

Un La tercera opción es la de invertir los números y simplemente usar 0-4 en el marcado y hacer que el algoritmo bidi lo invierta.

+1

@Downvoter - ¿me gustaría comentar? – Oded

+0

no solucionó el problema, ¡simplemente alinea el texto a la izquierda! –

+0

¡Invertir los números no es una buena idea! –

0

NO considere invertir la secuencia, por favor, ya que también hará que el resultado se revierta si el usuario intentará copiar & péguelo en otra aplicación. En su lugar, usted podría estar interesado en soluciones no css:

LRM/RLM‍ 

LRE/RLE…PDF 
+0

¿Puede explicarnos la relevancia del PDF aquí? – Oded

+1

@Oded: PDF significa Formato de dirección Pop. Cuando utiliza RLE/LRE/RLO/LRO, declara el inicio de un bloque direccional y el carácter PDF declara su finalización. Para más información: http://unicode.org/reports/tr9/#Terminating_Explicit_Directional_Code –

+0

Gracias por la información - No entendí qué tenía que ver el Portable Document Format;) – Oded

5

hay otra manera de hacer esto añadiendo & # x200E; antes de los números:

<span>&#x200E;+44 780-780-7807</span> 
+1

http: // www. fileformat.info/info/unicode/char/200e/index.htm – TWiStErRob

1

La respuesta mencionar & LRM; y & rlm; es correcto. Insertar esos marcadores invisibles antes o después de un símbolo con dirección "débil" (puntuación o números, que no tienen una dirección "fuerte" como letras latinas o letras árabes/hebreas) asegurará que el personaje débil herede la dirección deseada.

El artículo de la wikipedia "BiDi"/Bi-Directional Text tiene una excelente descripción del problema y de cómo se supone que los intérpretes Unicode manejan el texto mixto.Me ayudó a entender el problema mucho:

http://en.wikipedia.org/wiki/Bi-directional_text

Mi solución personal es evitar el uso & LRM;/& RLM; símbolos porque estoy construyendo un sitio que necesita trabajar en ambas direcciones, y la inserción de contenido hará un gran desastre. En su lugar, pueden insertarse automáticamente utilizando las propiedades CSS "antes" y "después". He aquí un ejemplo, el uso de la designación Unicode "\ 200F" para el marcador RLM:

#RIGHT-TO-LEFT-MARKER-CONTENT, 
.contributor:after, 
/*.contributor:before,*/ 
.right-to-left-marker-content { 
    /*Inserts &rlm; marker to ensure 
    the contained content is always 
    displayed RTL*/ 
    content: "\200F"; 
} 

(Nota del CSS está en formato "CSS seco" que le permite añadir selectores según sea necesario para evitar la re-afirmar el actual . declaración de estilo una y otra vez lo importante es sólo que tiene contenido: "\ 200F" y que se agrega: antes o:. después de que el selector sea necesario

4

para mí, siguiendo el estilo funciona perfectamente:

* { 
    unicode-bidi: embed; 
} 

puede verificar esto example at CodePen (No sé En hebreo, he copiado algunos textos de here)

Cuestiones relacionadas