簡體   English   中英

Handlebars.js幫助器中的異步翻譯功能

[英]Async translation function within Handlebars.js helper

我正在為項目使用快遞車把。

我們希望將所有語言字符串都像這樣放置在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>

這將返回空白值,但是會記錄應返回的正確字符串。

我已經讀過把手不支持異步功能。 對解決這個有什么建議嗎?

我可能只會獲取特定語言的整個字符串表,並在登錄時將其完全拉入會話中。 這樣,在加載頁面時,翻譯字符串始終可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM