Domanda

quindi ho un sacco di utenti la pubblicazione di articoli con nomi in diverse lingue. Ho bisogno di qualche lib di tradurre thouse nomi articolo per lettere inglesi, per esempio girare russo 'р' in ita 'r' e così via per tutte le lingue europee, russe e lingue asiatiche. Dove ottenere tale lib?

45 secondi di google me questo "Questa estensione permette di trascrivere il testo in caratteri non latini (dato come il cinese, cirillico, greco ecc) per caratteri latini. " sembra essere quello che ho davvero bisogno. qualcuno ha provato questo nella vita reale?

È stato utile?

Soluzione

Google ha un AJAX API traslitterazione che fa un buon lavoro su molti script principali .

Modifica Accidenti, appare su un'ulteriore ispezione che questo consente solo di conversioni da l'alfabeto latino. È un po 'sciocco che Google non ha fatto la funzionalità inversa a disposizione, dato che sono già utilizzando in Google Translate per fornire romanisations per cirillico e cinese, thailandese, hindi, e altri, anche se in particolare non abugidas come l'ebraico e l'arabo.

Ulteriori Edit: Ho pensato a una possibile soluzione: rilevare la lingua e utilizzare una query di AJAX per eseguirlo tramite Google Translate utilizzando la stessa lingua di partenza come lingua di destinazione, per esempio Cinese-to-cinese . Firebug rivela che la traslitterazione viene emesso in un div cui ID è translit. Traslitterazioni sono in genere pesantemente accentati, quindi avrai bisogno di convertirli. Questo non è affatto qualcosa di contare su (anche se Google in genere non fa frequenti cambiamenti strutturali alla loro HTML), ma è certamente una possibilità interessante.

Altri suggerimenti

Io non sono un linguista, lontano da esso, ma sottopongo a voi la possibilità che ciò che si sta cercando di fare è impossibile, o molto complesso da implementare.

Dopo tutto, la traduzione dei nomi è molto più di "alfabeti di conversione." E 'relativamente facile in russo, perché ogni carattere cirillico in realtà ha una controparte latina (sono alfabeti sorella ).

Non so circa l'arabo, ma per il cinese Avrete bisogno di un sistema di romanizzazione come Pinyin per arrivare ovunque. E 'più complesso di una semplice sostituzione di caratteri.

Ecco un elenco completo delle ISO romanizations - Se ho capito bene, una soluzione che funziona per voi sarebbe necessario implementare tali norme.

Quindi, il compito potrebbe essere:

  • Analizzare un testo contenente numerosi intervalli di caratteri diversi

  • Identificare ogni parola per la quale intervallo di caratteri a cui appartiene (อักษร ไทย è thailandese, Москва è cirillico, e così via)

  • Applicare il metodo corretto di romanizzazione ad ogni parola.

Ora sono molto interessato a conoscere le librerie che possono fare questo in PHP, ma è ben possibile che non ce ne sono.

iconv fare?

  

Con questo modulo, è possibile attivare una stringa rappresentato da un carattere locale impostato in quello rappresentato da un altro set di caratteri, che può essere il set di caratteri Unicode.

Da manuale di PHP:

$text = "This is the Euro symbol '€'.";

echo 'Original : ', $text, PHP_EOL;
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
echo 'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
echo 'Plain    : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;

Se non va bene, dai un'occhiata a queste

In alternativa, definire la mappa caratteri in un array e utilizzare str_replace o mb_substitute_character per eseguire la conversione.

In PHP5.3, Intl introduce una classe transliterator, che è un wrapper ICU. La seguente libreria ha il pieno set di regole ISO:

http://www.php.net/manual/en/transliterator. transliterate.php

ho finito per scrivere una libreria PHP basato sulla URLify.js del progetto Django, dal momento che ho trovato iconv () per essere troppo incompleta. Lo si può trovare qui:

https://github.com/jbroadway/urlify

Maniglie caratteri latini e greco, turco, russo, ucraino, ceco, polacco e lettone.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top