Vietnamese Slug

  1. 5 years ago
    Edited 5 years ago by vukidrock

    Hi there, I'm Vu Huynh from Vietnam. Vietnamese is a language base on Latin and some points.
    Yesterday, I edited a little bit in file core/lib/functions.general.php to make Esotalk can convert all Vietnamese character in conversation's URL to original Latin character, and it make URL display clearly in address bar.
    Thank @Tristan for your enthusiastic help, you always answer all of questions.

    P/s: sorry for my bad English :(

    Việt Nam Slug là một chút chỉnh sửa của mình để giúp chuyển ký tự có dấu của tiếng Việt trên tiêu đề các conversation thành ký tự Latin để hiển thị gọn gàng trên thanh address và link của conversation. Các bạn download tại file đính kèm.

  2. Cám ơn bạn nhiều về sự chỉnh sửa này nhé :)
    Hiện mình đang làm việc với code để có thể tìm kiếm nội dung tiếng việt :)
    Có vẻ bộ nguồn này chưa tương thích hoàn toàn với tiếng việt :)

  3. mình thấy nó tìm và nhận dạng tốt mà :D

  4. Please submit an issue here for @Toby to include Vietnamese/Latin support.

  5. Hi Vukidrock, The file: functions.general.php you upload here can't download. Can you repost it please. Thanks

  6. @hien104 Hi Vukidrock, The file: functions.general.php you upload here can't download. Can you repost it please. Thanks

    Hien104 mình cung làv nguoi Vn đây! Hiện tại mình cug đag sử dụng esotalk va thấy 1 số điểm chua hoan toan tuog thích voi TViet....

    Hope @Toby and Dev team fix some bug soon for vietnamese...sr my english not good!

  7. @alinguyen Bạn cũng đang sử dụng esotalk sao. Trang của bạn thế nào cho mình xem chut nào. Mình đang vướng cho Slug chua giải quyết được.

  8. @hien104 undefined

    channel slug hien104 chua hô trợ Tv nen mình cũng k biet phai lam sao ví dụ như tên đây là demo slug sẽ thanh d--y-l--demo lỗi này gây google se ko thể index dc rôi chac phai dùng tiếng việt ko dấu thôi @hien104 àk.. mik cũng đang thử demo esotalk thôi nhưng thấy mmột vài lôi voi VNm nên chưa đưa vào sd...

  9. @alinguyen Cảm ơn ban nhé. Mình cũng đang demo để xem thế nào.

  10. @hien104 @alinguyen Cảm ơn ban nhé. Mình cũng đang demo để xem thế nào.

    ok neu esotalk hỗ trợ tốt hơn trên nhiều trình duyệt và style mobile riêng thì tuyệt.

  11. 4 years ago

    show forum bạn ra mình xem thử nào!!

  12. [deleted]

    30 Oct 2015

    file đính kèm này đã bị hỏng. Bạn cho xin link mới với. Cảm ơn! :D

  13. [deleted]

    30 Oct 2015

    Tôi đã chỉnh sửa lại một ít và nó đã hoạt động tốt. Bạn thay đổi 1 tý lên file trong thư mục /core/lib/functions.general.php - Demo ở đây

    Xoá đoạn này

    /**
     * Create a slug for use in URLs from a given string. Any non-alphanumeric characters will be converted to "-".
     *
     * @param string $string The string to convert.
     * @return string The slug.
     *
     * @package esoTalk
     */
    function slug($string)
    {
    	// If there are any characters other than basic alphanumeric, space, punctuation, then we need to attempt transliteration.
    	if (preg_match("/[^\x20-\x7f]/", $string)) {
    	
    		// Thanks to krakos for this code! http://esotalk.org/forum/582-unicode-in-usernames-and-url-s
    		if (function_exists('transliterator_transliterate')) {
    
    			// Unicode decomposition rules states that these cannot be decomposed, hence
    			// we have to deal with them manually. Note: even though “scharfes s” is commonly
    			// transliterated as “sz”, in this context “ss” is preferred, as it's the most popular 
    			// method among German speakers.
    			$src = array('œ', 'æ', 'đ', 'ø', 'ł', 'ß', 'Œ', 'Æ', 'Đ', 'Ø', 'Ł');
    			$dst = array('oe','ae','d', 'o', 'l', 'ss', 'OE', 'AE', 'D', 'O', 'L');
    			$string = str_replace($src, $dst, $string);
    
    			// Using transliterator to get rid of accents and convert non-Latin to Latin
    			$string = transliterator_transliterate("Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();", $string);
    
    		} 
    		else {
    
    			// A fallback to old method.
    			// Convert special Latin letters and other characters to HTML entities.
    			$string = htmlentities($string, ENT_NOQUOTES, "UTF-8");
    
    			// With those HTML entities, either convert them back to a normal letter, or remove them.
    			$string = preg_replace(array("/&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml|caron);/i", "/&[^;]{2,6};/"), array("$1", " "), $string);
    
    		}
    
    	}
    
    	// Allow plugins to alter the slug.
    	ET::trigger("slug", array(&$string));
    
    	// Now replace non-alphanumeric characters with a hyphen, and remove multiple hyphens.
    	$slug = str_replace(' ','-',trim(preg_replace('~[^\\pL\d]+~u',' ',mb_strtolower($string, "UTF-8"))));
    
    	return mb_substr($slug, 0, 63, "UTF-8");
    }

    Thay vào bằng đoạn sau

    /**
     * Create a slug for use in URLs from a given string. Any non-alphanumeric characters will be converted to "-".
     *
     * @param string $string The string to convert.
     * @return string The slug.
     *
     * @package esoTalk // edit by lamdesign.vn
     */
    function slug($string)
    {
    	// Convert special latin letters and other characters to HTML entities.
    	$slug = htmlentities($string, ENT_NOQUOTES, "UTF-8");
    
    	// With those HTML entities, either convert them back to a normal letter, or remove them.
    	$slug = preg_replace(array("/&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);/i", "/&[^;]{2,6};/", "/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ|À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ|å/", "/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ|È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ|ë/", "/ì|í|ị|ỉ|ĩ|Ì|Í|Ị|Ỉ|Ĩ|î/", "/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ|Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ|ø/", "/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ|Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ|ů|û/", "/ỳ|ý|ỵ|ỷ|ỹ|Ỳ|Ý|Ỵ|Ỷ|Ỹ/", "/đ|Đ/", "/ç/", "/ñ/", "/ä|æ/", "/ö/", "/ü/", "/Ä/", "/Ü/", "/Ö/", "/ß/"), array("$1", " ", "a", "e", "i", "o", "u", "y", "d", "c", "n", "ae", "oe", "ue", "Ae", "Ue", "Oe", "ss"), $slug);
    	// Now replace non-alphanumeric characters with a hyphen, and remove multiple hyphens.
    	$slug = strtolower(trim(preg_replace(array("/[^0-9a-z]/i", "/-+/"), "-", $slug), "-"));
    
    	return substr($slug, 0, 63);
    }
 

or Sign Up to reply!