Phiên dịch tiếng Anh sang tiếng Việt bằng VB
Viết ứng dụng để dịch một đoạn văn tiếng Anh sang tiếng Việt
dường như là việc quá ư khó khăn. Tuy nhiên, nếu ta chỉ xét
những câu đàm thoại thông thường thì việc "phiên dịch tự động"
không phức tạp lắm. Xin trình bày một ý tưởng để giúp bạn
học tiếng Anh tốt hơn.
Bạn hãy tạo dự án mới trong VB rồi bấm Ctrl+T. Trên hộp thoại vừa hiện ra, bạn chọn Microsoft
Rich Textbox Control 6.0 và nhấn OK. Tiếp theo, bạn thiết kế giao diện như hình 1 với các thuộc
tính như trong bảng 1 và bảng 2 rồi đánh đoạn mã 1.
Sau khi lưu ứng dụng, bạn tạo 3 tập tin văn bản TXT trong thư mục của ứng dụng:
- phrases.txt: chứa các mệnh đề đặc biệt hay thành ngữ tiếng Anh (at night, at times, ).
- verbs.txt: chứa các chủ ngữ và động từ tiếng Anh (I am, he is, we do, ).
- words.txt: chứa các từ tiếng Anh thông dụng (I, hello, you, ).
Cả ba tập tin như vậy có dạng thức như sau:
"tu_tieng_Anh_1","nghia_1"
"tu_tieng_Anh_2","nghia_2"
Bạn chạy thử và đánh câu tiếng Anh ở khung văn bản phía trên xem sao. Thật ngạc nhiên, phía
dưới xuất hiện câu tiếng Việt tương ứng! Bạn chú ý, ứng dụng hoạt động tốt hay không là do cơ
sở dữ liệu (CSDL) từ ngữ của ta có phong phú hay không. Bạn nên đưa nhiều thành ngữ vào tập
tin phrases.txt. Bạn có thể tải mã nguồn và CSDL của ứng dụng tại: www.echip.com.vn. Chúc
bạn thành công.
H1
Bảng 1
Control Name Font
RichTextbox1 txtenglish 14, Bold
RichTextbox2 txtvietnam 14, Bold
Bảng 2
Control Name Interval
Timer1 t_1 5
Timer2 t_2 1
Đoạn mã 1
Dim vn_words(1 To 1000)
Dim en_words(1 To 1000)
Dim dotime As String
Dim strings As String
Dim check_verbs As Integer
Dim check_phrases As Integer
Dim englishtext, vietnamtext
Private Sub Form_Load()
Form1.Show
t_1.Enabled = False
t_2.Enabled = True
listwords = 1
Open (App.Path & "\phrases.txt") For Input As #1
Do While Not EOF(1)
Input #1, englishtext, vietnamtext
en_words(listwords) = englishtext
vn_words(listwords) = vietnamtext
listwords = listwords + 1
Loop
Close #1
check_phrases = listwords
Open (App.Path & "\verbs.txt") For Input As #1
Do While Not EOF(1)
Input #1, englishtext, vietnamtext
en_words(listwords) = englishtext
vn_words(listwords) = vietnamtext
listwords = listwords + 1
Loop
Close #1
check_verbs = listwords - check_phrases
Open (App.Path & "\words.txt") For Input As #1
Do While Not EOF(1)
Input #1, englishtext, vietnamtext
en_words(listwords) = englishtext
vn_words(listwords) = vietnamtext
listwords = listwords + 1
Loop
Close #1
End Sub
Private Sub t_1_Timer()
If txtvietnam.Text = "" Then Exit Sub
If dotime = txtvietnam.Text Then Exit Sub
txtenglish.Text = ""
whereareweat = 1
dotime = txtvietnam.Text
strings = txtvietnam.Text
For i = 1 To 13
strings = Replace(strings, vn_words(i), en_words(i) & " ")
Next i
For i = 1 To 1000
strings = Replace(strings, vn_words(i), en_words(i) & " ")
Next i
txtvietnam.Text = strings
End Sub
Private Sub t_2_Timer()
If txtenglish.Text = "" Then Exit Sub
If dotime = txtenglish.Text Then Exit Sub
txtvietnam.Text = ""
whereareweat = 1
dotime = txtenglish.Text
strings = txtenglish.Text
For i = 1 To check_phrases
strings = Replace(strings, vn_words(i), en_words(i) & " ")
Next i
For i = check_phrases To check_verbs
strings = Replace(strings, vn_words(i), en_words(i) & " ")
Next i
For i = 1 To 1000
strings = Replace(strings, en_words(i), vn_words(i) & " ")
Next i
txtvietnam.Text = strings
End Sub