2012-07-19 13 views
9

Attualmente sto lavorando alla localizzazione di un sito Web, che è stato il primo solo in inglese. Una società di terze parti ha effettuato le traduzioni e ci ha fornito un file excel con le traduzioni. Che ho convertito con successo in un array PHP che posso usare nelle mie visualizzazioni. Sto usando Eclipse per Windows per modificare i miei file PHP.Gestisce la stringa araba in PHP con Eclipse

Tutto va bene, solo che ho bisogno di aggiungere le variabili nelle mie corde, es:

'%1 is now following %2' 

in arabo mi è stato fornito con le stringhe come questo:

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

trovo che la sostituzione _ _ con% 1 e% 2 è incredibilmente difficile, perché la parte araba è un diritto a stringa sinistra, e il %1, %2 saranno considerati da sinistra a destra o da destra a sinistra, e io non sono sicuro . Difficilmente ho i risultati che mi aspetto con l'ordine del mio param, perché% 1 a volte andrà a sinistra della stringa, a volte a destra, a seconda di dove comincio a digitare. Copia-incolla le stringhe di sostituzione può anche avere gli stessi effetti strani.

maggior parte delle volte io alla fine con una stringa come questa:

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

L'% 1 dovrebbe essere a posto la mano destra, l'% 2 presso il sito della mano sinistra. Lo %1 è ovviamente considerato una stringa da destra a sinistra poiché la% viene visualizzata a destra. Lo %2 è considerato da sinistra a destra.

Sono sicuro che qualcuno come questo problema prima. C'è un modo in cui può essere fatto facilmente in Eclipse? O usando un editor più intelligente per le questioni arabe? O forse è un problema di Windows? C'è una soluzione?

UPDATE

Ho provato anche dividere la mia stringa in più stringhe, ma questo cambia anche l'ordine dei parametri:

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

UPDATE 2

Sembra che la modifica la stringa di sostituzione rende le cose migliori. Probabilmente è collegato a come i numeri vengono gestiti in stringhe arabe. Questa stringa è stata modificata in Eclipse senza alcun problema. L'ordine del parametro è corretto, la stringa viene gestito correttamente dal PHP:

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

Se non si trova altra soluzione, questa potrebbe essere una buona alternativa.

+0

Sono la programmazione con l'ebraico, che è anche RTL, e nella mia gestione di tutti i dati di esperienza all'interno di un database è un molto più facile. Però. È vero che la maggior parte degli IDE non ha il supporto nativo per queste lingue. Perché non provare a gestire i dati all'interno di un database? –

+0

Essendo un relatore arabo, ho molti compiti di localizzazione. Anche se non ho affrontato questo problema in particolare, ma ho avuto molti problemi da sinistra a destra/da destra a sinistra durante la modifica. Ho avuto successo lavorando con Notepad ++. Ci sono delle regole per questa sostituzione? Forse può essere copiato. – Adi

+0

@NadavS. Sto cercando di evitare il database perché voglio evitare questo passaggio non necessario. Se ho bisogno di nuove traduzioni quando implementiamo nuove funzionalità, posso semplicemente inviare il mio file excel alla società di localizzazione. Non dovrò esportare il mio database in un file excel, inviarlo alla società, quindi reimportare nuovamente il file. In realtà ho provato a modificare la stessa stringa in Navicat e ho riscontrato gli stessi problemi. – Tchoupi

risposta

3

@Adnan mi ha aiutato a realizzare e più tardi ha confermato che ci sono problemi nel mescolare i numeri latini con il testo arabo.

In base a tale conclusione, la soluzione è semplicemente quella di smettere di usare %1, %2, %3, ... come segnaposto. Utilizzerò invece parole chiave più descrittive, ad esempio {USER}, {ALBUM}, {PHOTO}, ...

Questo mostra il risultato previsto nel file PHP ed è facilmente modificabile:

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

Essendo un altoparlante arabo ricevo un sacco di compiti di localizzazione. Anche se non ho affrontato questo problema in particolare, ma ho avuto molti problemi da sinistra a destra/da destra a sinistra durante la modifica. Ho avuto successo lavorando con Notepad++.

Così qui è quello che faccio di solito quando voglio modificare il testo in arabo

  1. Aprire vuoto Notepad ++ *
  2. Set codifica UTF-8 (Encoding -> Codifica in UTF-8)
  3. Attivare la modalità RTL (Visualizza -> Orientamento testo RTL)
  4. incollare le stringhe

E h ere è uno screenshot che mostra come sto modificando la stringa

enter image description here

*: per qualche motivo, ogni volta che apro un file già esistente cose vanno banane. Quindi forse sono superstizioso, ma questo ha sempre funzionato per me.

Aggiornamento: La prima volta che ho fatto questo ero scettico perché le corde sembravano sbagliato, ma poi ho fatto questo:

print_r(str_split($string)); 

e ho visto che sono effettivamente nell'ordine corretto.

+0

L'utilizzo della modalità RTL rende sicuramente le cose più semplici. Ma in realtà ho avuto un problema strano. Lo stesso del tuo screenshot in realtà. '2%' sembra soddisfacente perché la sua RTL, ma non dovrebbe essere '% 1', deve essere scritta' 1% '? – Tchoupi

+0

@ Mathieu Imbert, si, la stessa cosa è successo a me la prima volta. GUARDA male (e attendi finché non lo copi di nuovo sul tuo IDE, sarà orribile) ma in realtà va bene. La prima volta che l'ho fatto ho dovuto stampare la mia stringa 'char' di' char' solo per credere che fosse nell'ordine giusto. Modifica: in realtà è una buona idea, aggiornerò la risposta. – Adi

+0

Forse hai ragione. Ora 'Mathieu sta seguendo Best photos' traduci come' Mathieu الآن يتتبع Best photos'? Mi sembra che i parametri siano in ordine inverso. – Tchoupi

0

Preferirei il Blocco note originale per questo tipo di attività.

  1. Aprire il Blocco note, assicurarsi che siete in modalità LTR
  2. Tipo %1
  3. Cambiare modalità di RTL premendo CTRL + SHIFT
  4. incollare la stringa arabica nell'editor.
  5. Ripristinare nuovamente su LTR premendo nuovamente CTRL + SHIFT.
  6. Tipo %2
  7. Seleziona tutto con CTRL + A e copiare con CTRL + C
  8. incolla nell'IDE. È dovrebbe sembrare strano ma eseguire come previsto.

Motivo utilizzando il blocco note: Più complesso editor come Notepad ++, Sublime, Coda (Mac), e qualche IDE - nel vostro caso Eclipse possono non utilizzare la codifica corretta, e Notepad è semplice ancora funziona bene per attività multilingue.

+0

Grazie per aver descritto i passaggi esatti. Dà lo stesso identico risultato della soluzione di Adnan. I parametri sembrano essere in ordine inverso. – Tchoupi