我使用gettext來翻譯我的網頁。我已經將我的網頁幾乎翻譯成四種語言(西班牙文,英文,法文和葡萄牙文)。我只在我的php文件中翻譯了這些東西。將數據庫翻譯成不同的語言
我想要的是也翻譯我的數據庫中的東西,例如,我存儲在那裏的一些文本。我該怎麼做?
我想用echo _($var);
代替從db中獲得值的變量,但我認爲這不是一個真正的選擇。
那麼,你會推薦我另一種方法來做到這一點,或者我必須使用gettext來翻譯它嗎?
謝謝!
我使用gettext來翻譯我的網頁。我已經將我的網頁幾乎翻譯成四種語言(西班牙文,英文,法文和葡萄牙文)。我只在我的php文件中翻譯了這些東西。將數據庫翻譯成不同的語言
我想要的是也翻譯我的數據庫中的東西,例如,我存儲在那裏的一些文本。我該怎麼做?
我想用echo _($var);
代替從db中獲得值的變量,但我認爲這不是一個真正的選擇。
那麼,你會推薦我另一種方法來做到這一點,或者我必須使用gettext來翻譯它嗎?
謝謝!
我不知道數據庫的結構,但是一種解決方案是將db值轉換爲適當的語言並使用語言鍵創建表以便表得到規範化,並根據語言選擇可以引用該表。
是的,我想過這個!如果我找不到更好的東西,我會這樣做! – peregraum
對我來說很好的一個實現是將所有UI代碼保留在UI端。這意味着將項目轉換爲JavaScript文件,以便Grunt任務將其從JavaScript文件中提取出來。 Ruben Vermeersch在他的文章a Marking strings in JavaScript code as translatable中談到了這一點。以下是我在測試項目中用於演示此想法的代碼示例。
angular.module('Test')
.controller(['gettext', function(gettext) {
// Arrays Required for Translation Grunt Task (Do Not Remove)
var productNames = [
gettext("Access"),
gettext("Database Compare"),
gettext("Excel"),
gettext("Lync"),
gettext("OneNote"),
gettext("Outlook"),
gettext("PowerPoint"),
gettext("Publisher"),
gettext("Visio"),
gettext("Word")
];
}]);
你註釋以這樣的方式你的JavaScript後,再次運行「咕嚕提取物」的任務,你應該在你的* .POT文件中看到這些值。
現在,您已準備好進行翻譯並將其編譯回您的翻譯JavaScript文件。當UI現在從後端獲得「Access」時,例如,如果選擇西班牙語,它將知道如何將其轉換爲「Acceso」。
我在我的博客文章a Localization With Angular-GetText中更深入地討論了這一點。如果您仍然有疑問,請參閱並告訴我。
我處於類似的情況,我們決定用angular-gettext做前端的所有翻譯。
基本上我們從我的數據庫中提取了所有我們需要的字符串,並將它們放到一個html文件中。然後創建一個運行在內插值上的postTranslate
過濾器。
欲瞭解更多詳情請看我的回答here。
我寫了一篇關於這段時間的博客文章(http://rwec.co.uk/q/atom-i18n-1)。我的解決方案是特定於postgres的(或者實現是,無論如何),但是我列出了其他我遇到的其他解決方案。 – IMSoP
@IMSoP好的,謝謝!我會看看它! :D – peregraum