是否可以使用 jQuery 从元素中获取文本并将其翻译成其他语言?
前
<p>Hello</p>
后
<p>bonjour</p>
是否可以使用 jQuery 从元素中获取文本并将其翻译成其他语言?
前
<p>Hello</p>
后
<p>bonjour</p>
使用这个 JQuery 插件 https://github.com/tinoni/translate.js
免责声明:我是作者
1 - 将“trn”类包含到您要翻译的文本中:
<span class="trn">text to translate</span>
2 - 定义字典:
var dict = {
"text to translate": {
pt: "texto para traduzir"
},
"Download plugin": {
pt: "Descarregar plugin",
en: "Download plugin"
}
}
3 - 翻译整个页面正文:
var translator = $('body').translate({lang: "en", t: dict}); //use English
4 - 更改为另一种语言:
translator.lang("pt"); //change to Portuguese
使用谷歌翻译 API。便于使用。以下将西班牙语翻译成英语。要在其他语言之间进行翻译,只需更改'es'
并'en'
<div id="content"></div>
google.load("language", "1");
function initialize() {
var content = document.getElementById('content');
content.innerHTML = '<div id="text">Hola, me alegro mucho de verte.<\/div><div id="translation"/>';
var text = document.getElementById("text").innerHTML;
google.language.translate(text, 'es', 'en', function(result) {
var translated = document.getElementById("translation");
if (result.translation) {
translated.innerHTML = result.translation;
}
});
}
google.setOnLoadCallback(initialize);
使用 Bing 翻译器,因为免费的 Google Translate API 已于 2011 年 12 月 1 日停止使用
您可以使用谷歌翻译的 Javascript API。
<p id="some">Hello</p>
<input id="trans" value="Translate" type="button">
<script>
$('#trans').click(function() {
google.language.translate($('#some').html(), 'en', 'fr', function(result) {
$('#some').html(result.translation);
});
});
</script>
您需要在页面的 HEAD 部分加载 js 库才能使用 API。
在这个 PHP/JS 解决方案中,您应该使用包含 PHP 语言文件并在会话/cookie 上设置语言,而不是在 $_GET 上。为了简单起见,我将在
index.php 文件
<?php
$lang = $_GET['lang'];
if ($lang == 'fr'){
$w = array(
'Trouvé',
' non trouvé.',
'Erreur. Veuillez réessayer.'
);
}else if($lang == 'en'){
$w = array(
'Found',
' not found.',
'Error. Please try again.'
);
}else{
$w = array(
'Trouvé',
' non trouvé.',
'Erreur. Veuillez réessayer.'
);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
....................
<body>
....................
<script type="text/javascript">
/* Translate JS
Declare JS variables for translation in PHP file as below (Global vars outside $(document).ready).
Inside JS file call the variable as $.lang_mynamespace.var_name
*/
$.lang_scan = {
found_js:"<?=$w[0];?>",
not_found_js:"<?=$w[1];?>",
error_js:"<?=$w[2];?>"
};
</script>
</body>
</html>
JS文件
$(function() {
$("#scan_result").on('change', function(){
//check number
$.ajax({
url: "check.php",
dataType: "json",
type: "post",
data: {'scan_no': scan_value} ,
success: function (response) {
if (response.status == true){
alert("Scan no. " + response.scan_no + $.lang_scan.found_js);
}else{
alert("Scan no. " + response.scan_no + $.lang_scan.not_found_js);
}
},
error: function(jqXHR, textStatus, errorThrown) {
//ajax error
alert($.lang_scan.error_js);
}
});
});
});
check.php 返回一个 json
{"scan_no": "123", "status": true/false}
为什么不试试这个:
var body = $("body");
var html = body.html();
var nhtml = html.split(" ");
var dict = [];
for (var i = 0; i < nhtml.length; i++) {
nhtml[i].replace(dict[index]);
}
它可以代替任何东西。