私はすぐに伝えたい-私は自分自身の下に説明されているオプションに来ました、これはラベル/静的コンテンツにのみ適用されます。 おそらくそのような実装がありますが、私はそれをよく知りません。
現在、私はそのような実装を知っています:
- ru.phpのファイルにコードが含まれているとします。$ language ['site_title'] = 'Site Title'; phpまたはsmartyでは、この配列を使用して、{$ language.site_title}のようなテキストを出力します
- GetText Extensionの使用(smartyの関数を使用)
- smarty configの使用(またはquickyテンプレートエンジンでの多言語の実装)(実際、私の意見では、これらは最初のオプションのバリエーションです)
- データベースまたはグローバル変数にアクセスするためのsmartyの関数の使用(実際、最初の段落のトピックのバリエーション)
今、私のオプションの説明。
サイトのすべての静的コンテンツを格納するラベルのテーブル(phraze_id、language_id、value)があり、言語のテーブル(language_id、title)もあります。 これらは、一緒に作業するテーブルです。 次に、テンプレートのあるフォルダーを検討します。 フォルダーがあり、ソーステンプレート(テンプレート/ユーザー)が保存されているユーザーと、一時的なシャロンのフォルダー(tmp /ユーザー)があるとします。 今、最も興味深い瞬間。 ソーステンプレートでは、碑文の場所に[phraze {site_title}]のようなものを書きます。 管理パネルまたはクラウンの碑文を変更する場合(これは既にプライベート実装です)、テンプレートを再レンダリングし([phrase {site_title}]を「サイトタイトル」に置き換えます)、変更したテンプレートをtmp / users / ruまたはtmp / users / enフォルダーに保存します舌から。 ここでは、テンプレートの取得元を賢く「言う」必要があります。 この実装により、一定の関数呼び出し/データベースからの取得のコストを回避し、特定のイベントに対してのみこれを行うことができます。