2008-09-16 62 views
3

我應該如何將文本存儲(並提供)在全球範圍內用於多種語言的網站上?內容主要以500多字的文章形式出現,但我也需要翻譯每頁上的小段文字(例如「打印此文章」或「返回菜單」)。以多種語言存儲內容?例如。英文,法文,德文

我知道有一些處理多種語言幾個CMS包,但我有一個與我們現有的ASP系統也進行整合,所以我忽略了這樣的解決方案。

一個問題我有是,谷歌應該可以找到網頁,甚至國外用戶。我不太關心處理日期和貨幣的問題。

我擔心,留給我自己的設備,我會發明這樣做哪些工作的一種方式,但最終釀成大禍!我想知道你在真實項目中實際使用了哪些專業解決方案,而不是未經嘗試的想法!非常感謝。


我看着RESX文件,但覺得他們不適合所有,但最瑣碎的翻譯解決方案(如果有人想知道,我會詳細說明)。

谷歌將幫助我翻譯的文本,而不是存儲/呈現它。

有沒有人曾在該上呈現自己的代碼依賴一個多語言的項目?


上服務了在以下幾個方面內容有任何想法,這是最好的?

(這些都不是真實的URL,我只是顯示例子)

回答

5

首先將所有語言的所有代碼放在一個域中 - 這將有助於您的谷歌排名。

我們擁有完全多語言的系統,本地化存儲在數據庫中,但與Web應用程序一起緩存。

無論我們希望有一個本地化顯示我們使用:

<%$ Resources: LanguageProvider, Path/To/Localisation %> 

那麼在我們的web.config:

<globalization resourceProviderFactoryType="FactoryClassName, AssemblyName"/> 

FactoryClassName然後實現ResourceProviderFactory提供實際的動態功能。使用字符串鍵「路徑/到/本地化」將本地化存儲在數據庫中

緩存本地化值非常重要 - 您不希望每個頁面上都有大量的數據庫查找,並且我們會緩存數千沒有性能問題的本地化字符串。

使用用戶當前的瀏覽器本地化來選擇要提供的語言。

1

如果您使用的是.NET,我會建議與去一個或多個資源文件(.resx)。在MSDN上有很多這方面的文檔。

2

你可能想看看GNU Gettext項目了 - 至少東西開始。

編輯補充信息有關的項目:

我使用Gettext的技術在不同的技術,包括C++/MFC和J2EE/JSP幾個多語言項目的工作,和它的工作一切正常。但是,您需要編寫/查找自己的代碼來顯示當然的本地化數據。

0

如果您只是在擔心被翻譯的文章內容,並且不需要完全集成的選項,我過去使用google translation,它在較小的範圍內效果很好。

+1

你有沒有讀過你的母語的谷歌翻譯文本?不是真正的專業選擇。 – OregonGhost 2008-10-15 08:50:58

+0

我已經使用Google語言翻譯作爲臨時解決方案,並且有來自'外國人'的正面評論!誠然,我對這些感到驚訝! – 2009-06-01 11:40:29

1

與大多數常規編程問題一樣,這取決於您的需求。

對於靜態文本,我會使用RESX文件。對於我來說,作爲.Net程序員,它們很容易使用,.Net Framework對它們有很好的支持。

對於任何動態文本,我傾向於將這些信息存儲在數據庫中,特別是如果網站維護人員將成爲非開發人員。在過去,我使用了兩種方法,添加一個語言列併爲不同的語言創建不同的條目,或創建一個單獨的表來存儲特定於語言的文本。

對於第一種方法可能看起來像這樣的表:

文章編號|語言ID |語言特定文章文本|創建於|創建日期

這適用於您可以爲給定文章創建不同條目並且不需要保持與這些不同條目相關聯的任何數據同步(例如更新時間戳)的情況。

另一種方法是有兩個單獨的表格,一個用於非語言特定的文本(id,創建日期,創建用戶,更新日期等)和另一個包含語言特定文本的表格。所以表格可能看起來像這樣:

第一張表:Article Id |創建於|創建日期|由|更新更新日期

第二張表:Article Id |語言ID |語言特定文章文本

對我來說,問題歸結爲更新非語言相關數據。如果你正在更新數據,那麼我會傾向於第二種方法,否則我會採用第一種方法,因爲我認爲它更簡單(不能忘記KISS原則)。

0

精彩的問題。

我用我自己製作的網站(鏈接在我的個人資料中)用自制的Python 3腳本解決了這個問題,它可以即時翻譯一般模板,並從請求的語言插入特定的內容頁面(或由Apache -語言)。

這很有趣,因爲我學習了Python並編寫了自己的迷你庫來創建內容頁面。一個缺點是我們的主機沒有Python 3,但是我讓我的腳本生成靜態HTML(原始的是檢查用戶代理),然後將其上傳到服務器。這工作到目前爲止,並使網站的新語言版本現在是一件輕而易舉的:)

這種方法最大的缺點是,它是從頭開始寫東西耗時。所以,如果你想要,請給我線,我會幫你使用我的腳本:)

0

至於URL格式,我使用site.com/content/example.fr,因爲這允許Apache進行語言協商,以防有人要求/content/example並有瀏覽器說它喜歡法語。當你這樣做的時候,Apache也增加了.html或者其他的獎勵。

因此,當一個請求是example,我有文件

example.fr 
example.en 
example.vi 

Apache會自動example.vi繼續與越南配置的瀏覽器或example.en與德國的配置瀏覽器的人的人。非常有用。

相關問題