ユーザーがいくつかのページを要求し、私は(サーバー側で)彼/彼女のブラウザーの言語が何であるかを知りたいです。だから私は正しいメッセージでテンプレートをレンダリングすることができました。
クライアント側では簡単です。
var language = window.navigator.userLanguage || window.navigator.language
ユーザーがいくつかのページを要求し、私は(サーバー側で)彼/彼女のブラウザーの言語が何であるかを知りたいです。だから私は正しいメッセージでテンプレートをレンダリングすることができました。
クライアント側では簡単です。
var language = window.navigator.userLanguage || window.navigator.language
req.headers ["accept-language"]を使用して、ユーザーがブラウザーで設定した言語/ロケールを取得できます。
サポートを簡単にするために、ロケールモジュールを調べることをお勧めします。
request.acceptsLanguages
の解析済みバージョンが含まれますrequest.headers['accept-language']
。
Express 4.xでは、ビルドインreq.acceptsLanguages(lang [、...])を使用して、特定の言語が受け入れられるかどうかを確認できます。
var express = require('express');
app.get('/translation', function(request, response) {
var lang = request.acceptsLanguages('fr', 'es', 'en');
if (lang) {
console.log('The first accepted of [fr, es, en] is: ' + lang);
...
} else {
console.log('None of [fr, es, en] is accepted');
...
}
});
Express 4.xを使用して、受け入れられるすべての言語のリストを取得するには、モジュールacceptsを使用できます。
var express = require('express'), accepts = require('accepts');
app.get('/translation', function(request, response) {
console.log(accepts(request).languages());
...
});
リクエスト言語を設定してグローバルに使用するミドルウェア:
// place this middleware before declaring any routes
app.use((req, res, next) => {
// This reads the accept-language header
// and returns the language if found or false if not
const lang = req.acceptsLanguages('bg', 'en')
if (lang) { // if found, attach it as property to the request
req.lang = lang
} else { // else set the default language
req.lang = 'en'
}
next()
})
これで、「req.lang」にアクセスできます
app.get('/', (req, res) => {
res.send(`The request language is '${req.lang}'`)
})
翻訳を使用した例
const translate = {
en: {
helloWorld: "Hello World!"
},
bg: {
helloWorld: "Здравей Свят!"
}
}
app.get('/hello-world', (req, res) => {
res.send(translate[req.lang].helloWorld)
})
の文字列を解析する必要がありますreq.headers["accept-language"]
。これにより、クライアントからの優先言語の優先リストが提供されます。req.acceptsLanguages(lang [, ...])
また、ご使用の言語がサポートされているかどうかを確認することもできます。
最初は正しく理解するのが非常に難しい可能性があるため、言語マッチング作業にはexpress-request-languageを使用することを強くお勧めします。
ほとんどの場合、言語を一致させるだけでは十分ではありません。ユーザーは、優先言語を変更したい場合があります。express-request-language
優先言語をCookieに保存するのに役立ち、サーバーに優先言語を変更するためのURLパスも提供します。
上記のすべての機能は、ほんの数行のコードで実行できます。
app.use(requestLanguage({
languages: ['en-US', 'zh-CN'],
cookie: {
name: 'language',
options: { maxAge: 24*3600*1000 },
url: '/languages/{language}'
}
}));
一致しない場合、ミドルウェアはデフォルトの言語(en-US
上記)にも一致します。