2010-11-05 121 views
4

我剛剛獲得了一個需要本地化的項目。
我剛剛遇到meta:resourcekey以及它如何與本地資源文件結合使用。本地化WebForms而不過度使用meta:resourcekey

我的問題是:我必須這樣做嗎?
考慮這個例子馬上MSDN:

<asp:Button ID="Button1" runat="server" Text="DefaultText" 
     meta:resourcekey="Button1" /> 

如果我讀這是第一次(這我),我會說:「爲什麼指定Button1兩次?」
如果<@ Page @>已經有Culture設置爲auto,並且存在本地資源文件,則可以找到每個控件的本地資源(如果有的話),而不必爲頁面上的每個單一控件執行此雙重提及。
我看了一頁,我們已經有這樣做,它看起來像混亂,如果你問我。

我在這裏錯過了什麼嗎?
或者這種方法已經過時,有更好的方法來做到這一點? 所有輸入(+/-)表示讚賞。
謝謝!

+0

您可以在撰寫本文時避免「指定兩次」。然後,您可以編寫簡單的腳本(即Perl腳本),它將爲每個標記添加meta:resourceKey屬性;這也可以通過添加resx文件來外化所需的文本。我不確定是否沒有Visual Studio命令或擴展來做到這一點。 – 2010-11-05 09:49:05

回答

4

我同意在meta:resourcekey屬性中第二次指定控制標識符似乎是多餘的,但這是有原因的。

假設您正在維護一個以42種語言爲本地化的應用程序。假設其中一些語言的翻譯被外包給6個不同的承包商。

現在想象一下,您絕對必須將您的按鈕的IDButton1更改爲defaultButton。什麼是最好的方式來做到這一點?

  • 更改ID屬性,離開meta:resourcekey因爲它是,並且在你快樂的方式,或

  • 更改ID屬性,然後讓他們使用新ID修改幾十個資源文件,然後打電話給你的所有承包商,要求他們修改他們提供給你的資源文件?

+0

我同意你的看法。我要買它。 – BeemerGuy 2010-11-06 01:22:41

+0

感謝您的解釋。然而,這並不能解釋爲什麼'meta:resourcekey'對於本地化工作是強制性的,而不是在未指定時默認爲控制ID。 – Medinoc 2014-07-01 16:21:06

+0

@Medinoc,這是因爲本地化是選擇加入。如果沒有該屬性,ASP.NET將不會嘗試本地化元素。 – 2014-07-01 17:05:00

相關問題