網頁

Microsoft Visual Studio International Feature Pack 2.0--在ASP.NET實作繁簡轉換

先看微軟的介紹:

Visual Studio International Feature Pack 2.0 擴充了先前 1.0 版的功能, 它提供了一組控制項和類別庫以幫助.NET開發人員建立符合國際化需求的應用程式。
跟我們之前介紹使用資源檔的方式不同,它提供的是控制項(Controls)和類別庫(Class Library)來幫助.NET開發人員處理各種亞洲語系上的的文字、字串處理工作。

而Visual Studio International Feature Pack 2.0是「擴充」之前1.0的功能,所以本身不含1.0的功能,如果想使用1.0提供的功能,可下載1.0進行安裝。

Microsoft Visual Studio International Pack 1.0 SR1
Microsoft Visual Studio International Feature Pack 2.0

如果你的網頁需要處理多國語言的問題,尤其是亞洲這個雙字元文字的問題,可一定要好好玩玩這個佛心級工具。想想,以前光一個「繁體轉簡體」的問題,就不知要花多少力,現在簡單幾行程式就可以完成了,.NET Framework是的越來越強大,真的是越來越愛了。

在Visual Studio International Pack 1.0 SR1的版本裡,我比較有興趣的是,CHTCHSConv.msi及EANumFormat.msi,

CHTCHSConv.msi
Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool (中文繁簡轉換類別庫 及Visual Studio Add-In Tool工具):提供了一組類別庫以幫助程式開發人員在應用程式中轉換將中文繁體至中文簡體(或是中文簡體至中文繁體). 此轉換機制使用的內建於 Microsoft office 2007 的程式, 它的以進行詞對詞的轉換, 讓轉換的品質更好. 若使用者的系統中沒有安裝Microsoft office 2007 , 此類別庫將使用傳統的字對字轉換. 除此之外, 此元件也包括了一個 Visual Studio Add-In Tool 工具可以讓使用都直接轉換存在於資源檔中的中文字串.
安裝後,將「C:\Program Files\Microsoft Visual Studio International Pack\Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool」之下的「ChineseConverter.dll」參考或複製到「Bin」目錄之下即可。

實作ChineseConverter

TCtoSC.aspx
<form id="form1" runat="server">
<div>
<asp:textbox id="tbxTCtoSC" runat="server"></asp:textbox>
<asp:button id="btnTCtoSC" runat="server" text="繁體轉簡體">
<asp:label id="lblTCtoSC" runat="server"></asp:label>    
<asp:textbox id="tbxSCtoTC" runat="server"></asp:textbox>
<asp:button id="btnSCtoTC" runat="server" text="簡體轉繁體">
<asp:label id="lblSCtoTC" runat="server"></asp:label>
</asp:button></asp:button>
</div>
</form>

TCtoSC.aspx.vb
'繁簡轉換命名空間
Imports Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter
Partial Class Test_TCtoSC
    Inherits System.Web.UI.Page

    Protected Sub btnTCtoSC_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnTCtoSC.Click
        If Me.tbxTCtoSC.Text.Length > 0 Then
            Dim TWString As String = Me.tbxTCtoSC.Text
            '使用ChineseConverter.Convert方法
            '第一個參數是你要轉換的字串
            '第二個參考是你要轉換目的語言
            'TraditionalToSimplified是繁體轉換成簡體
            Me.lblTCtoSC.Text = ChineseConverter.Convert(TWString, ChineseConversionDirection.TraditionalToSimplified)
        End If
    End Sub

    Protected Sub btnSCtoTC_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSCtoTC.Click
        If Me.tbxSCtoTC.Text.Length > 0 Then
            Dim SCString As String = Me.tbxSCtoTC.Text
            '使用ChineseConverter.Convert方法
            '第一個參數是你要轉換的字串
            '第二個參考是你要轉換目的語言
            'SimplifiedToTraditional是簡體轉換成繁體
            Me.lblSCtoTC.Text = ChineseConverter.Convert(SCString, ChineseConversionDirection.SimplifiedToTraditional)
        End If
    End Sub
End Class

以上這支程式還可以用我們之前介紹使用Button裡的CommandName及CommandArgument來改寫。

EANumFormat.msi
East Asia Numeric Formatting Library (亞洲語系的數值字串格式化類別庫):East Asia Numeric Formatting Library 提供了一組類別庫以幫助程式開發人員將數值資料格式化成亞洲語系的數值字串. 支援的亞洲語系包括了繁體中文, 簡體中文, 日文以及韓文.

將「C:\Program Files\Microsoft Visual Studio International Pack\East Asia Numeric Formatting Library」目錄之下的「EastAsiaNumericFormatter.dll」參考或複製到「Bin」之下。

實作EastAsiaNumericFormatter

EastAsiaNumericFormatting.aspx
<form id="form1" runat="server">
<div>
<asp:textbox id="tbxNumber" runat="server" tooltip="請輸入整數,例如:12345"></asp:textbox>
<asp:button id="btnNumToChinese" runat="server" text="數字轉中文">    
<asp:label id="lblNumtoChinese" runat="server"></asp:label>
<asp:label id="lblNumtoJP" runat="server"></asp:label>
</asp:button>
</div>
</form>

EastAsiaNumericFormatting.aspx.vb
'亞洲數字格式命名空間
Imports Microsoft.International.Formatters
'為了設定日文需要使用CultureInfo("ja")
Imports System.Globalization
Partial Class Test_EastAsiaNumericFormatting
    Inherits System.Web.UI.Page

    Protected Sub btnTCtoNum_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNumToChinese.Click
        If Me.tbxNumber.Text.Length > 0 Then
            Dim ChangeNumber As Integer = Convert.ToInt32(Me.tbxNumber.Text)
            Try
                '會依瀏灠器做CultureInfo的選擇,如簡體瀏灠器則出現簡體中文的數字
                Me.lblNumtoChinese.Text = String.Format(New EastAsiaNumericFormatter(), "數字的中文是:{0:L}", ChangeNumber)
                '指定轉換的文字
                'Me.lblNumtoJP.Text = "數字的日文是:" & EastAsiaNumericFormatter.FormatWithCulture("L", ChangeNumber, Nothing, New CultureInfo("ja"))
                'FormatWithCulture(String, Object, IFormatProvider, CultureInfo)
                Me.lblNumtoJP.Text = String.Format("數字的日文是:{0}", EastAsiaNumericFormatter.FormatWithCulture("L", ChangeNumber, Nothing, New CultureInfo("ja")))
            Catch ex As Exception
                Me.lblNumtoChinese.Text = "錯誤:" & ex.Message
            End Try
        End If
    End Sub
End Class

在Microsoft Visual Studio International Feature Pack 2.0的NumericConversion,新增對阿拉伯文的支援,安裝到可到「C:\Program Files\Microsoft Visual Studio International Feature Pack 2.0\NumericConversion」之下將「InternationalNumericFormatter.dll」參考或複製到「Bin」目錄之下,新增「InternationalNumericFormatter」類別,可進行對阿拉伯數字字串的設定。

舉個例子,以下是我的想法,我還沒有實作,但應該可行。
使用WebRequest類別將網頁資料讀進來,然後透過上述方法去轉換內容,然後再輸出,看你是要繁轉簡或簡轉繁,應該都不成問題才是。


工具給各位,怎麼用就看各位的功力了,拿別人的努力讓自己更上一層樓。加油。

2 則留言:

  1. 請問要複製到哪裡的Bin
    初學不太會

    回覆刪除
  2. 在網站根目錄之下,新增一個Bin目錄,然後將*.dll複製過去即可。

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。