3

グローバルアプリケーションを作成する必要があります。これは、世界のどこでも、どの国でも(またはほとんどの国で)問題なく動作するはずであることを意味します。これは、特定の時点でお金と時間を処理するPHPWebサイトです。

国、関連するタイムゾーン、通貨のフォーマット、記号とコード、この種のもののための良いリソースを知ることができたらいいのにと思います...

誰かがこれらの種類のデータについてのヒントを持っていて、どうすればそれらを適切な方法で使用できるか、私は本当に感謝しています:)

前もって感謝します!

4

4 に答える 4

3

ZendFrameworkの一部であるZendLocaleは、通貨、タイムゾーン、翻訳などに関連する問題の解決に役立ちます。

Zend Frameworkを1つずつ採用するのは簡単なので、必要なパーツだけを使用できます(肥大化や速度低下はありません)。

于 2010-07-23T13:26:22.317 に答える
2

intl(http://www.php.net/manual/en/book.intl.php)を見てください。

これはICU(International Components for Unicode、http://site.icu-project.org/)のラッパーであり、必要なもののほとんどが含まれています。

于 2009-11-12T07:34:37.510 に答える
1

私はグローバル化されたアプリに取り組んできましたが、最も難しい要素の1つは、タイムゾーンと日時の保存方法です。日付を現地時間で保存する必要がある場合(世界のその場所でのイベントの時間など)や、共通のタイムゾーンで保存して(作成した日付をすべてのUTCとして保存するなど)、ユーザーに変換する必要がある場合もあります。必要に応じて現地時間。それがどれであるかを明確にするために、db列/変数の命名規則をお勧めします。

タイムゾーン変換を手動で処理しようとしないでください(あなたが思っているよりもはるかに複雑です)、ある種のライブラリ/フレームワークを使用してください-PHPで何を使用するかわかりませんが、.Netでは.NetBCLに依存できますこのようなこと。

于 2010-07-23T13:30:33.023 に答える
1

MantisBugTrackingソフトウェアが国際化をどのように処理するかを見てみましょう。彼らが使用する方法はかなりいいです。

追加情報: 使用してから何年も経ちますが、ソースコードをざっと見てみると、コードのこの部分は大幅に変更されていないことがわかります。彼らは共通のメッセージカタログを使用し、多くの製品が使用するメッセージアプローチを取得します。彼らの言語APIは非常に単純です-phpxref出力が利用可能であり、それはそれほど驚くべきことではありません。includeメッセージカタログは、単に'dを取得するPHPスクリプトとして実装されます。たとえば、英語のカタログには次のようなエントリが含まれています。

$s_new_bug = 'New Issue';
$s_bugnote_added = 'Note Added';

約1,600の宣言が含まれています。興味深い魔法はの中で起こりlang_loadます。言語がロードされると、カタログファイルが含まれるため、言語が定義するすべての変数がローカルスコープで定義されます。 Lang_loadローカルで定義された変数を反復処理し、変数名に基づいてメッセージマップを作成して、名前でメッセージを検索できるようにします。たとえば、前のスニペットを読み込んだ後は、次のステートメントが実行されたかのようになります。

$g_lang_strings['en']['new_bug'] = 'New Issue';
$g_lang_strings['en']['bugnote_added'] = 'Note Added';

UIが「ハードコードされた」文字列にアクセスする必要がある場合、UIは次のような呼び出しを使用しますlang_get('new_bug')

  1. 現在のユーザーの設定で優先言語を検索します
  2. を呼び出して、言語マップがロードされていることを確認しますlang_load()
  3. 適切な言語マップから値を返します

興味深いのは、すべての機械が怠惰にロードされていることです。そのうちの1つにアクセスする必要があるまで、50ほどの言語が定義されているという事実にお金を払う必要はありません。全体として、これはおそらく私が何年にもわたって掘り下げてきた最も印象的なPHPアプリケーションの1つです。

于 2009-11-11T19:51:20.063 に答える