Thứ Tư, 23 tháng 3, 2011

Translate với bing

Hiện nay việc dùng đa ngôn ngữ trong các website là một điều tất yếu,với các phần ngôn ngữ tĩnh thì bạn bỏ thời gian ra dịch là một điều hợp lý,nhưng với các nội dung động thì không hẳn lúc nào bạn cũng có một đội ngũ ngồi dịch những nội dung này.Vì vậy việc áp dụng các công cụ tự động dịch các nội dung này sẽ giúp bạn tiết kiệm nhiều thời gian và tiền bạc :D.Nhưng nó cũng có mặt hạn chế là câu cú và nội dung dịch còn sai nhiều,nhưng nhìn chung người đọc vẫn hiểu được nội dung bài viết của bạn nói vè cái gì :D.

Trước hết để sử dụng được bing translate bạn cần vào link sau  để dăng ký một appID. http://www.bing.com/developers/createapp.aspx

$appId = "*********1F2C7EE5EE7D5A85F59D43C"; //thay thế bằng appId của bạn vừa đăng ký
$from = "en"; //ngôn ngữ gốc
$to = "fr"; //ngôn ngữ cần dịch

$text = "chuỗi cần dịch";

$detectUri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=".$appId."&text=".$text."&from=".$from."&to=".$to; //link trả về kết quả translate.

Giờ nhiệm vụ của bạn hết sức đơn giản dùng file_get_contents hoặc curl,.. để get nội dung translate về

vd :file_get_contents($detectUri);

Lưu ý: vì việc translate truyền dưới dạng url lên bạn cần phải sử lý dữ liệu truyền lên url một chút để link không bị lỗi do một số ký tự đặc biệt.

mình tạm thời dung cái này:

$text = preg_replace("/[^a-zA-Z 0-9.,;\=\-\_\'\"\<\>:\\ \/]+/"," ",$text);
$text = preg_replace("/[ ]+/","+",$text);

các thẻ trả về sẽ bị chuyển thành &lt; ,...

bạn cần replace chúng

$content = str_replace(array("&lt;","&gt;"), array("<",">"), file_get_contents($detectUri));

Dữ liệu trả về sẽ bị bao bọc bởi thẻ
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"></string>
bạn chỉ cần remove nó đi là xài được :D
$content = strip_tags($content,"<br><p><b><i><a><img>"); dung tạm cái này vì lười viết
regexp :D bạn liệt kê những thẻ muốn giũ lại là được :D
ok vậy là nội dung translate đã khá sạch sẽ,bạn chỉ cần insert và database là ok :D.

Không có nhận xét nào:

Đăng nhận xét