2011-03-14 35 views
3

我在.aspx頁面中出現了一個奇怪的行爲。我在一些國際化的頁面,但我想只保留在我的資源實體或值對象我想有一個鍵值,如:連接字符串和資源值時出現問題

(pt-br) 
    CITY - Cidade 
    STATE - Estado 
    ... 

但是當我列出的實體,我想把「:」結束。像:

<asp:Label ID="LabelCity" runat="server" Text="<%$ Resources:Localizacao, CITY %>:"></asp:Label> 

但是,如果我把文本屬性中的資源後面的「:」,該頁面只顯示「:」。

我簡單的解決方案標籤的所有定義後放,但我認爲這也錯了:

<asp:Label ID="LabelCity" runat="server" Text="<%$ Resources:Localizacao, CITY %>"></asp:Label>: 

建議?

回答

1

您正確命名了:串聯。問題是,級聯是最嚴重的(如高嚴重性)國際缺陷之一。 而不是做你所做的,我建議你把整個字符串(或在最壞的情況下帶有佔位符的字符串)放入資源文件中,即使你必須重複資源(這些重複資源可能以不同方式翻譯,具體取決於上下文)。

讓我給你舉個例子:回來時,我在本地化團隊,我們與多個頁面的控制檯,每個頁面有一個標題這是「有事政策」,即「防火牆政策」,「防病毒和反間諜軟件政策「。有人認爲這是一個好主意,以節省一些寶貴位,簡單地串接標題在一起:

String title = Resources.getString("Firewall") + "<b>" + Resources.getString("Policy") + "</b>"; 

我們唯一的問題是正確的波蘭語翻譯聽起來像「Polityka zapory ogniowej」,那就是「政策」第一。實際上,我們把它翻譯爲「Zapora ogniowa Polityka」,這是遠遠不夠正確的翻譯(注意,「防火牆」的翻譯應該是屬格...譯者不知道他在翻譯什麼,因此翻譯。它可能無法修復,因爲我們無法重新排序的句子。

需要外在的整串的修復,所以實際上所有的原始開發商的良好願望去鋪平了地獄。

如果您請繼續閱讀,請記住,所有使用法語的冒號必須以空格開頭(這只是他們的規則)。重複使用相同的翻譯以建立多個句子可能會不允許......

+0

完美的論點!我是我的案子,我只會翻譯成葡萄牙語和西班牙語。但我會改變我現在所做的。 tks – Custodio 2011-03-15 21:12:45

0

Expressions<%$)是一組語法,所以如果你想在那裏使用表達式,它是一個全部或全部。您可以按照您的建議進行操作,也可以將代碼中的值設置爲替代選項。

但是,我認爲你的角色應該在你的資源文件中。所有的語言都會使用同一個字符嗎?這是否適用於從右到左的lanugages?

+0

只是左至右的語言,但關鍵將在多個地方使用。例如:字段{0}是必需的。當{0}是資源 – Custodio 2011-03-14 13:44:21

4

有完全相同的問題,經過一番搜索轉化這個

<asp:Label ID="label" runat="server" Text="<%$ Resources: Resources, color %>" />: 

這樣:

<asp:Label ID="label" runat="server"> 
    <%= Resources.Resources.color + ":"%> 
</asp:Label> 
+0

這種方法也爲您提供智能感知。謝謝。 – 2015-02-26 14:32:57

+0

您還可以擺脫串聯並將冒號移出標籤 <%= Resources.Resources.color%>: – 2015-02-26 14:51:15