Перевод с использованием PHP

Привет, я разрабатываю образец сайта в 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); } } } ?> 

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'); ?> &raquo;</button></div> </form> </body> </html> 

Можно ли перевести на другие языки с помощью этого кода? Я изменил register1.php? Lang = de на register1.php? Lang = fa (персидский) .. Но ничего не происходит.

AS per me вы можете попробовать этот метод. Этот метод уже реализован в нашей системе, и он работает правильно.

Сделайте php-файл каждого языка и определите все переменные и используйте эти переменные на страницах.

например, для английского языка

english.php

 $hello="Hello"; 

persian.php

 $hello=html_entity_decode(htmlentities("سلام")); 

Теперь используйте эту переменную для этой страницы.

your_page.php

 <label><?php echo $hello; ?></label> 

У вас есть загруженный конкретный языковой файл, так как вы получаете переменную языка из URL.

Лучше, чтобы вы определили эту переменную языка в файле конфигурации.

config.php

 if(isset($_GET['lang']) && $_GET['lang']=='persian') { require_once('persian.php'); } else { require_once('english.php'); } 

Если бы я был вами, я бы сделал это так:

/inc/lang/en.lang.php

 define('_HELLO', 'Hello'); 

/inc/lang/fa.lang.php

 define('_HELLO', 'سلام'); 

index.php

 // $_SESSION['lang'] could be 'en', 'fa', etc. require_once '/inc/lang/' . $_SESSION['lang'] . 'lang.php'; echo _HELLO; 

Контрольный показатель: константы против переменных

Здесь вы видите, почему я предложил использовать 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 

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 

Как я могу прочитать из кода, класс переводчика загружает данные перевода из файла en.txt, если вы хотите иметь «fa» перевод, просто создайте fa.txt как копию en.txt со всеми переводами, отредактируйте и переведите fa. txt to persian …

Надеюсь, поможет

Из скрипта Perl я извлек следующее для 100% бесплатной php google для перевода этой функции:

См. Рабочую демонстрацию на 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"); 

@rbenmass Спасибо 🙂

Я думаю, это должно быть, потому что это работает хорошо для меня:

  /* original from @rbenmass : function translate($q, $sl, $tl){ if($s==$e || $s=='' || $e==''){ return $q; } **/ function translate($q, $sl, $tl){ if($sl==$tl || $sl=='' || $tl==''){ return $q; } // ... //