你沒有文化?那就自己建立一個吧!

我已經在「條列 CultureInfo 以及 Region 等資訊」這篇文章裡說明過如何找出電腦中所有可用的 Culture/Region 資訊了。可是除了這些資訊之外,我們其實也可以建立自己的 Culture Info...

 我們如果被人家說「你這個人沒有文化」,那就代表被罵了。

 

沒關係,我們如果沒有文化,就自己來建立一個,總可以吧!  :-)

我已經在「條列 CultureInfo 以及 Region 等資訊」這篇文章裡說明過如何找出電腦中所有可用的 Culture/Region 資訊了。可是除了這些資訊之外,我們其實也可以建立自己的 Culture Info。基本上,你可以從既有的 Culture Info 類別中拷貝過來修改。在以下的程式中,我就是使用 CultureAndRegionInfoBuilder 類別,拷貝了 zh-TW 的 Culture Info,再建立一個新的 Culture,名為 zh-Lee。我把 zh-TW 的貨幣符號改作 JL$,然後把週一到週日的代表文字也改了。

接著,使用 CultureAndRegionInfoBuilder.Register() 在電腦上註冊(這個指令要執行後,這個新的 CultureInfo 才能正式使用)。如果你未來不想用了,可以再使用 Unregister 改回來。

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim zhCul As New CultureInfo("zh-TW")
        Dim zhReg As New RegionInfo("zh-TW")
        Dim builder As New CultureAndRegionInfoBuilder("zh-Lee", CultureAndRegionModifiers.None)
        builder.LoadDataFromCultureInfo(zhCul)
        builder.LoadDataFromRegionInfo(zhReg)

        Dim numInfo As New NumberFormatInfo
        numInfo.CurrencySymbol = "JL$"
        numInfo.CurrencyDecimalDigits = 4
        builder.NumberFormat = numInfo

        Dim dtInfo As New DateTimeFormatInfo
        dtInfo.DateSeparator = "/"
        dtInfo.DayNames = New String() {"(日)", "(一)", "(二)", "(三)", "(四)", "(五)", "(六)"}
        builder.GregorianDateTimeFormat = dtInfo
        builder.Register()
        Response.Write("Created." & "<br /")

        Dim cul As New CultureInfo("zh-Lee")
        Response.Write("Name: " & cul.Name & "<br />")
    End Sub

 

當然,這個 Register() 只能執行一遍。我想這個就不用說了吧。


Dev 2Share @ 點部落