Nat*_*sha 2 php language-translation
嗨,我在php中开发示例网站,我需要将整个网站翻译成波斯语.怎么可能在PHP?我尝试使用以下代码..此代码将适用于deutsch转换.
1. class.translation.php
<?php
class Translator {
private $language = 'en';
private $lang = array();
public function __construct($language){
$this->language = $language;
}
private function findString($str) {
if (array_key_exists($str, $this->lang[$this->language])) {
echo $this->lang[$this->language][$str];
return;
}
echo $str;
}
private function splitStrings($str) {
return explode('=',trim($str));
}
public function __($str) {
if (!array_key_exists($this->language, $this->lang)) {
if (file_exists($this->language.'.txt')) {
$strings = array_map(array($this,'splitStrings'),file($this->language.'.txt'));
foreach ($strings as $k => $v) {
$this->lang[$this->language][$v[0]] = $v[1];
}
return $this->findString($str);
}
else {
echo $str;
}
}
else {
return $this->findString($str);
}
}
}
?>
Run Code Online (Sandbox Code Playgroud)
2.Register.php
<?php
require_once('class.translation.php');
if(isset($_GET['lang']))
$translate = new Translator($_GET['lang']);
else
$translate = new Translator('en');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title><?php $translate->__('CSS Registration Form'); ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15"/>
<link rel="stylesheet" type="text/css" href="css/default.css"/>
</head>
<body>
<form action="" class="register">
<h1><?php $translate->__('Registration'); ?><a class="flag_deutsch" title="deutsch" href="register1.php?lang=de"></a><a class="flag_english" title="english" href="register1.php"></a></h1>
<fieldset class="row1">
<legend><?php $translate->__('Account Details'); ?></legend>
<p>
<label><?php $translate->__('Email'); ?> *</label>
<input type="text"/>
<label><?php $translate->__('Repeat email'); ?> *</label>
<input type="text"/>
</p>
</fieldset>
<div><button class="button"><?php $translate->__('Register'); ?> »</button></div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
是否可以使用此代码转换为其他语言?我将register1.php?lang = de更改为register1.php?lang = fa(波斯语)..但没有什么可以帮助的.有人请求帮助
Mon*_*awy 10
original from @rbenmass :\nRun Code Online (Sandbox Code Playgroud)\n\n尝试这个:
\n\nfunction translate($q, $sl, $tl){\n $res= file_get_contents("https://translate.googleapis.com/translate_a/single?client=gtx&ie=UTF-8&oe=UTF-8&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at&sl=".$sl."&tl=".$tl."&hl=hl&q=".urlencode($q), $_SERVER[\'DOCUMENT_ROOT\']."/transes.html");\n $res=json_decode($res);\n return $res[0][0][0];\n}\n\n//example-- \necho translate("\xd8\xa7\xd8\xb3\xd9\x85\xd9\x8a \xd9\x85\xd9\x86\xd8\xaa\xd8\xb5\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xb5\xd8\xa7\xd9\x88\xd9\x8a", "ar", "en");\nRun Code Online (Sandbox Code Playgroud)\n
如果我是你,我会这样做:
/inc/lang/en.lang.php
define('_HELLO', 'Hello');
Run Code Online (Sandbox Code Playgroud)
/inc/lang/fa.lang.php
define('_HELLO', '????');
Run Code Online (Sandbox Code Playgroud)
的index.php
// $_SESSION['lang'] could be 'en', 'fa', etc.
require_once '/inc/lang/' . $_SESSION['lang'] . 'lang.php';
echo _HELLO;
Run Code Online (Sandbox Code Playgroud)
基准:常数与变量
在这里你看到我提供的原因Constants不是Variables:
const.php
echo memory_get_usage() . '<br>'; // output: 674,576
for ($i = 0; $i <= 10000; $i++) {
define($i, 'abc');
}
echo memory_get_usage() . '<br>'; // output: 994,784
Run Code Online (Sandbox Code Playgroud)
var.php
echo memory_get_usage() . '<br>'; // output: 674,184
for ($i = 0; $i <= 10000; $i++) {
$$i = 'abc';
}
echo memory_get_usage() . '<br>'; // output: 2,485,176
Run Code Online (Sandbox Code Playgroud)
根据我的意见,您可以尝试这种方法.这种方法已经在我们的系统中实现,并且它正常工作.
制作每种语言的php文件并定义所有变量并在页面中使用这些变量.
例如,对于英语
english.php
$hello="Hello";
Run Code Online (Sandbox Code Playgroud)
persian.php
$hello=html_entity_decode(htmlentities("????"));
Run Code Online (Sandbox Code Playgroud)
现在使用此变量来这样翻页.
your_page.php
<label><?php echo $hello; ?></label>
Run Code Online (Sandbox Code Playgroud)
您根据URL中的get语言变量加载特定语言文件.
最好将此语言变量定义到配置文件中.
config.php文件
if(isset($_GET['lang']) && $_GET['lang']=='persian')
{
require_once('persian.php');
}
else
{
require_once('english.php');
}
Run Code Online (Sandbox Code Playgroud)
我从 Perl 翻译脚本中提取了以下 100% 免费 php 谷歌翻译此功能:
请参阅http://ogena.net上的工作演示
function translate($q, $sl, $tl){
if($s==$e || $s=='' || $e==''){
return $q;
}
else{
$res="";
$qqq=explode(".", $q);
if(count($qqq)<2){
@unlink($_SERVER['DOCUMENT_ROOT']."/transes.html");
copy("http://translate.googleapis.com/translate_a/single?client=gtx&ie=UTF-8&oe=UTF-8&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at&sl=".$sl."&tl=".$tl."&hl=hl&q=".urlencode($q), $_SERVER['DOCUMENT_ROOT']."/transes.html");
if(file_exists($_SERVER['DOCUMENT_ROOT']."/transes.html")){
$dara=file_get_contents($_SERVER['DOCUMENT_ROOT']."/transes.html");
$f=explode("\"", $dara);
$res.= $f[1];
}
}
else{
for($i=0;$i<(count($qqq)-1);$i++){
if($qqq[$i]==' ' || $qqq[$i]==''){
}
else{
copy("http://translate.googleapis.com/translate_a/single?client=gtx&ie=UTF-8&oe=UTF-8&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at&sl=".$s."&tl=".$e."&hl=hl&q=".urlencode($qqq[$i]), $_SERVER['DOCUMENT_ROOT']."/transes.html");
$dara=file_get_contents($_SERVER['DOCUMENT_ROOT']."/transes.html");
@unlink($_SERVER['DOCUMENT_ROOT']."/transes.html");
$f=explode("\"", $dara);
$res.= $f[1].". ";
}
}
}
return $res;
}
}
//sample usage
echo translate("Goede dag dames en heren", "nl", "en");
Run Code Online (Sandbox Code Playgroud)