جميل...
لمن يريد طريقة لعمل سكربت متعدد اللغات(الواجهة وليس المحتوى)
يمكن ان يستعمل هذه الطريقة:
عند تطوير السكربت تستعمل دالة كالتالي:
كود PHP:
echo _e("welcome");
echo _e('welcome');
عند الانتهاء تقوم بتشغيل تعبير قياسي يستخرج العبارة المرسلة إلى الدالة
ثم يقوم بوضعها في لوحة التحكم(كما هو ظاهر في الصفحة عند الاخ مصالحة)
ميزة هذه الطريقة ان الترجمة تكون ديناميكية اذ انه يمكن تحديث القاعدة وقتما تشاء بدون استعمال
أية مصفوفات.
الكلاس الذي استعملت(تعطي له اسم الدالة ومجلد المشروع ونوع الملفات التي تريد السحب منها
وهو يقوم بسحب الكلمات تلقائيًا) :
كود PHP:
<?php
class lang_extractor
{
private $path;
private $func;
private $ext;
function __construct($path,$func,$ext)
{
if (!is_dir($path))die("not directory");
$this->path= $path;
$this->func = $func;
$this->ext = $ext;
}
private function file_lang_extractor($path)
{
$content = file_get_contents($path);
preg_match_all("/".$this->func."\([\"|\'][^\"\\\\]*(?:\\\\.[^\"\\\\]*)*[\"|\']\)/",$content,$all);
$langs = $all[0];
$terms = array ();
foreach ($langs as $lang)
{
$lang = trim($lang);
$terms[]=substr($lang,strlen($this->func)+2,-2);
}
return $terms;
}
private function get_path_files()
{
$dir_iterator = new RecursiveDirectoryIterator($this->path);
$iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $file) {
$ext = pathinfo($file->getPathname(),PATHINFO_EXTENSION);
if (is_file($file->getPathname()) && $ext == $this->ext )
$files[] = $file->getPathname();
}
return $files;
}
public function extract()
{
$files = $this->get_path_files();
$all = array();
foreach ($files as $file)
{
$all = array_merge($all,$this->file_lang_extractor($file));
}
return ((array)array_unique($all));
}
}
?>
يمكن بعد الترجمة ان تحفظ الملف بصيغة json في حال اردت استعمالها مع الجافاسكربت