Dịch thuật đa ngôn ngữ (dựa vào Google Translate) (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,954
Từ bài viết này:

http://www.giaiphapexcel.com/forum/...a-code-vba-Translate-thành-Function!&p=480229
Mình chợt có ý nghĩ tạo thành 1 ứng dụng để dịch thuật đa ngôn ngữ trên Excel (thông qua 1 UserForm)

Capture.JPG




























Thấy cũng đơn giản...
Ai có hứng thú hãy mang về phát triển thêm
(yêu cầu: máy phải kết nối Internet)
------------------------------------------
Tôi thường hay đọc các tài liệu và Help VBA bằng tiếng Anh nhưng trình độ Anh ngữ còn hạn chế nên cứ phải vào Google Translate để dịch... Giờ nếu dùng cái này thì chỉ việc Save nó thành một Add-In rồi cứ ngay trên Excel mà dịch luôn, khỏi cần nhảy qua nhảy lại cho mất công


Capture2.JPG













------------------------------------------------------
Mình gửi thêm bản mới (đã sửa lại theo anh siwtom)... Các bạn tải file Google Translator_4.xlsm nhé
------------------------------------------------------
Phiên bản mới nhất (cũng theo code của anh siwtom): File Translator_5.xlsm
 

File đính kèm

Lần chỉnh sửa cuối:
Đã test, quả nhiên kỳ diệu... Mọi thứ đã gõ sẽ được lưu ở file translatetext.txt rồi cứ thế mà load lên... Vậy nên dù không có internet nhưng với những từ đã tra trước đó thì chương trình vẫn dịch được bình thường
Hay!
Sao em test có internet và không có internet như Thầy nói, khi không có internet thì không dịch thuật được. Lúc đầu em test thử xóa dữ liệu duyệt web, cookie, để test xem có phải là do cái này không, nhưng cả xóa và không xóa, khi không có internet thì không dịch thuật được. Em dùng mạng wifi.
 
Upvote 0
Sao em test có internet và không có internet như Thầy nói, khi không có internet thì không dịch thuật được. Lúc đầu em test thử xóa dữ liệu duyệt web, cookie, để test xem có phải là do cái này không, nhưng cả xóa và không xóa, khi không có internet thì không dịch thuật được. Em dùng mạng wifi.
Mình đã test sau khi đã tra 1 từ nào rồi thì khi tắt internet thì vẫn có thể tra được từ đó. Tuy nhiên nghĩa của bác google cung cấp thì không được trọn vẹn cho lắm.
 
Upvote 0
Sao em test có internet và không có internet như Thầy nói, khi không có internet thì không dịch thuật được. Lúc đầu em test thử xóa dữ liệu duyệt web, cookie, để test xem có phải là do cái này không, nhưng cả xóa và không xóa, khi không có internet thì không dịch thuật được. Em dùng mạng wifi.

Tôi đâu có nói KHÔNG CÓ INTERNET VẪN DỊCH ĐƯỢC
Tôi nói thế này: Nếu có internet, ta dịch 1 vài từ nào đó, xong cắt internet đi, gõ lại y chang những từ khi nãy đã gõ thì chương trình vẫn dịch bình thường
 
Upvote 0
Tôi quay phim màn hình cho các bạn xem nha:

[video=youtube;ERI9PnHPNHg]http://www.youtube.com/watch?v=ERI9PnHPNHg&feature=youtu.be[/video]

Đang dùng DCOM 3G
Lưu ý: Cái này đang nói với code mới nhất của anh siwtom nha (code tại bài 37)
 
Lần chỉnh sửa cuối:
Upvote 0
Em chẳng biết nữa, nhưng em thí nghiệm thế này:
Bước 1
- Mở Internet
- Gõ từ "Tôi đi làm", dịch từ Việt sang Anh, kết quả: "I go to work"
- Gõ từ "Tôi đi học", dịch từ Việt sang Anh, kết quả: "I go to school"

Bước 2
- Tắt Internet
- Gõ từ "Tôi đi làm", dịch từ Việt sang Anh, vẫn ra kết quả: "I go to work"
- Gõ từ "Tôi đi học", dịch từ Việt sang Anh, vẫn ra kết quả: "I go to school"

Ở bước 2, dù không có internet như nó vẫn dịch được! Anh nghĩ sao?

À, hiểu rồi.
----------------
Trong translatetext chỉ có bản nguồn chứ không có bản dịch.
---------------

Bạn làm: khởi động IE --> gõ địa chỉ www.giaiphapexcel.com --> có trang GPE --> gõ địa chỉ www.yahoo.com --> có trang Yahoo.

Bây giờ bạn rút cáp internet --> nhấn nút Back --> bạn lại có trang GPE.

Vậy IE lấy trang GPE ở đâu? Nó lấy từ CACHE. Khi bạn lướt web thì trong thư mục "C:\Documents and Settings\[Tên user]\Local setting\Temporary Internet Files" có rất nhiều "thứ". IE lấy từ "Temporary Internet Files"

Bạn hãy mở "Temporary Internet Files" rồi xóa tất cả. Trong Excel bạn gõ "I like dog", bạn sẽ có bản dịch "Tôi thích con chó"

Nếu bây giờ bạn vào lại "Temporary Internet Files" thì bạn sẽ thấy có 1 tập tin tên là

PHP:
http://translate.google.com/translate_a/t?client=t&text=%49%20%6C%69%6B%65%20%64%6F%67&hl=en&sl=en&tl=vi&multires=1&pc=0&rom=1&sc=1

Bạn copy ra ngoài rồi mở lên (chọn notepad để mở) thì sẽ thấy nội dung:

HTML:
[[["Tôi thích con chó","I like dog","",""]],,"en",,[["Tôi thích",[5],0,0,1000,0,2,0],["con chó",[6],1,0,1000,2,4,0]],[["I like",5,[["Tôi thích",1000,0,0],["tôi muốn",0,0,0],["tôi như",0,0,0]],[[0,6]],"I like dog"],["dog",6,[["con chó",1000,1,0],["chó",0,1,0],["chú chó",0,1,0],["dog",0,1,0],["cho chó",0,1,0]],[[7,10]],""]],,,[["en"]],6]

Như vậy thì khi ta gửi request (trong code) thì câu trả lời từ server cũng được ghi trong "Temporary Internet Files"
-------------
Nếu bạn khởi động IE rồi bạn dán vào ô địa chỉ

PHP:
http://translate.google.com/translate_a/t?client=t&text=%49%20%6C%69%6B%65%20%64%6F%67&hl=en&sl=en&tl=vi&multires=1&pc=0&rom=1&sc=1

thì sẽ có cửa sổ nhẩy ra hỏi bạn ghi tập tin ở đâu. Bạn chọn ghi ở đâu đó rồi sau đó mở bằng notepad. Nội dung chính là như trên, tức câu trả lời của server.
Khi ta thực hiện code trong Excel thì nội dung đó được "tự động" ghi trong "Temporary Internet Files"
 
Lần chỉnh sửa cuối:
Upvote 0
À, hiểu rồi.
----------------
Trong translatetext chỉ có bản nguồn chứ không có bản dịch.
---------------

Bạn làm: khởi động IE --> gõ địa chỉ www.giaiphapexcel.com --> có trang GPE --> gõ địa chỉ www.yahoo.com --> có trang Yahoo.

Bây giờ bạn rút cáp internet --> nhấn nút Back --> bạn lại có trang GPE.

Vậy IE lấy trang GPE ở đâu? Nó lấy từ CACHE. Khi bạn lướt web thì trong thư mục "C:\Documents and Settings\[Tên user]\Local setting\Temporary Internet Files" có rất nhiều "thứ". IE lấy từ "Temporary Internet Files"

Bạn hãy mở "Temporary Internet Files" rồi xóa tất cả. Trong Excel bạn gõ "I like dog", bạn sẽ có bản dịch "Tôi thích con chó"

Nếu bây giờ bạn vào lại "Temporary Internet Files" thì bạn sẽ thấy có 1 tập tin tên là

PHP:
http://translate.google.com/translate_a/t?client=t&text=%49%20%6C%69%6B%65%20%64%6F%67&hl=en&sl=en&tl=vi&multires=1&pc=0&rom=1&sc=1

Bạn copy ra ngoài rồi mở lên (chọn notepad để mở) thì sẽ thấy nội dung:

HTML:
[[["Tôi thích con chó","I like dog","",""]],,"en",,[["Tôi thích",[5],0,0,1000,0,2,0],["con chó",[6],1,0,1000,2,4,0]],[["I like",5,[["Tôi thích",1000,0,0],["tôi muốn",0,0,0],["tôi như",0,0,0]],[[0,6]],"I like dog"],["dog",6,[["con chó",1000,1,0],["chó",0,1,0],["chú chó",0,1,0],["dog",0,1,0],["cho chó",0,1,0]],[[7,10]],""]],,,[["en"]],6]

Như vậy thì khi ta gửi request (trong code) thì câu trả lời từ server cũng được ghi trong "Temporary Internet Files"
-------------
Nếu bạn khởi động IE rồi bạn dán vào ô địa chỉ

PHP:
http://translate.google.com/translate_a/t?client=t&text=%49%20%6C%69%6B%65%20%64%6F%67&hl=en&sl=en&tl=vi&multires=1&pc=0&rom=1&sc=1

thì sẽ có cửa sổ nhẩy ra hỏi bạn ghi tập tin ở đâu. Bạn chọn ghi ở đâu đó rồi sau đó mở bằng notepad. Nội dung chính là như trên, tức câu trả lời của server.
Khi ta thực hiện code trong Excel thì nội dung đó được "tự động" ghi trong "Temporary Internet Files"
Vậy thì em mạn phép anh, dùng code mới nhất post vào bài 1 nhé
 
Upvote 0
Bản mới không dùng IE nữa nên máy nào cũng (gần như) chạy được rồi. Chạy cũng mịn màng hơn. Nhưng cần chỉnh lại giá trị ở cửa sổ hiện nội dung dịch. Ví dụ bên trái (English) gõ "hello" bấm dịch, cửa sổ bên phải (Việt nam) hiện "cha[]o".

Chúng ta đọc các code, các ứng dụng, module nhỏ trên mạng người nước ngoài hay có phần thông tin người thiết kế, người góp ý hoàn thiện.... Thấy rất hay, ngoài sự chuyên nghiệp còn giúp cho người đọc biết được nguồn gốc của sp mình dùng, có "kiện cáo" gì còn biết nơi để kêu. Thỉnh thoảng tôi làm những cái tâm đắc cũng viết thông tin như vậy. Tại sao trên GPE chúng ta không làm nhỉ?
 
Lần chỉnh sửa cuối:
Upvote 0
Bản mới không dùng IE nữa lên máy nào cũng (gần như) chạy được rồi. Chạy cũng mịn màng hơn. Nhưng cần chỉnh lại giá trị ở cửa sổ hiện nội dung dịch. Ví dụ bên trái (English) gõ "hello" bấm dịch, cửa sổ bên phải (Việt nam) hiện "cha[]o".
Chổ này chưa hiểu ý Tuân muốn nói gì

Chúng ta đọc các code, các ứng dụng, module nhỏ trên mạng người nước ngoài hay có phần thông tin người thiết kế, người góp ý hoàn thiện.... Thấy rất hay, ngoài sự chuyên nghiệp còn giúp cho người đọc biết được nguồn gốc của sp mình dùng, có "kiện cáo" gì còn biết nơi để kêu. Thỉnh thoảng tôi làm những cái tâm đắc cũng viết thông tin như vậy. Tại sao trên GPE chúng ta không làm nhỉ?
Vấn đề là mình đâu có kinh doanh. Chỉ tổng hợp vài thứ thành 1 cái gọi là "ứng dụng" cho oai thế thôi chứ cũng chỉ là Excel VBA code ---> Ai download về, thích làm gì cứ tự nhiên. Thậm chí ai đó ghi tác giả là ông A, ông B gì mình cũng không có ý kiến (mà thực chất mình cũng không phải tác giả)
 
Upvote 0
Nhưng cần chỉnh lại giá trị ở cửa sổ hiện nội dung dịch. Ví dụ bên trái (English) gõ "hello" bấm dịch, cửa sổ bên phải (Việt nam) hiện "cha[]o".

Khổ cái là mhiều khi google lại cung cấp kết quả như

View attachment 98690

Tức không hẳn là "chào". Chữ "chào" có 4 ký tự trong khi kết quả trên gồm 5 ký tự: c, h, a, o và ký tự dấu huyền.

----------------
Câu trả lời của server là

[[["chào","hello","",""]],[["noun",["chào","câu chào","tiếng chào"],[["chào",["hello"],,0.0051661632],
["câu chào",["hello"],,0.00034074541],["tiếng chào",["hello","salaam"],,0.00033546262]]],
["interjection",["alô","chào anh","chào chị","ô nài","xin chào"],[["alô",["hello"],,0.00085663382],["chào
anh",["hello"],,0.00034074541],["chào chị",["hello"],,0.00033546262],["ô nài",
["hello"],,0.00033546262],["xin chào",["hello"],,0.00033026177]]]],"en",,[["chào",[5],0,0,1000,0,1,0]],
[["hello",4,,,""],["hello",5,[["chào",1000,0,0],["Xin chào",0,0,0],["chào",0,0,0],["Xin chào quý",0,0,0],
["chào hỏi",0,0,0]],[[0,5]],"hello"]],,,[["en"]],5]

Vậy ai có thời gian nghiên cứu lọc ra kết quả: kết quả dịch, nếu có danh từ thì cũng hiển thị như ở trang web dịch? Giơ tay lên nào.
 
Lần chỉnh sửa cuối:
Upvote 0
Chổ này chưa hiểu ý Tuân muốn nói gì


Vấn đề là mình đâu có kinh doanh. Chỉ tổng hợp vài thứ thành 1 cái gọi là "ứng dụng" cho oai thế thôi chứ cũng chỉ là Excel VBA code ---> Ai download về, thích làm gì cứ tự nhiên. Thậm chí ai đó ghi tác giả là ông A, ông B gì mình cũng không có ý kiến (mà thực chất mình cũng không phải tác giả)

Oh, việc viết thông tin đâu chỉ nhăm nhe kinh doanh. Có các lý do:
+ tự chịu trách nhiệm
+ nhận các phản hồi từ người dùng để nâng cấp, hoàn thiện đứa con của mình
+ giúp thiên hạ. Em đang cần xử lý một vấn đề rất "khoai" tìm được giải pháp trên mạng nhưng không thể cải tiến để cho công việc được, hỏi ai cũng không biết tác giả ở đâu. Tìm mỏi mắt trên Google thì thấy đoạn code nguyên bản của tác giả và có thông tin email. Thế là mail nhờ luôn. Thực sự lúc đó thấy quý nhau vô cùng.
+ văn hoá "Bản quyền - Copyright (C). Người việt nam đang bị lên án chữ này, có lẽ một phần không rõ nguồn gốc để mà trích dẫn. Thực tế có nhiều người viết sách chép y nguyên của người khác nhưng thay tên mình vào, rõ ràng như vậy là không văn minh.
+ kinh doanh
+ cho oai
+ ....
 
Lần chỉnh sửa cuối:
Upvote 0
Sao em tạo thành file addin nhưng trên menu không thấy, em xài office 2003 (Win7)
 
Upvote 0
Bác Ndu chỉ em cách làm addin file này với. Em search các bài trên diễn đàn để tạo hoài mà không làm được. TK bác nhiều
 
Upvote 0
Bác Ndu chỉ em cách làm addin file này với. Em search các bài trên diễn đàn để tạo hoài mà không làm được. TK bác nhiều

Bạn làm như sau:
- Download file Google Translator_5.xlsm về máy tính
- Mở file lên, bấm Alt + F11 để vào cửa sổ lập trình
- Copy đoạn code dưới đây cho thêm vào trong Module
Mã:
Sub Auto_Open()
  With Application.CommandBars(1)
    .Reset
    With .Controls.Add(1, , , 1)
      .Caption = "Google Translate"
      .OnAction = "ShowTranslator"
      .FaceId = [COLOR=#ff0000]48[/COLOR]
    End With
  End With
End Sub
Sub Auto_Close()
  Application.CommandBars(1).Reset
End Sub
- Xong, SaveAs thành Add-In
- Kích hoạt Add-In, bạn sẽ thấy xuất hiện 1 nút trên menu ---> Bấm vào sẽ hiện form
- Lưu ý: Con số 48 màu đỏ ở trên bạn có thể thay thành số mấy tùy ý (mục đích để đổi Icon)
----------------------
Làm 1 cái nút trên menu chỉ đơn giản thế thôi
 
Upvote 0
Anh siwtom cho em hỏi 1 vấn đề:
Tra từ trên Google Translate có khi nó trả về nhiều kết quả (nhiều nghĩa)
Ví dụ: Tử transpose dịch từ Anh sang Việt sẽ cho 3 kết quả:
- Chuyển điệu
- Chuyển vị
- Đổi chổ

Câu hỏi đặt ra là: Sửa code thế nào để lấy được toàn bộ các kết quả này?
 
Upvote 0
Anh siwtom cho em hỏi 1 vấn đề:
Tra từ trên Google Translate có khi nó trả về nhiều kết quả (nhiều nghĩa)
Ví dụ: Tử transpose dịch từ Anh sang Việt sẽ cho 3 kết quả:
- Chuyển điệu
- Chuyển vị
- Đổi chổ

Câu hỏi đặt ra là: Sửa code thế nào để lấy được toàn bộ các kết quả này?

Thực ra cái này ai cũng có thể tự nghiên cứu.
Trong bài #50 tôi đã đưa ra câu trả lời của server cho câu "hello".
Như đã thấy ở dưới đây thì câu dịch chỉ là "chào". Còn "noun" và "interjection" là phần mở rộng.

[[["chào","hello","",""]],[["noun",["chào","câu chào","tiếng chào"],[["chào",["hello"],,0.0051661632],
["câu chào",["hello"],,0.00034074541],["tiếng chào",["hello","salaam"],,0.00033546262]]],
["interjection",["alô","chào anh","chào chị","ô nài","xin chào"],[["alô",["hello"],,0.00085663382],["chào
anh",["hello"],,0.00034074541],["chào chị",["hello"],,0.00033546262],["ô nài",
["hello"],,0.00033546262],["xin chào",["hello"],,0.00033026177]]]],"en",,[["chào",[5],0,0,1000,0,1,0]],
[["hello",4,,,""],["hello",5,[["chào",1000,0,0],["Xin chào",0,0,0],["chào",0,0,0],["Xin chào quý",0,0,0],
["chào hỏi",0,0,0]],[[0,5]],"hello"]],,,[["en"]],5]

Tương tự cho câu "transpose" thì câu dịch chỉ là "chuyển điệu". Còn "verb" là phần mở rộng.

[[["chuyển điệu","transpose","",""]],[["verb",["chuyển điệu","chuyển vị","đổi chổ"],[["chuyển điệu",["modulate","mutate","transpose"],,0.0095020281],["chuyển vị",["transpose"],,0.0093547134],["đổi chổ",["displace","remove","shift","transpose","translocate","displace"],,0.0093547134]]]],"en",,[["chuyển điệu",[12],0,0,1000,0,2,1]],[["transpose",12,[["chuyển điệu",1000,0,0],["transpose",0,0,0],["hoán chuyển",0,0,0],["hoán chuyển vị",0,0,0],["chuyển vị",0,0,0]],[[0,9]],"transpose"]],,,[["en"]],53]

Trong code tôi mới chỉ lọc cho phần dịch - cho th tổng quát là văn bản có nhiều dòng. Chưa có lọc cho phần mở rộng. Chú ý là không phải lúc nào cũng có. Chính vì chưa có code lọc cho phần mở rộng nên tôi đã hỏi trong bài #50 nhưng không ai trả lời.

Câu trả lời của server là
...
Vậy ai có thời gian nghiên cứu lọc ra kết quả: kết quả dịch, nếu có danh từ thì cũng hiển thị như ở trang web dịch? Giơ tay lên nào.

Nói cho cùng thì công việc "vừa tầm" với nhiều người. Vả lại tôi cũng lười như mọi người. Tôi nghĩ tôi còn lười hơn. Vì những việc không thú vị, những việc chỉ cần cần cù (cơ bắp) thì tôi không có hứng.
Tôi đã viết rất rõ rồi. Câu trả lời của server nằm trong text = .responseText. Cả phần dịch và phần mở rộng. Có thể ghi text vào tập tin rồi nghiên cứu: khi có và không có phần mở rộng thì cấu trúc của text như thế nào?, các phần "noun", "interjection", "verb" lọc ra như thế nào?
Khi đã biết cấu trúc của câu trả lời thì lọc ra thôi. Về cái khoản xét cấu trúc này thì chắc chắn tôi kém hơn nhiều người.
 
Upvote 0
Thực ra cái này ai cũng có thể tự nghiên cứu.
Trong bài #50 tôi đã đưa ra câu trả lời của server cho câu "hello".
Như đã thấy ở dưới đây thì câu dịch chỉ là "chào". Còn "noun" và "interjection" là phần mở rộng.



Tương tự cho câu "transpose" thì câu dịch chỉ là "chuyển điệu". Còn "verb" là phần mở rộng.



Trong code tôi mới chỉ lọc cho phần dịch - cho th tổng quát là văn bản có nhiều dòng. Chưa có lọc cho phần mở rộng. Chú ý là không phải lúc nào cũng có. Chính vì chưa có code lọc cho phần mở rộng nên tôi đã hỏi trong bài #50 nhưng không ai trả lời.



Nói cho cùng thì công việc "vừa tầm" với nhiều người. Vả lại tôi cũng lười như mọi người. Tôi nghĩ tôi còn lười hơn. Vì những việc không thú vị, những việc chỉ cần cần cù (cơ bắp) thì tôi không có hứng.
Tôi đã viết rất rõ rồi. Câu trả lời của server nằm trong text = .responseText. Cả phần dịch và phần mở rộng. Có thể ghi text vào tập tin rồi nghiên cứu: khi có và không có phần mở rộng thì cấu trúc của text như thế nào?, các phần "noun", "interjection", "verb" lọc ra như thế nào?
Khi đã biết cấu trúc của câu trả lời thì lọc ra thôi. Về cái khoản xét cấu trúc này thì chắc chắn tôi kém hơn nhiều người.

Thật ra trước khi hỏi, em đã mở cái file trong Temporary Internet Files để xem rồi... nhưng mà nhìn nó "rối" quá, không biết chổ nào để bám vào mà tách ra được những từ mình cần
Các bạn ai giỏi về xử lý text nghiên cứu giúp với
 
Upvote 0
chào bác, em là mem mới toe, vô tình xem đc post này của bác, bác có thể hướng dẫn cụ thể cách để kích hoạt add-in cho em được không ạ. Em cám ơn bác nhiều
 
Upvote 0
Chào Thầy ndu96081631, em có gửi đoạn code dịch ở #17 link dưới, không dùng câu lệnh With CreateObject("InternetExplorer.application")
Không dùng Do..Loop cũng như Application.Wait
được Dịch bởi google translate di động, thay vì google translate cổ điển.
Thầy ứng dụng code vào file của thầy xem sao, em thấy dịch rất nhanh

http://www.giaiphapexcel.com/diendan/threads/giúp-đỡ-sửa-code-vba-translate-thành-function.78107/
Với Code thầy phát triển thì ứng dụng hay hơn khi lấy được dữ liệu Phát hiện ngôn ngữ, cấu tạo danh từ, động từ, ... đó là phần bên dưới của phần Dịch. Mong thầy phát triển thêm ứng dụng dịch để mọi người vận dụng vào học tập và công việc tốt hơn.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom