簡體   English   中英

了解如何本地化資源

[英]Understanding how to localize resources

我知道有很多例子,但我沒有理解它...我只想本地化一些字符串和文本文件。 這就是我目前接收字符串或文件內容的方法

MyResources.ResourceManager.GetString(name + "IdentString");

現在我正在尋找一種存儲其他語言的方法。 資源被包裝到ASP.Net MVC應用程序使用的提供程序(目前大約有12個提供程序,但將來會增長)(沒有附加視圖!)

據我所知,有兩種方法可以存檔:

  • 包含資源的每種語言的附屬程序集
  • 基於文件的ResourceManager,其中每種語言都有自己的二進制資源文件

據我所知,我必須在兩種情況下都使用外部工具,並且必須將一些附屬程序集鏈接到資源管理器自動加載的源資源(每種語言一種),或者我必須使用加載的FilebasedResourceManager來自外部位置的資源文件(每種語言的二進制版本)。 這意味着在這兩種情況下,只有原始資源嵌入到項目中,而其他資源只是以某種形式附加 我做對了還是我完全錯了?

一些額外的信息

沒有必要說我不知道​​應該采取哪種方式,或者它們如何真正起作用,或者是否有其他方式。 當我開始尋找這個時,我考慮在像fr-resource.resxde-resource.resx這樣的約定之后命名我的資源文件,以便資源管理器可以獲取線程文化或給定的文件並嘗試獲取字符串從此資源或回退到默認值。 但我發現了一些關於衛星的東西(只是讓我想起了一首該死的歌)應該注冊到web.config但需要只用外部工具構建......

根據文化重命名resx文件,您走在正確的道路上。 但是,您可以將它們命名為以下內​​容

  • resources.resx (這將是默認的后備。)
  • resources.de.resx (這將是文化中立的德國資源。)

如果將這些文件放在默認resx旁邊並將它們包含在項目中,那么編譯器將負責構建sattelite程序集,資源管理器將負責查找它們。

Sattelite裝置將被引入一個帶有文化名稱的子文件夾中。 因此,如果您將\\myApp.exe作為輸出,您還將獲得\\de\\myApp.resources.dll

您無需執行任何操作即可將這些文件鏈接到原始程序集。 如果你“忘記”提供這些sattelite程序集,你的應用程序就沒有德國資源並且會回到默認狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM