亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

文化不敏感 VS 文化敏感

文化不敏感 VS 文化敏感

C#
夢里花落0921 2021-11-14 17:27:04
我已經看到很多關于文化不敏感和文化敏感的時間,我不知道它們之間的區別究竟是什么。在一些書中,他們將說明符分為兩類:不區分文化的日期/時間格式字符串和區分區域性的日期/時間格式字符串我知道說明符,但我不知道敏感和不敏感。有人可以指導我嗎?
查看完整描述

2 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

首先,我建議您參閱.NET 全球化和本地化以獲取更多信息。


有些價值觀/實體在不同的國家和地區受到不同的對待。此類實體包括貨幣符號、數字分隔符、日期等。向用戶顯示此數據時,您必須以對他們有意義的方式對其進行格式化。例如,如果您在貸款攤銷申請中顯示金額如下:


Console.WritLine("$" + amount.ToString());

這只會在使用美元的國家有效。并且沒有其他格式。為了使這種文化敏感,你必須這樣做......


Console.WriteLine(amount.ToString("C"));

通過這樣做,.NET 將使用正確的貨幣符號、數字分隔符和小數點來運行應用程序所在的區域性。


在某些情況下,您需要在特定文化中顯示此類數據。這樣做會改變它的顯示方式,但是您可以通過以下方式提供要使用的文化......


static void Main(string[] args)

{

    decimal foo = 23434534.53M;


    Dump(foo);


    var culture = CultureInfo.CreateSpecificCulture("en");

    CultureInfo.CurrentCulture = culture;

    Dump(foo);


    culture = CultureInfo.CreateSpecificCulture("es");

    CultureInfo.CurrentCulture = culture;

    Dump(foo);


    culture = CultureInfo.CreateSpecificCulture("en-ZA"); // South Africa

    CultureInfo.CurrentCulture = culture;

    Dump(foo);

}


static void Dump(decimal value)

{

    Console.WriteLine(value.ToString("C"));

    Console.WriteLine(DateTime.Now.ToLongDateString());

}

當您在運行時更改區域性時,后續調用將值顯示為貨幣將更改貨幣符號、在某些情況下所述貨幣符號的位置、數字分隔符和小數點。


這也會影響數據的顯示方式,如您所見。


您還可以使用它來更改 UI 中顯示的文本。如果您的應用程序支持多種語言,例如美國英語、英國英語、西班牙語和法語,您無需事先了解這些語言。此外,您不能再對像“名字:”這樣的字符串文字進行硬編碼。一些簡單的事情可能會有所不同,例如顏色的拼寫(英國英語顏色)。對于不會說英語但在各個國家/地區受到重視的人來說,這些事情可能無關緊要。例如,如果您的應用程序向孩子們展示了正確的拼寫,您希望它根據它所在的位置正確地進行拼寫。


在這種情況下,您可以設置 UI 區域性并使用資源 (resx) 文件來放置您的字符串。在運行時您從資源文件中加載您的字符串,并且 .NET 運行時可以根據它檢測到的區域性加載正確的 resx 文件電腦設置為。如果沒有匹配項,它將回退到您的默認文化。


在我的測試應用程序中,我創建了 2 個資源文件,一個名為 Strings.resx,另一個名為 Strings.es.resx。第一個是默認語言,另一個是西班牙語。問候用戶時,我不必對問候進行硬編碼,但可以按如下方式使用它


static void Main(string[] args)

{

    Console.WriteLine(ConsoleApp1.Strings.HelloString);


    CultureInfo.CurrentUICulture = CultureInfo.CreateSpecificCulture("es");

    Console.WriteLine(ConsoleApp1.Strings.HelloString);

}

導致以下

http://img1.sycdn.imooc.com//6190d6850001a76710150540.jpg

這些技術一起可以幫助您創建對用戶的語言和文化敏感的應用程序。如果您需要覆蓋它,您也可以通過指定在呈現數據時使用哪種文化來有意地做到這一點。對不同的實體進行硬編碼對文化不敏感,并且無論運行它的機器的語言環境如何,都會顯示相同的內容。


查看完整回答
反對 回復 2021-11-14
?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

直接與用戶交互時,應使用對文化敏感的操作。在與后端流程和交換系統(包括持久化數據)交互時,應始終使用對文化不敏感的操作。支持文化特定操作的數據可能會因多種原因發生變化。支持對文化不敏感的操作的數據永遠不會改變,因此可以安全地保存和交換。


查看完整回答
反對 回復 2021-11-14
  • 2 回答
  • 0 關注
  • 308 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號