Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > วันนี้งานไม่ยุ่ง แจกเลย ฟังก์ชั่น Translate (แปลภาษา)



 

วันนี้งานไม่ยุ่ง แจกเลย ฟังก์ชั่น Translate (แปลภาษา)

 



Topic : 086349



โพสกระทู้ ( 615 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์




Code (PHP)
/*
 * // เริ่มใช้งานโดย
 * 1. ตั่งค่า ที่อยู่ของไดเรคทอรีของภาษา define("DIR_LANG", 'langpack/'); ข้างใน langpack ก็คือ  langpack/en/en.ini , langpack/th/th.ini

 * 2. ตั่งค่าค่าเริ่มต้น ภาษา define('DEFUALT_LANG', 'en');
 * // ความสำคัญในการ แปลเริ่มจาก 
 * 1. tran($str, $lang) // $lang ที่ระบุเข้าไป
 * 2. จาก $_SESSION['lang']
 * 3. จาก DEFUALT_LANG
 * // 
 * การใช้งาน tran('YOU_KEY') // หากไม่พบ KEY จะสร้าง Key ใหม่ ในไฟล์ให้
 * 1. KEY เช่น HELLO_WORLD , hello world, hell_World = มีค่าเท่ากับ HELLO_WORLD ซึ่งแล้วแต่สะดวกในการใช้
 * 2. การใส่ KEY ครั้งแรก จะเป็นการสร้าง KEY ใหม่ หาก มี Key อยู่แล้ว จะ return Value มาให้ 
 * ฉะนั้น ควร Refesh เพื่อรับเป็น Value
 * 3. ทีนี้ก็ไปไล่ แปลใน ไดเรคทอรี ที่เรามีอยู่ เป็นอันเสร็จ
 * 
 * echo tran('hello',false,'th') // สัวัสดี
 * 
 *  $_SESSION['lang'] = 'en';
 *  echo tran('hello')  // Hello
 * 
 * echo tran('HELLO') // Hello
 * echo tran('HELLO'),' ',tran('world','s') // Hello world  // 's' = ตัวเล็ก
 *  echo tran('HELLO',false,'th'),' ',tran('world') // สวัสดี World 
 * 
 */
// ปล. หากเจอข้อผิดพลาด โพสต์ไว้ด้วยนะครับ จะได้เอาไปแก้ เพราะใช้อยู่ก็ไม่เจอปัญหาอะไร
// การใช้กับ Database ก็หลักการเดียกันครับ ไม่เจอ KEY ก็ INSERT KEY เข้าไป แต่ก่อนก็ใช้แต่แปลลำบาก
function lang_case($lang) {
    $arr_case_lang = array('th', 'lo');       // ภาษาที่ไม่ต้องการ แปลงเป็นตัวเล็ก/ตัวใหญ่
    if (is_array($lang)) {
        $i = 0;
        do {
            if (in_array($lang[$i], $arr_case_lang))
                return TRUE;
            $i++;
        }while ($i < count($lang));
    }else {
        if (in_array($lang, $arr_case_lang))
            return TRUE;
        else
            return FALSE;
    }
    return FALSE;
}

function tran($str, $type = FALSE,$lang = FALSE) {
    // by sornarinb(at)gmail.com
    if (!sub_dir(DIR_LANG, 2))
        return $str . '[err:DIR_LANG]';
    $all_lang = sub_dir(DIR_LANG, 2);
    $key = strtoupper(trim($str));
    if ($lang) {
        $lang = trim($lang);
        if (file_exists(DIR_LANG . $lang . '/' . $lang . '.ini')) {
            $word = parse_ini_file(DIR_LANG . $lang . '/' . $lang . '.ini');
            if (isset($word[$key])) {
                if ($type == 's' && !lang_case($lang))
                    return strtolower($word[$key]);
                return $word[$key];
            }else {
                foreach ($all_lang as $value) {
                    $path = DIR_LANG . $value . '/' . $value . '.ini';
                    $data[$key] = $key;
                    write_ini($data, $path);
                }
                if ($type == 's' && !lang_case($lang))
                    return strtolower($word[$key]);
                return $key;
            }
        } else {
            $word = parse_ini_file(DIR_LANG . DEFUALT_LANG . '/' . DEFUALT_LANG . '.ini');
            if (isset($word[$key])) {
                if ($type == 's' && !lang_case(DEFUALT_LANG))
                    return strtolower($word[$key]);
                return $word[$key];
            }else {
                foreach ($all_lang as $value) {
                    $path = DIR_LANG . $value . '/' . $value . '.ini';
                    $data[$key] = $key;
                    write_ini($data, $path);
                }
                if ($type == 's' && !lang_case(DEFUALT_LANG))
                    return strtolower($word[$key]);
                return $key;
            }
        }
    } else if (@$_SESSION['lang'] != '' && strlen($_SESSION['lang']) == 2) {
        $path = DIR_LANG . $_SESSION['lang'] . '/' . $_SESSION['lang'] . '.ini';
        $word = parse_ini_file($path);
        if (isset($word[$key])) {
            if ($type == 's' && !lang_case($_SESSION['lang']))
                return strtolower($word[$key]);
            return $word[$key];
        }else {
            foreach ($all_lang as $value) {
                $path = DIR_LANG . $value . '/' . $value . '.ini';
                $data[$key] = $key;
                write_ini($data, $path);
            }
            if ($type == 's' && !lang_case($_SESSION['lang']))
                return strtolower($word[$key]);
            return $key;
        }
    } else {
        $word = parse_ini_file(DIR_LANG . DEFUALT_LANG . '/' . DEFUALT_LANG . '.ini');
        if (isset($word[$key])) {
            if ($type == 's' && !lang_case(DEFUALT_LANG))
                return strtolower($word[$key]);
            return $word[$key];
        }else {
            foreach ($all_lang as $value) {
                $path = DIR_LANG . $value . '/' . $value . '.ini';
                $data[$key] = $key;
                write_ini($data, $path);
            }
            if ($type == 's' && !lang_case(DEFUALT_LANG))
                return strtolower($word[$key]);
            return $key;
        }
    }
}

function write_ini($data, $path, $create = FALSE) {
    if ($create) {
        // create ini file
    } else {
        $fp = fopen($path, 'a'); // 'a' will append or add to the file
        while (list($key, $values) = each($data)) {
            $value = trim($values);
            $value = strtoupper($key) . ' = ' . $values;
            fwrite($fp, "\n" . $value);
        }
    }
    fclose($fp);
}

function sub_dir($dir, $dir_length = FALSE) {
    $in_dir = scandir($dir);
    if ($dir_length) {
        foreach ($in_dir as $value) {
            if (!strpos($value, '.') && $value != '.' && $value != '..' && strlen($value) == $dir_length)
                $sub_dir[] = $value;
        }
    } else {
        foreach ($in_dir as $value) {
            if (!strpos($value, '.') && $value != '.' && $value != '..')
                $sub_dir[] = $value;
        }
    }
    if (!isset($sub_dir))
        return FALSE;
    return $sub_dir;
}




Tag : PHP









ประวัติการแก้ไข
2012-11-06 16:52:34
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-11-06 16:43:13 By : t-monroe View : 1145 Reply : 3
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

อันนี้ใช้ร่วมกันอะไรครับ Google Translate หรือเปล่าครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-06 17:02:10 By : mr.win
 


 

No. 2



โพสกระทู้ ( 615 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


เปล่าครับ...
เราต้องเข้าไปแปลเอง Google การเลือกใช้คำของ Google ยังไม่ได้เท่าที่ควร
ก็ต้องแปลเอง หรือว่าผมเขียนผิด -*- ใช่ ต้องเรียบกว่า "เปลียนภาษา" ไม่ใช่ "แปลภาษา"


ประวัติการแก้ไข
2012-11-06 17:12:17
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-06 17:06:44 By : t-monroe
 

 

No. 3



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ประมาณนั้นครับ

Go to : ทำปุ่ม Google Translate แปลภาษาของ Google มาติดบนเว็บเราแบบง่าย ๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-07 09:12:38 By : mr.win
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : วันนี้งานไม่ยุ่ง แจกเลย ฟังก์ชั่น Translate (แปลภาษา)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่