Expressの同じレイアウトで同じコンテンツの複数のバージョン/言語を実装する最良の方法は何でしょうか。
これをやればいいの?
app.get("/", function(req, res) {
res.render(language + "/index");
});
または、よりスマートな/より良い方法はありますか?
テンプレートを1つだけ保持することをお勧めします。言語ごとに1つのテンプレートを使用する場合は、すぐに手に負えなくなってしまうだけでなく、多くのコンテンツ(およびテンプレートに挿入する少量の「ロジック」)も複製されます。多くのアプリケーションは、国際化を行うためにgettextと呼ばれるツールを使用しています。 https://github.com/DanielBaulig/node-gettext にnode.jsライブラリがあります
あるいは i18n-node もあります。 Express jsと少し統合されているようです。
i18n-node は、使用する必要がある最も単純で最大のモジュールです。 JavaScriptコードで直接使用するか、または高速jsを使用したJade/Handlebarテンプレートで使用できます。
なぜi18nを使うべきですか?
en.json
_内に_./locales/
_が自動的に生成されます。これは、新しい翻訳の作成を開始するためのマスターファイルとして機能します。__('Hello %s', 'Marcus')
は_Hallo Marcus
_を返します、en.js、fr.jsなどのlangフォルダーにjsonオブジェクトを定義できると思いました。このjsonファイルには、ユーザーの言語設定に従ってテンプレートにレンダリングするキーと値のペアが含まれており、lang設定はデータベースに含めることができます。
そして、このfr.jsなどをres.localsに保存して、すべてのテンプレートを呼び出すことができます。
これは適切ですか?