2008-11-25 141 views
1

在我的asp.net應用程序中,用戶可以上傳幾個本地化圖像(按鈕)。例如,他會上傳'send.gif','send.fr.gif','send.en-UK,gif;查找本地化文件

當訪問者來到他的頁面時,我需要根據訪問者的語言環境提取正確的文件。

是否有api(或簡單的方法)根據語言環境找到最合適的圖像 - 例如,如果訪問者來自法國,API將返回'send.fr.gif',如果訪問者來自澳大利亞API將返回'send.en.gif'等...

邏輯應該與ASP.NET基本上選取合適的本地化資源文件相同。

謝謝。

回答

1

從您的帖子看來,您已經有辦法檢測用戶區域設置。所以我會假設你持有這些信息。

我們這樣做的方式是將用戶區域設置存儲在會話中,並將所有本地化資源存儲在相應的目錄名稱中。例如:

/ 
    /images 
     sendButton.gif 
     background.gif 
     /de-de/ 
      sendButton.gif 
     /fr-fr/ 
      sendButton.gif 

一個HttpHandler然後使用本地化目錄在默認目錄的頂部,基於當前用戶的語言環境映射。這允許將圖像無縫集成到所有代碼和css中,並且如果未找到本地化圖像,將使用基本目錄中的圖像。

如果需要更復雜的分類,那麼我會建議你的國家嵌入你的語言。像這樣:

/ 
    /images 
     sendButton.gif 
     background.gif 
     /de 
      /de 
       sendButton.gif 
     /fr 
      sendButton.gif 
      /fr 
      /be 

然後,您可以指定語言級別的資源。甚至讓你的http處理器映射文件以一種方式傳播,而不是傳播到樹上。因此,fr-fr資源將用於所有沒有這個名稱的資源的法國拼字國家。

當然在這一點上它確實變得相當複雜,尤其是當決定哪一個法語國家被用作法語的默認語言時(如果沒有指定的話)。你可能希望開始存儲某個地方的優先級,以便決定你所服務的地點。資源是否在樹上傳播。但作爲一個透明的結構來定位圖像,同時保持標籤和CSS清潔,這應該工作得很好。

+0

謝謝 - 但基本上我的問題是編寫HttpHandler有多複雜? UI區域設置和目錄之間並不總是有1-1映射。需要有一個回退機制。例如,如果有FR-FR和法國比利時(FR-BE)即將到來 - 他應該去哪裏? – LeJeune 2008-11-25 13:05:04