2009-06-29 17 views
0

Kann mir jemand sagen, wo finde ich Übersetzungstabelle für alle Weltsprachbriefe, einschließlich Russland, Griechisch, Thai usw.? Ich brauche eine Funktion, um fancy URL von Text in jeder Sprache zu erstellen. Und weil wir zum Beispiel kein Japanisch verstehen, versuche ich es auf diese Weise. Danke für Ihre AntwortenÜbersetzungstabelle für alle Weltsprachen

+3

Was meinst du mit „Übersetzungstabelle“? –

Antwort

-1

Sie können immer versuchen, den Text in iso-8859-1 (zum Beispiel mittels Iconv leicht, wenn es in PHP ist) zu konvertieren und dann einfach Leerzeichen ersetzen und all diese schlechten Zeichen, die in iso gültig sind -8859-1 aber nicht in URL ;-)

+1

Nein, kann man nicht. Da die ursprünglichen Zustände, dass die Eingabe von beliebigen Skripten sein wird, das heißt, wird der Text Codepunkte hat, die nicht in Latin-1 kodiert ist. –

3

Klingt wie, was Sie wollen, ist ein transliteration Tabelle. Probieren Sie einige der Links auf dieser Seite aus. Wenn Sie es nur für HTTP-URLs wünschen, werfen Sie einen Blick auf percent-encoding.

3

Die Transliteration ist im Allgemeinen nicht trivial, siehe Unicode Transliteration Guidelines. Die Antwort auf Ihre Frage ist unverblümt, dass die von Ihnen gesuchte Tabelle nicht existiert.

Das heißt, es gibt ein paar Workarounds zur Verfügung, wie Sean M. Burke Unidecode Perl Modul (und Ports RubyPython). Aber, wie er betont, werden Sie keine Transliteration für, sagen wir, Thai oder Japanisch, die aus einer solchen Umwandlung sinnvoll lesbar ist.

Werfen Sie einen Blick auf die folgenden Testsitzung die Python-Port:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
from unidecode import unidecode 

hello = u"""Hello world! English 
Salut le monde! French 
Saluton Mondo! Esperanto 
Sveika, pasaule! Latvian 
Tere, maailm! Estonian 
Merhaba dünya! Turkish 
Olá mundo! Portuguese 
안녕, 세상! Korean 
你好,世界! Chinese 
こんにちは 世界! Japanese 
ሠላም ዓለም! Amharic 
哈佬世界! Cantonese 
Привет, мир! Russian 
Καλημέρα κόσμε! Greek 
สวัสดีราคาถูก! Thai""" 

lines = hello.splitlines() 
samples = [] 

for line in lines: 
    language, text = line.split()[-1], ' '.join(line.split()[:-1]) 
    samples.append((language, text)) 

for language, text in samples: 
    print language.upper() 
    print text 
    print unidecode(text) 
    print 

Welche Ausgänge:

ENGLISH
Hallo Welt!
Hallo Welt!

FRANZÖSISCH
Salut le monde!
Salut le monde!

ESPERANTO
Saluton Mondo!
Saluton Mondo!

LETTLAND
Sveika, pasaule!
Sveika, Pasaule!

ESTLAND
Tere, maailm!
Tere, Maailm!

TÜRKISCH
Merhaba dünya!
Merhaba dunya!

PORTUGIESISCH
Olá mundo!
Ola mundo!

KOREAN
안녕, 세상!
annyeong, sesang!

CHINESE
Hallo, Welt!
Ni Hao, Shi Jie!

JAPANESE
ko san ni ち wa Welt!
konnitiha Shi Jie!

Amharisch
ሠላም ዓለም!
szalaame `aalame!

CANTONESE
Kasachstan Mann der Welt
! Ha Lao Shi Jie!

RUSSIAN
Привет, мир!
Priviet, mir!

griechische
Καλημέρα κόσμε!
Kalemera kosme!

THAI
สวัสดี ราคา ถูก!
swasdiiraakhaathuuk!

für Sprachen, die Latin-ish sind in erster Linie ist es sehr nützlich: .. es Akzentzeichen außerhalb dieser Streifen, die Dinge heikel schnell

Wenn Sie die chinesischen und japanischen Beispiele vergleichen, sehen Sie, dass die Sequenz 世界Shi Jie in beide transkribiert wird. das ist falsch -. die „Umschrift“ (oder besser „Lesen“) der japanischen sollte Seikai das Russisch und Griechisch ist nicht so schlecht sein, aber Amharisch und Thai ist miserabel -. ich würde vermuten, dass sie nicht sogar lesbar an jemanden, der in diesen Sprachen fließend ist.

Das allgemeine Problem hier ist, dass Umschrift ist nicht etwas, es sei denn, sprachspezifische Informationen definiert werden, kann auch berücksichtigt werden, und sogar determ ining Sprache ist nicht trivial: Wie ist Ihr Programm soll wissen, ob 世界 in Japanisch oder Chinesisch ist

Eine bessere Politik als zu versuchen, hackish Umschrift in Ihre Anwendung zu zwingen, ist, herauszufinden, wie Unicode zu unterstützen richtig in dem ersten? Ort. Wenn Sie eine all-ASCII-Darstellung nicht-lateinische Schrift Text, URL-Codierung Verwendung haben müssen.