Hunter的大杂烩 技术学习笔记

2013-12-06

c#下繁简转换库

Filed under: 技术话题 — hunter @ 3:52 pm

转自:http://blog.kkbruce.net/2009/11/microsoft-visual-studio-international.html#.UqFslfQ9KWY注意,光装2.0是没有chineseconverter.dll的,如果只是需要繁简转换,可以直接到网上下载相关dll,在项目里引用

先看微軟的介紹:

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

01

"form1" runat="server">

02

03 "tbxTCtoSC" runat="server">
04 "btnTCtoSC" runat="server" text="繁體轉簡體">
05 "lblTCtoSC" runat="server">   
06 "tbxSCtoTC" runat="server">
07 "btnSCtoTC" runat="server" text="簡體轉繁體">
08 "lblSCtoTC" runat="server">
09
10
11


TCtoSC.aspx.vb

01 '繁簡轉換命名空間
02 Imports Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter
03 Partial Class Test_TCtoSC
04     Inherits System.Web.UI.Page
05
06     Protected Sub btnTCtoSC_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnTCtoSC.Click
07         If Me.tbxTCtoSC.Text.Length > 0 Then
08             Dim TWString As String = Me.tbxTCtoSC.Text
09             '使用ChineseConverter.Convert方法
10             '第一個參數是你要轉換的字串
11             '第二個參考是你要轉換目的語言
12             'TraditionalToSimplified是繁體轉換成簡體
13             Me.lblTCtoSC.Text = ChineseConverter.Convert(TWString, ChineseConversionDirection.TraditionalToSimplified)
14         End If
15     End Sub
16
17     Protected Sub btnSCtoTC_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSCtoTC.Click
18         If Me.tbxSCtoTC.Text.Length > 0 Then
19             Dim SCString As String = Me.tbxSCtoTC.Text
20             '使用ChineseConverter.Convert方法
21             '第一個參數是你要轉換的字串
22             '第二個參考是你要轉換目的語言
23             'SimplifiedToTraditional是簡體轉換成繁體
24             Me.lblSCtoTC.Text = ChineseConverter.Convert(SCString, ChineseConversionDirection.SimplifiedToTraditional)
25         End If
26     End Sub
27 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

1

"form1" runat="server">

2

3 "tbxNumber" runat="server" tooltip="請輸入整數,例如:12345">
4 "btnNumToChinese" runat="server" text="數字轉中文">   
5 "lblNumtoChinese" runat="server">
6 "lblNumtoJP" runat="server">
7
8
9


EastAsiaNumericFormatting.aspx.vb

01 '亞洲數字格式命名空間
02 Imports Microsoft.International.Formatters
03 '為了設定日文需要使用CultureInfo("ja")
04 Imports System.Globalization
05 Partial Class Test_EastAsiaNumericFormatting
06     Inherits System.Web.UI.Page
07
08     Protected Sub btnTCtoNum_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNumToChinese.Click
09         If Me.tbxNumber.Text.Length > 0 Then
10             Dim ChangeNumber As Integer = Convert.ToInt32(Me.tbxNumber.Text)
11             Try
12                 '會依瀏灠器做CultureInfo的選擇,如簡體瀏灠器則出現簡體中文的數字
13                 Me.lblNumtoChinese.Text = String.Format(New EastAsiaNumericFormatter(), "數字的中文是:{0:L}", ChangeNumber)
14                 '指定轉換的文字
15                 'Me.lblNumtoJP.Text = "數字的日文是:" & EastAsiaNumericFormatter.FormatWithCulture("L", ChangeNumber, Nothing, New CultureInfo("ja"))
16                 'FormatWithCulture(String, Object, IFormatProvider, CultureInfo)
17                 Me.lblNumtoJP.Text = String.Format("數字的日文是:{0}", EastAsiaNumericFormatter.FormatWithCulture("L", ChangeNumber, Nothing, New CultureInfo("ja")))
18             Catch ex As Exception
19                 Me.lblNumtoChinese.Text = "錯誤:" & ex.Message
20             End Try
21         End If
22     End Sub
23 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類別將網頁資料讀進來,然後透過上述方法去轉換內容,然後再輸出,看你是要繁轉簡或簡轉繁,應該都不成問題才是。

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress