私は製品を注文するための小さなフォームを持つZend Framework(ドイツ語と英語)を使用した多言語プロジェクトに取り組んでいます。ユーザーができるようにする必要があります:製品価格に通貨と言語スイッチでロケールを処理するためのベストプラクティス
- 変更彼れる好ましい通貨
- 変更現時点ではウェブサイト全体
のための彼れる好ましい言語は、私が(Zend_Localeの:: findLocaleを使用)へユーザーのロケールを取得します。私のブラウザ設定では、私は 'de_CH'を取得し、それはうまく動作します。ユーザーは単にユーザーがサポートされていない言語を好む
- :しかし、すぐとしていくつかの問題があります私のウェブサイト
- により、ユーザは、言語コードはZend_Translateの、Bを処理するのに十分であるだけで言語コード 私の製品の注文フォームではサポートされていない、彼らは通貨を得た国
からですZend_Currencyにはより多くの情報が必要です。私はすべての可能なユーザーから国コードで完全なロケールを取得するソリューションはないと思う。私の質問は、あなたはどのようにこれらの状況に対処していますか?国コードがない場合は、ブートストラップの_initLocale()をチェックインし、デフォルトの国コードを使用しますか? Zend Frameworkの方法はありますか?
サポートされていない言語 言語は「FR」であるユーザーが、私は私たちのウェブサイトは、フランス語サポートしていないため、デフォルトの言語を使用したい場合。ブートストラップにホワイトリストアレイを追加するよりも良い可能性はありますか?例えば、Zend_Translateのメソッド?
サポートされていない通貨 ユーザーの言語はサポートされていますが、通貨はサポートされていますか?ブートストラップでロケールを変更すべきか、ロケールのコピーを作成してZend_Currency用に変更する必要がありますか?
主な問題 私の主な問題は、これらの異なるロケールの問題をすべて処理する方法がわからないことだと思います。私の好みの方法は、ブートストラップの_initLocale()で設定されたロケールを検証することです。その言語と通貨をサポートできることを確信できます。
ありがとうございます。
敬具、 ニコ
編集1 私は自分自身、これらの問題を処理する方法についていくつかのより多くの考えてきました。このアプローチについてどう思いますか?
Zend_Locale()
:フィルターすべての短いロケール(国コードなし)と、アプリケーションのサポート(単に言語コード)の言語でホワイトリストを使用しています。一致がない場合は、アプリケーションによって指定されたデフォルト値を使用します。Zend_Translate
:ロケールの言語コードで始まります。しかし、ユーザーが優先言語を変更した場合は、ロケールをそのまま(新しい言語コードと古い国コードに基づいて一致するロケールがない)、言語コードをZend_Translate
に変更します。Zend_Currency
:ロケールをデフォルトとして使用します。ユーザーが優先通貨を変更した場合は、ロケールではなく通貨のみを変更してください。したがって、通貨の変更がユーザーが自分のロケールを変更することを希望しているわけではないため、書式設定は古いロケールに基づいて行われます。
このアプローチは受け入れ可能でしょうか?そこブラウザは、次のように設定されているロケールの場合には、ステップ1の問題点は次のとおりです。
- デ
- en_USの
をおそらく、アプリケーションがドイツ語サポートしていますが、それは短いロケール、アプリケーションであるため、代わりにen_USを使用します。しかし、私は短いロケールを完全なロケールに 'アップグレードすることができないので、どの解決策がこの問題を解決するのかはわかりません。
私はこのことができますかどうかわからないんだけど、ユーザーとして、私は私のために言語を把握しようとしたアプリケーションやウェブサイトを憎みます。あなたのサイトに言語ボタンやドロップダウンがある方が良いと思います。あなたにとって有益な点は、言語的な組み合わせを検出する心配がないことです。 – Matt
+1のマットの提案。私はなぜあなたがすべての言語と通貨をサポートしたいと思うのかと困惑しています。たいていあなたのサイトはたかだか5〜10言語にしか翻訳されません。したがって、ロケールを「検出」し、適切な言語を見つけるために必要な魔法を実行することは不要です。アムステルダムを訪れた人はどうですか?英語やフランス語が好きですが、あなたのサイトではオランダ語を最もよく理解できるでしょうか?私は言語/通貨セレクタに投票します。キッス。 –
でも、完全なロケールを生成できるようにするには、ユーザーは自分の国を選択する必要があります。そうでなければ、選択した通貨を間違った方法で出力します(たとえば、12,000ユーロの代わりに12.000ユーロ)。しかし、はい、おそらくK.I.S.S.ここの右中道です;-)。提案ありがとう。 – Nico