النتائج 1 إلى 6 من 6

الموضوع: بخصوص إنشاء ملف لغات للموقع

  1. #1
    عضو سوبر نشيط
    تاريخ التسجيل
    Apr 2010
    المشاركات
    709

    بخصوص إنشاء ملف لغات للموقع



    السلام عليكم


    بحث عن طريقة إنشاء ملف لغات للموقع بحيث تكون العربية و الإنجليزية مثلا:

    ما وجدته أن هناك طريقتين :

    الأولى : عن طريق Array

    كود PHP:
    <?php
    $lang
    =array (
        
    'login'            =>'دخول',
        
    'logout'        =>'خروج',
        );
    ?>
    و الثانية : عن طريق Define

    كود PHP:
     <?php
    #> lang.php
    define('_FAILED_CONNECT','لا يمكن الاتصال بالمستضيف');
    define('_FAILED_SET_CHARS','لا يمكن ترميز قاعدة البيانات');
    define('_FAILED_SELECT_DB','لا يمكن الاتصال بقاعدة البيانات');
    ?>
    سؤالي ما الفرق بينهما و ما هي الأفضل و خصائصها للإستعمال في ملف للغات

    شكراً مسبقاً







  2. #2
    ينتظر رسالة التوكيد
    تاريخ التسجيل
    Jul 2011
    المشاركات
    77


    ولماذا هذا الموضوع في القسم العام

    أنا اقترح طريقة ثالثة افضل.

    اكتب الكلمة التي تريد ترجمتها داخل دالة t_ مثلاً

    كود PHP:
    echo _t("Hello");
    echo 
    _t("Hello %s",array($user)); 
    الآن عندك موقع بلغة واحدة وهي الانجليزية على الأقل
    عندما تريد ترجمة الموقع
    تستعمل كلاس خاص يسحب الجمل الموجودة داخل الدالة(المطلوب ترجمتها)
    ويضعها في ملف خاص يمكن ان تمر عليه مرة واحدة فقط وتترجم كل ما فيه(أو تبرمج الخاصية في لوحة التحكم)
    وبالتالي لا تضيع وقتك في انشاء المصفوفات اثناء التطوير

    الكلاس:
    كود PHP:
    <?php
    /**
    * @author : Ahmad Sadiq
    **/
    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_iteratorRecursiveIteratorIterator::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));
    }
    }
    ?>
    بارمترات الكلاس :
    مسار المشروع
    اسم الدالة
    امتداد الملف - ممكن يكون tpl مثلا ً

    تستعمل الدالة extract (التي في الكلاس)تعيد لك مصفوفة بالكلمات التي يجب ترجمتها






  3. #3
    عضو فعال
    تاريخ التسجيل
    Apr 2010
    المشاركات
    1,095


    الموضوع في القسم الخاطئ

    اعتقد انه ليس هناك فرق كبير غير انه يمكنك تغيير قيمة المصفوفة ولايمكنك تفيير قيمة الثابت





    __________________
    قال صلى الله عليه وسلم : كلمتان خفيفتان على اللسان ثقيلتان في الميزان (سبحان الله وبحمده ** سبحان الله العظيم)

  4. #4
    ينتظر رسالة التوكيد
    تاريخ التسجيل
    Jul 2011
    المشاركات
    77


    حتى يكون الموضوع كامل

    ارفقت لك مثال على الطريقة

    الدالة _t
    كود PHP:
    function _t($format)
    {

    $params func_get_args();
    unset(
    $params[0]);


    return 
    vsprintf($format,$params);



    مع استخدام اللغات اصبحت
    كود PHP:
    function _t($format)
    {
    global 
    $lang_used,$lang_data;

    $params func_get_args();
    unset(
    $params[0]);

    if (
    $lang_used == "en")
    return 
    vsprintf($format,$params);
    else
    return 
    vsprintf($lang_data[$format],$params);



    http://php.net/manual/en/function.vsprintf.php
    http://php.net/manual/en/function.func-get-args.php

    غيرت في الكلاس حتى يقبل الصيغة
    كود PHP:
    _t("Hello %s, your age is %d",'Ahmad','21'); 
    البقية مرفقة

    لكن غيّر مسار المشروع في الملف data.php





    الملفات المرفقة الملفات المرفقة
    التعديل الأخير تم بواسطة أحمد العبد الله ; 25-08-2011 الساعة 04:45 PM

  5. #5
    عضو سوبر نشيط
    تاريخ التسجيل
    Apr 2010
    المشاركات
    709


    شكراً لك أخي أحمد العبد الله وجزاك الله خيراً ...





    التعديل الأخير تم بواسطة الإغريقي ; 25-08-2011 الساعة 06:51 PM

  6. #6
    ينتظر رسالة التوكيد
    تاريخ التسجيل
    Jul 2011
    المشاركات
    77


    بارك الله فيك اخي

    اذا جربتها ووجدت فيها عيوب اخبرني فأنا استعملها










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض