国際サイトのパーマリンクをどのように扱っているのだろうと思っていました。パーマリンクとは、ユニークで人間が読めるリンクを意味します。
たとえば、英語のフレーズの場合は問題ありません。例: /product/some-title/
しかし、商品のタイトルが例えば中国語の場合はどうしますか?? この問題にどう対処しますか?
私は国際的なサイトを実装していますが、1 つの要件は人間が読める URL を持つことです。いつもコメントありがとうございます
国際サイトのパーマリンクをどのように扱っているのだろうと思っていました。パーマリンクとは、ユニークで人間が読めるリンクを意味します。
たとえば、英語のフレーズの場合は問題ありません。例: /product/some-title/
しかし、商品のタイトルが例えば中国語の場合はどうしますか?? この問題にどう対処しますか?
私は国際的なサイトを実装していますが、1 つの要件は人間が読める URL を持つことです。いつもコメントありがとうございます
ISO Latin-1 セット外の文字は、この仕様に従って URL で許可されていないため、中国語の文字列はすぐに出力されます。
製品名をローカライズできる場合は、次のような URL を使用できます <DOMAIN>/<LANGUAGE>/DIR/<PRODUCT_TRANSLATED>
。
http://www.example.com/en/products/cat/
http://www.example.com/fr/products/chat/
以下の効果を持つmod_rewriteルールを伴う:
RewriteRule ^([a-z]+)/product/([a-z]+)? product_lookup.php?lang=$1&product=$2
上記の最初の例では、このルールは を呼び出します。このスクリプトの内部では、内部翻訳エンジンにアクセスして (この場合はパラメーターから)、ユーザー側で翻訳するのと同じ翻訳を行います。たとえば、フランス語のページの「チャット」、「猫」などです。英語などについて。product_lookup.php?lang=en&product=cat
lang
en
外部の翻訳 API を使用するのは良い考えですが、ビジネス ドメインで正しく機能する信頼できる API を取得するのは困難です。Google は翻訳 APIを公開しましたが、現在サポートされている言語は限られています。
- 英語 <=> アラビア語
- 英語 <=> 中国語
- 英語 <=> ロシア語
私は通常、ASCII 以外の文字を音訳します。たとえば、「täst」は「taest」になります。GNU iconv はこれを行うことができます (他のライブラリがあると確信しています):
$ echo täst | iconv -t 'ascii//translit'
taest
悲しいかな、これらの音訳はロケールに依存します。たとえば、ドイツ語以外の言語では、'ä' は単に 'a' として音訳される可能性があります。しかし一方で、(一般的に使用される) すべての文字セットを ASCII に変換する必要があります。
ウィキペディアを見てください。URL で国別文字を使用します。
たとえば、ロシアのホームページの URL はhttp://ru.wikipedia.org/wiki/Заглавная_страницаです。ブラウザーはすべての非 ASCII 文字を透過的にエンコードし、URL をサーバーに送信するときにそれらのコードに置き換えます。しかし、Web ページでは、すべての URL が人間が判読できます。
したがって、特別なことをする必要はありません。製品名をそのまま URL に入れるだけです。ウェブサーバーは、アプリケーション用にそれらを自動的にデコードできるはずです。
/productid/{product-id-number}/some-title/ のように、サイトが {number} を見て「some-title」の部分を完全に無視するスキームはどうでしょうか。使用されていないため、好きな言語またはエンコーディングに入れることができます。
そのようなもののルックアップを作成することは、私にはオーバーフローのようです。すべての言語のすべての単語のルックアップを作成することはできません。翻訳 API にアクセスするのは良い考えかもしれません。
URLの仕様が許可していないため、パーマリンクで外部文字を使用することはできません。
特殊文字のエンコードについてどう思いますか? それらの URL は Google によって認識されますか?
記憶が正しければ、URL には英字しか使用できません。それを変更するための議論がありますが、まだ実装されていないことはかなり肯定的です.
とは言っても、製品/タイトルの翻訳を、他の言語で使用される単語に割り当てるルックアップ テーブルが必要です。例えば:
foo.com/cat では、「cat」「gato」「neko」などの翻訳ルックアップが必要になります。
次に、それらの人間の読み取りオブジェクトを正確な URL に解析している HTTP モジュールは、翻訳に基づいて提供するページを認識します。