2012-07-19 16 views
9

Actualmente estoy trabajando en la localización de un sitio web, que fue el primero en inglés solamente. Una empresa externa realizó las traducciones y nos proporcionó un archivo Excel con las traducciones. Lo cual exitosamente convertí a una matriz PHP que puedo usar en mis vistas. Estoy usando Eclipse para Windows para editar mis archivos PHP.Manejar cadena árabe en PHP con Eclipse

Todo está bien, excepto que tengo que añadir las variables en mis cadenas, por ejemplo:

'%1 is now following %2' 

En árabe Estaba provisto de cadenas como éste:

'_______الآن يتتبع _______' 

Me parece que la sustitución _ _ con% 1 y% 2 es increíblemente difícil porque la parte árabe es una cadena de derecha a izquierda, y %1, %2 se considerarán de izquierda a derecha o de derecha a izquierda, y yo no soy Por supuesto . Apenas tengo los resultados que espero con el orden de mi parámetro, porque% 1 algunas veces irá a la izquierda de la cadena, a veces a la derecha, dependiendo de dónde empiece a escribir. Copiar y pegar las cadenas de reemplazo también puede tener los mismos efectos extraños.

La mayoría de las veces que terminan con una cadena como esta:

%2الآن يتتبع %1 

El 1% debe estar en el sitio de la mano derecha, el 2% en el lugar de la mano izquierda. El %1 obviamente se considera cadena de derecha a izquierda porque el% aparece a la derecha. El %2 se considera de izquierda a derecha.

Estoy seguro de que alguien como este problema antes. ¿Hay alguna manera de que se pueda hacer fácilmente en Eclipse? ¿O usar un editor más inteligente para problemas arábigos? ¿O tal vez es un problema de Windows? ¿Hay alguna solución?

ACTUALIZACIÓN

También probé dividir mi cadena en varias cadenas, pero esto también cambia el orden de los parámetros:

'%1' . 'الآن تتبع' . '%2' 

ACTUALIZACIÓN 2

Parece que el cambio de la cadena de reemplazo mejora las cosas. Probablemente esté relacionado con cómo se manejan los números en cadenas árabes. Esta cadena fue editada en Eclipse sin ningún problema. El orden del parámetro es correcto, la cadena se maneja correctamente por PHP:

'{var2} الآن يتتبع {var1}' 

Si no se encuentra ninguna otra solución, esto podría ser una buena alternativa.

+0

estoy de programación con el hebreo, que es también RTL, y en mi manejo de todos los datos de la experiencia dentro de una base de datos es una mucho más fácil. Sin embargo. Es cierto que la mayoría de los IDE no tienen soporte nativo para estos idiomas. ¿Por qué no tratar de manejar los datos dentro de una base de datos? –

+0

Siendo un hablante de árabe recibo muchas tareas de localización. Aunque no he enfrentado este problema en particular, he tenido muchos problemas de izquierda a derecha/derecha a izquierda durante la edición. He tenido éxito trabajando con Notepad ++. ¿Hay alguna regla para este reemplazo? Tal vez puede ser guionado. – Adi

+0

@NadavS. Estoy tratando de evitar la base de datos porque quiero evitar este paso innecesario. Si necesito nuevas traducciones cuando implementamos nuevas funcionalidades, puedo enviar mi archivo Excel a la compañía de localización. No tendré que exportar mi base de datos a un archivo Excel, enviarlo a la empresa y luego volver a importar el archivo. En realidad, intenté editar la misma cadena en Navicat y me encontré con los mismos problemas. – Tchoupi

Respuesta

3

@Adnan me ayudó a darme cuenta y luego confirmó que existen problemas al mezclar números latinos con texto en árabe.

Basado en esa conclusión, la solución es simplemente dejar de usar %1, %2, %3, ... como marcadores de posición. Usaré más palabras clave descriptivas, por ejemplo {USER}, {ALBUM}, {PHOTO}, ...

Esto muestra el resultado esperado en el archivo PHP y es fácilmente modificable:

'ar' => '{USER} الآن يتابع {ALBUM}' 
5

Al ser un hablante de árabe, recibo muchas tareas de localización. Aunque no he enfrentado este problema en particular, he tenido muchos problemas de izquierda a derecha/derecha a izquierda durante la edición. He tenido éxito trabajando con Notepad++.

Así que aquí es lo que suele hacer cuando quiero editar texto árabe

  1. abierto vacío Notepad ++ *
  2. Conjunto de codificación UTF-8 (Codificación -> codificación UTF-8)
  3. Activar el modo RTL (Ver -> Dirección del texto RTL)
  4. pegan las cadenas

y h ERE es una captura de pantalla que muestra cómo estoy editando la cadena de

enter image description here

*: por alguna razón, cada vez que abrir un archivo existente cosas van plátanos. Así que tal vez estoy siendo supersticioso, pero esto siempre me ha funcionado.

Actualización: primera vez que hice esto yo era escéptico porque las cuerdas miraron mal, pero luego me hizo esto:

print_r(str_split($string)); 

y vi que son de hecho en el orden correcto.

+0

El uso del modo RTL definitivamente facilita las cosas. Pero en realidad me encuentro con un problema extraño. Igual que su captura de pantalla en realidad. '2%' parece correcto porque su RTL, pero no debe '% 1' también estar escrito' 1% '? – Tchoupi

+0

@MathieuImbert, sí me pasó lo mismo la primera vez. PARECE incorrecto (y espere hasta que lo copie de nuevo en su IDE, será horrible) pero en realidad está bien. La primera vez que hice esto tuve que imprimir mi cadena 'char' por' char' solo para creer que está en el orden correcto. Editar: en realidad es una buena idea, actualizaré la respuesta. – Adi

+0

Quizás tengas razón. ¿'Mathieu está ahora siguiendo las mejores fotos' traducir como' Mathieu الآن يتتبع Las mejores fotos'? Me parece que los parámetros están en orden inverso. – Tchoupi

0

Preferiría el Bloc de notas original para este tipo de tareas.

  1. Abrir el Bloc de notas, asegúrese de que está en modo LTR
  2. Tipo %1
  3. Cambiar el modo de RTL pulsando CTRL + SHIFT
  4. pegar la cadena árabe en el editor.
  5. Revertir a LTR presionando CTRL + SHIFT nuevamente.
  6. Tipo %2
  7. Seleccionar todas con CTRL + A y copiar con CTRL + C
  8. Pegar en el IDE. Es debería verse raro, pero ejecutar como se esperaba.

razón para usar el Bloc de notas: editor más complejas, como Notepad ++, sublime, Coda (Mac), y algunos IDE - en su caso Eclipse puede no utilizar la codificación correcta, y el Bloc de notas es sencilla sin embargo, funciona bien para tareas multilanguales.

+0

Gracias por describir los pasos exactos. Da exactamente el mismo resultado que la solución de Adnan. Los parámetros parecen estar en orden inverso. – Tchoupi

Cuestiones relacionadas