2009-11-16 88 views
4

任何人都可以指出我在數據庫級任務上處理國際化的一些模式嗎?數據庫級別的國際化

最簡單的方法是爲每個文本列添加每種語言的文本列,但這是某種程度上的臭味 - 真的我想有能力動態添加支持的語言。

我要來的解決方案是保存在模型中的一種主要語言以及獲取翻譯和保存翻譯的字典實體。

我想要的只是聽到其他已完成此操作的人。

+1

數據庫級別是什麼意思?是保持一個字典數據庫/表,並以編程方式(數據庫外)執行翻譯你正在尋找什麼,或者你正在數據庫中談論? – 2009-11-16 12:00:08

+0

我在數據庫中有一些需要翻譯的字段。例如 - 我有一些分類器,有名稱,我在系統中的其他地方使用這些名稱。我需要在當前語言環境中顯示分類器名稱。 – miceuz 2009-11-16 12:20:03

回答

1

您可以創建一個包含三列的表格:target language code,原始字符串,已翻譯的字符串。表上的索引將位於前兩列,但我不會將此表綁定到具有外鍵的其他表。您需要爲每個您運行的查詢中需要翻譯的每個術語添加一個連接(可能是左連接來解釋缺失的翻譯)。但是,這會使您的所有查詢變得非常多毛,並且可能會導致性能下降。

您需要注意的另一件事實際上是翻譯條款和維護最新的翻譯表。這對於直接針對數據庫非常不方便,而且通常由非技術人員完成。

通常,在本地化應用程序時,您會使用類似gettext的內容。這套工具背後的想法是解析可以解析源代碼來提取翻譯字符串,然後從中創建翻譯文件。由於這個套件已經存在很長時間了,有很多不同的實用工具可以幫助完成翻譯任務,其中一個是Poedit,這是一個很好的GUI編輯器,可以將字符串翻譯成不同的語言。生成唯一的術語列表可能會更簡單,因爲它們以gettext可以解析的格式顯示在數據庫中,並在應用程序代碼中進行翻譯。這樣你就可以使用相同的技術來翻譯應用程序中的硬編碼字符串和數據庫值。