我在为项目使用快递把手。
我们想像这样将所有语言字符串放入Firebird数据库中
---------------------------------
| ID | CODE | LANG | STRING |
---------------------------------
| 1 | HELLO | dut | Hallo. |
---------------------------------
| 2 | HELLO | fre | Bonjour. |
---------------------------------
| 3 | HELLO | eng | Hello. |
---------------------------------
...
我做了一个翻译器函数,它根据传递的CODE和语言来获取字符串,当然这是一个异步调用。
我这样定义一个助手:
app.engine('handlebars', exphbs({
defaultLayout: 'portal',
helpers: {
translate: function(language,code) {
dbfunctions.getDictionaryString(pool,code,language,function(translation,error) {
if (error) {
console.log('Error translating code ' + code + ' for language ' + language + '.')
return '[' + code + ' | '+ language + ']'
} else if (translation) {
console.log(translation) //this logs the correct database string
return translation
}
})
}
}
})
)
在我的home.handlebars文件中,编写以下代码:
<h1>{{{translate session.language 'HELLO' }}}</h1>
这将返回一个空白值,但是会记录应返回的正确字符串。
我已阅读到把手不支持异步功能。有什么解决建议吗?
答案 0 :(得分:0)
我可能只会获取特定语言的整个字符串表,并在登录时将其完全拉入会话中。这样,在加载页面时,翻译字符串始终可用。