2016-08-18 16 views
1

私は少しウェブサイトを設定しており、国際化したいと考えています。すべてのコンテンツは、異なる言語の外部XMLに保存され、javascriptを介してhtmlに解析されます。多くの国際言語に使用するエンコーディング

ドイツ語のウムラウト、ロシア語、中国語、および日本語の記号があり、アラビア語やペルシア語のような右から左の言語もあります。

どのような方法や解決策がありますか?すべての言語を適切に表示できる「国際的なエンコーディング」はありますか?または、あなたが提案する他の解決策がありますか?

ありがとうございます!

+0

私はXMLが間違ったアプローチだと思っています。PHPのgettext拡張機能(.mo/.po)は私の意見になる方法です。多言語のウェブサイト、翻訳カタログなどのために作られています。 –

+0

あなたの返信ありがとうございます!はい、私はPHPについても最初に考えました... [私はgettext拡張(.mo/.po)に慣れていません] ....私が覚えている限り、PHPを使用して言語を変更するサイトは新しい言語のテキストで再度読み込まれます。しかし私のプロジェクトでは、リロードせずにすぐに翻訳をしたいと思っています。言語を変更するフラグをクリックすると、現在のサイトのテキストとナビゲーションバーが即座に変更されます。 PHPでこれを実現する方法はありますか? –

+0

PHPの* gettext *拡張がajax経由でロードできるかどうかわかりません。しかし、私はそれが検索の価値があると思うし、それを試してみてください。私はあなたがAJAXに慣れていることを願っています。これは非同期Javascriptです - > Click> js/ajax関数を起動し、PHPファイルを読み込んで情報を吐き出します。 –

答えて

2

多言語サイトの通常の(推奨される)解決策は、UTF-8を使用することです。

  1. Unicodeはバージョン管理の標準であり、異なるJavascriptの実装が異なるUnicodeのバージョンをサポートすることがあります。それは、警告のカップルとUnicodeのコードポイントが割り当てられているすべての文字を扱うことができます。

  2. テキストにUnicode Basic Multilingual Plane(BMP)以外の文字が含まれている場合は、Unicode対応の方法でテキスト処理(Javascriptで)する必要があります。たとえば、Javascript Stringクラスを使用する場合は、テキスト操作を行う際にサロゲートペアを適切に考慮する必要があります。 (JavascriptをStringが実際にUTF-16としてエンコードされます。それはあなたがUnicodeのコードポイントとして、それを操作するための方法、方法は/そのようsubstringlength使用codeunitではなく、コードポイントのインデックスとして属性を持っている。あなたがいる場合

注意しないと、サロゲートペアの下位部分と上位部分の間で文字列を分割することができますが、結果は正しく表示されないことがあります。これは高位面のコードポイントにのみ影響しますが、新しい絵文字コードポイントが含まれます。 )

+0

返事ありがとう、スティーブン! Sooo ...私が正しく理解していれば、多言語サイトにはUTF-8を使うことをお勧めします。前にUnicode Basic Multilingual Planeを新しくしたことはありませんでしたが、今私はそれについてもっと読むつもりです。 「あなたのテキスト処理を(Javaで)Unicode対応の方法で行うのはどうですか?あなたはこれの例を知っているので、私は見ることができますか?私はemojisやそのようなものを使用しません....ロシア語やマンダリンのような多くの言語はエイリアンシンボルのように見えます:-) D –

+0

" (Javaで) "はタイプミスです。 Javascriptにする必要があります –

5

すべてのUnicode変換(UTF-8、UTF-16、UTF-32)はすべてのUnicode文字をエンコードできます。サイズに基づいて使用したいものを選択します:テキストのほとんどが西洋のスクリプトであれば、大部分の文字には1バイトしか使用されませんが、必要に応じて2、3、または4が使用されます。遠くのスクリプトをエンコードする場合は、おそらく他の変換の1つが必要です。

基本的なことは、すべてUnicodeだということです。変換は同じ文字を表現する異なる方法にすぎません。

スタックオーバーフローの共同創設者は、このトピックに関する良い記事だった:、関係なく、あなたの文書に使用するエンコード何のThe Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)


を使用すると、JavaScriptでこれらの文字列の処理をやっている場合ことに注意してください、JavaScript strings are UTF-16(ただし、無効な値は許容されます)。 (たとえドキュメントがUTF-8またはUTF-32であっても)これは、例えば、それらのemojisの人々は、JavaScriptの2つの「文字」のように近頃興奮していることを意味します。 -16を表す。同様に、例えば:

console.log("".length); // 2

だから、UTF-16の二つの言葉でエンコードされた文字の両半分を分割しないように注意する必要があります。

+0

あなたの返信、T.J.ありがとう!さて、もし私がUTF-8でそれを正しく取得しているなら、私はアジア系、サイラル系、アラビア語のテキストを持つこともできますが、西洋(ラテン系)のテキストの場合には、これが最も推奨されます。正しい?うーん、私はサイト上でemojisを使用しません....しかし、もし私が....それはUTF - 16を使用することは安全ではないでしょうか、JSのような同じ文字列の長さですか? –

+0

@RostamN:はい、UTF-8は**すべての** Unicode文字をエンコードすることができます(他のすべての変換と同じように)。いいえ、代わりにUTF-16を使用するのは安全ではありません。 JavaScriptの文字列の性質はHTMLやXMLとはまったく関係ありません。 –

+0

すごく、ありがとう! –

関連する問題