【发布时间】:2014-05-29 20:00:15
【问题描述】:
我正在使用 node-cldr 库 (https://github.com/papandreou/node-cldr) 进行本地化,并有一个国家/地区的选项列表,http://pastebin.com/jyM5pCLn
territoriesList = cldr.extractTerritoryDisplayNames('en')
countries = _(territoriesList)
.pairs()
.filter (pair) -> isNaN(pair[0])
.zipObject()
.value()
app = express()
maxAgesOption = { maxAge: 86400000 * 30 }
if not config.server.compressAssets then maxAgesOption.maxAge = 0
i18next.backend(gettextSync)
i18next.init(i18nextOptions)
i18next.registerAppHelper(app)
app
.use( '/css', express.static( "public/css", maxAgesOption) )
.use( '/js', express.static( "public/js", maxAgesOption) )
...
.set( "countries", countries )
目前,我在territoriesList = cldr.extractTerritoryDisplayNames('en') 中设置'en' 如何将语言代码从请求中推送到这里?
我有这个
.use (req, res, next) ->
code = i18next.lng().substr(0, 2)
territoriesList = cldr.extractTerritoryDisplayNames(code)
countries = []
regions = []
territories = __.each territoriesList, (value, index, list) ->
if (isNaN(index))
countries[index] = value
else
regions[index] = value
但这对每个请求都执行此操作,因为它像中间件一样添加,中间件甚至会为每个请求运行,即使对于图像/css 请求也是如此。
但是由于这些值不会在请求之间改变,只有当用户改变语言时,它不应该是中间件?
非常感谢任何建议。
【问题讨论】:
标签: node.js express coffeescript