Tradurre un'estensione
-
16-10-2019 - |
Domanda
Ci sono strumenti per la generazione di un file CSV per le traduzioni di un modulo? Cioè rilevare le chiamate verso __()
all'interno di un modulo e l'output le informazioni in un file CSV pronto per essere utilizzato come un file di traduzione per il modulo?
Soluzione
È possibile utilizzare un semplice * GREP dei file di template:
> grep "__\(.*?\)" -Roh . | sed "s/__([\"']//" | sed "s/[\"'].*//g" | sort | uniq
Questa uscita volontà un elenco di frasi uniche - come (ha funzionato contro /app/design/frontend/base/default/templates/)
:
You have not tagged any products yet.
You have placed no orders yet.
You have placed no orders.
You have placed no products yet.
Questo ti porterà 80% del tragitto, ma ora avrete bisogno di fare quanto segue:
- Ciò restituirà i risultati per le traduzioni che sono non quotate o che sono una traduzione diretta di una variabile, ad esempio
$this->__($title)
-. questi dovranno essere rimossi e trattati manualmente -
Sarà necessario copiare questo contenuto in una seconda colonna, comma delimitted. Ho preso la briga di aggiungere il comando
sed
sul grep sopra in modo che emetta tutto d'un fiato:> grep "__\(.*?\)" -Roh . | sed "s/__([\"']//" | sed "s/[\"'].*//g" | sort | uniq | sed "s/\(.*\)/\"\1\",\"\1\"/"
* LOL questo non è molto semplice, immagino
Altri suggerimenti
Ecco alcune espressioni regolari che potrebbero aiutare.
Questo dovrebbe corrispondere Mage::helper('some_helper')->__('Some text')
'/helper\(\\\'([a-z_]+)\\\'\)-\>__\([\s]*([\'|\\\"])(.*?[^\\\\])\\2.*?\)/'
Questo dovrebbe corrispondere $this->__('Some Text')
'/\$this-\>__\([\s]*([\'|\\\"])(.*?[^\\\\])\\1.*?\)/'
E per i file XML, basta caricare il file come un oggetto XML e quindi XPath gli elementi con il translate
attributo.
[Edit]
Recentemente ho messo insieme un'estensione che dovrebbe individuare i testi traducibili in un modulo e generare il file CSV per esso. Check it out.
Non risponde, ma un suggerimento, se questo è ok.
Cercando di fare buone traduzioni senza vedere il contesto intorno a quella frase o una parola sarà estremamente difficile.
I suggerire cercando di trovare un insieme di traduzione di base e poi passare da lì. È possibile utilizzare le 'traduzioni inline' dal backend per vedere quali parti del negozio online sono traducibili
ho usato Notepad ++, aperto tutti i file e le sottocartelle del plugin in esso.
premuto CTRL + F e cercato __ (e di ricerca pressato in tutti i documenti e poi è andato su tutti loro e li copiate in un csv.
Comunque la metti, sta andando ad essere un sacco di lavoro; -)