2010-12-01 16 views
15

Por lo tanto, los números de teléfono siempre son ltr (de izquierda a derecha).Cómo forzar una pieza de texto a ser 'dirección ltr' dentro de un 'dirección rtl' párrafo

Trabajando en un sitio web multilingüe tengo que insertar un número de teléfono (con el prefijo '+' y números separados por '-') dentro de un párrafo de texto que tenga sentido RTL (para los idiomas pertinentes, por supuesto)

Así que tengo algo como esto:

.ltr #test {direction:ltr} 
 
.rtl #test {direction:rtl} 
 
#phone {direction:ltr}
<div class="ltr"><p id="test">Please call to <span id="phone">+44-123-321</span> for some help.</p></div> 
 
<div class="rtl"><p id="test">Please call to <span id="phone">+44-123-321</span> for some help.</p></div>

por supuesto, esto no funciona porque 'direction' sólo funciona para los elementos de bloque y 'span 'es un elemento en línea. Necesito que el número de teléfono esté dentro del párrafo, así que no puedo cambiar 'span' a 'display:inline'

Estoy siendo claro?

¿Cómo hacer que funcione?

+1

Los algoritmos RTL normalmente tienen en cuenta los números, por lo que no es necesario hacer nada para que los números se representen correctamente, independientemente de 'LTR' o' RTL' del contenedor. ¿De verdad estás viendo este problema o simplemente tratando de adelantarse? – Oded

+2

@Oded: Lo estoy viendo. Creo que debido al '+' y '-' entre los números es simplemente confundir el algoritmo ... – Jonathan

+0

Al menos en árabe, el signo + debe ir a la izquierda de un número de teléfono, al igual que en inglés. Escriba el número de teléfono como lo haría en inglés, primero escriba el carácter '+', luego el primer número de la izquierda, luego el segundo de la izquierda, y así sucesivamente. Puede estar tratando de arreglar algo que no es realmente un problema. – Flimm

Respuesta

12

Usted puede utilizar un carácter Unicode marcador direccionalidad justo antes de la señal de + para dar el algoritmo de la pista que necesita.

Estos son:

LTR: 0x200E 
RTL: 0x200F 

Así:

<p id="text">Please call to <span id="phone">&#x200F;+44-123-321</span> for some help</p>

Ver this respuesta para obtener más detalles.

+6

Probé esto y puedo confirmar que funcione, sin embargo, en notación HTML, serán '& # x200E;' y '& # x200F;'. –

+0

@nikc - Bien manchado. HTML actualizado – Oded

19

Trate de añadir #phone {direction:ltr; display:inline-block}

+3

Esta parece ser la respuesta más orientada al "estilo" – tutuDajuju

+0

'Debido a que los UA HTML pueden desactivar el estilo CSS, recomendamos que los autores HTML usen el atributo dir HTML y el elemento para asegurar el diseño bidireccional correcto en ausencia de una hoja de estilo. Los autores no deberían usar la dirección en documentos HTML. Fuente: http://www.w3.org/TR/css-writing-modes-3/#direction –

6

Otra opción podría ser utilizar dir='ltr' atributo, en su elemento en línea:

<p id="text">Please call to <span dir='ltr'>+44-123-321</span> for some help</p> 

Tenga en cuenta que la inclusión de &#x200E; en el código HTML es tan malo como el uso de dir='ltr' atributo.

+0

En mi humilde opinión esta es la solución más hermosa. – fguillen

Cuestiones relacionadas