2012-06-19 54 views
2

我需要爲我的(可伸縮)Web應用程序中的靜態文本設計翻譯機制/策略 - 這些應用程序基於HTML,JQuery/JavaScript在ASP.NET環境(但沒有服務器端控件)異步jQuery調用http處理程序。如何從存儲在數據庫中的翻譯中本地化靜態網站文本?

我已經使用Globalize成功地本地化數字,日期等,但是現在需要整理文本翻譯。

翻譯的文本被適當地存儲在數據庫中(通過本地合作伙伴在另一個應用程序維護),因此,我不想使用基於ResX相當於一個文件,像jQuery Localisation/jQuery Localize/jQuery-i18n-properties的方法,而不是我的解決方案後,類似於extending the Resource-Provider Model,本地化ASP.NET控件(我沒有),以從數據庫中獲取翻譯。

客戶端的方法:我只是偶然發現i18next's dynamic (non-static) resouce route,我試圖找出如果我能恢復從一個HTTP處理程序類似的東西(和緩存中JStorage/LawnChair)填寫佔位/標籤使用the jQuery function或者採取類似Moustachehogan.js模板的方法。

服務器端方法: 修改HTML,它是服務之前,例如this answer建議使用HttpResponse.Filter修改響應服務器端(見this article)。由於緩衝區是分塊的,我不得不按照建議的here捕獲整個流,這會導致性能下降,但是,我希望我可以通過頁面的​​來減輕這個影響。

或使用HTTP處理程序like this看起來像更簡單的方法,但我不太確定如何緩存此實例中的頁面的多個版本。

其他人是否有這些方法的經驗或知道任何類似的或'最佳實踐'滿足要求,特別是在性能,可擴展性和可維護性方面?

如果有什麼不清楚的,請告訴我,我是網絡開發新手。 :)

注意:這是針對在平板電腦/手持設備上運行的Web應用程序進行數據捕獲,它不是CMS或靜態網站(以前的版本用於在.Net Compact Framework上運行,大約5年,現在是時候進行更新,以便用戶可以使用非Windows設備,如android和iPad)。

+0

如果它是一個靜態站點,那麼在語言層客戶端攻擊看起來更麻煩,而不是將其轉換爲CMS並在服務器端進行。 –

+0

@Diodeus(更新後的問題)這聽起來像是一種需要考慮的方法(但這不是CMS),您能否詳細解答一個答案? (請注意HttpResponse.Filter方法)。 –

+0

你需要把它全部吸收到某種數據庫中,你如何提供它是一個單獨的問題。修補原始軟件也是一種選擇。 –

回答

0

服務器端翻譯結果相當令人費解。

我認爲最簡單的方法是使用jQuery localisation來獲取從數據庫生成的語言腳本,但是這並沒有增加任何價值,所以我只是從服務器手動使用ajax請求獲取腳本(每種語言都有一個不同的生成腳本)。

我從服務器獲得的腳本包含用於翻譯的變量(變量與控件ID的名稱相同),我將其作爲一個對象數組傳遞,例如{id:'controlid', val:controlid}適用於翻譯的方法,所以當腳本被調用時,頁面被翻譯。

這似乎並不是一個很好的最佳實踐,我所做的並不複雜,但如果有一個庫或插件完成了這一切,這將是一件好事。

Simlar to this answer

0

這就是我們如何在數據庫中處理文本的翻譯(這聽起來可能很明顯,但至少這是高度可擴展):

  1. 說你有列[ID]表tbl_Content,[標題]和[說明]只用一種語言。

  2. 我們做的是先建立列tbl_Content_Translation:[ID],[languageId],[標題]和[說明]

  3. 複製不管你對標題/描述columnns的翻譯表,以確保你沒有任何鬆動

  4. 刪除標題和描述列在原表

  5. 改變這一切,查詢該表中添加一個[languageId]參數的SP。

  6. 我們將SP附加到我們的BLL上。

  7. 最後,無論是從網頁還是網絡方法,我們都會調用BLL來訪問我們的數據。

再次,這似乎是很明顯的,但因爲它爲我們工作(在Ajax調用和正常網頁英語,法語,越南語)我認爲這可能是有用的。

+0

我們可以在下拉列表中找到各種動態數據,例如類別名稱或標題(Mr,Mrs等)的選擇,但是這個問題確實與頁面中的靜態文本,所有標籤等有關 - 他們只對每種語言都有所不同。 –

+0

儘管這聽起來像一個CMS方法,但內容就是您的網站的內容,這不完全相同,我們沒有大量的翻譯數據塊,正如我剛纔提到的,只是標籤等 - 靜態文本爲每個用戶顯示)。 –

相關問題