Чешский язык

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Транслитерация

#1 9 февраля 2016 в 00:56
Правильно ли я понимаю, что за транслитерацию, допустим, чешских букв на английский отвечает вот этот кусок кода в файле functions.php?
  1. $cz_en = array(
  2. 'а'=>'a','á'=>'a','b'=>'b','c'=>'c','č'=>'ch','d'=>'d',
  3. 'ď'=>'d','e'=>'e','é'=>'e','ě'=>'e',
  4. 'f'=>'f','g'=>'g','h'=>'h','i'=>'i','í'=>'i',
  5. 'j'=>'j','k'=>'k','l'=>'l','m'=>'m','n'=>'n',
  6. 'ň'=>'n','o'=>'o','ó'=>'o','p'=>'p','q'=>'q',
  7. 'ř'=>'r','s'=>'s','š'=>'sch','t'=>'t','ť'=>'t',
  8. 'ú'=>'u','ů'=>'u','v'=>'v','w'=>'w',
  9. 'x'=>'x','y'=>'y','ý'=>'y','z'=>'z','ž'=>'z'
  10. );
  11.  
  12. foreach($cz_en as $cz=>$en){
  13. $slug = str_replace($cz, $en, $slug);
  14. }
В папке languages я скопировала папку "en" и переименовала в "cz". Затем в файле functions.php дописала недостающий вышенаписанный код, в админке поменяла язык, но при создании новости все специфические для чешского языка буквы, такие как, например, á, ž, ů не транслитерируются. Эти буквы либо опускаются, либо вместо них ставится тире. Например, "Pavlíčkovi se na prahu šedesátky líbí barevnost hudby i života" в адресной строке выглядит так: pavl-kovi-se-na-prahu-edes-tky-l-b-barevnost-hudby-i-ivota.html. Пробовала на чистой CMS — то же самое. Может я что не так делаю и где-то еще что-то нужно дописать/исправить? ICMS 2.4.0
#2 9 февраля 2016 в 12:00
  1. function lang_slug($string){
  2.  
  3. $string = strip_tags(trim($string));
  4. $string = mb_strtolower($string);
  5. $string = str_replace(' ', '-', $string);
  6.  
  7. $slug = preg_replace ('/[^a-záčéěíňóřšťúůýž0-9\-\/]/u', '-', $string);
  8. $slug = preg_replace('/([-]+)/i', '-', $slug);
  9. $slug = trim($slug, '-');
  10.  
  11. $cz_en = array(
  12. 'а' => 'a', 'á' => 'a', 'b' => 'b', 'c' => 'c', 'č' => 'ch', 'd' => 'd',
  13. 'ď' => 'd', 'e' => 'e', 'é' => 'e', 'ě' => 'e',
  14. 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i', 'í' => 'i',
  15. 'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n',
  16. 'ň' => 'n', 'o' => 'o', 'ó' => 'o', 'p' => 'p', 'q' => 'q',
  17. 'ř' => 'r', 's' => 's', 'š' => 'sch', 't' => 't', 'ť' => 't',
  18. 'ú' => 'u', 'ů' => 'u', 'v' => 'v', 'w' => 'w',
  19. 'x' => 'x', 'y' => 'y', 'ý' => 'y', 'z' => 'z', 'ž' => 'z'
  20. );
  21.  
  22. foreach($cz_en as $cz=>$en){
  23. $slug = str_replace($cz, $en, $slug);
  24. }
  25.  
  26. if (!$slug){ $slug = 'untitled'; }
  27. if (is_numeric($slug)){ $slug .= strtolower(date('F')); }
  28.  
  29. return $slug;
  30.  
  31. }
#3 9 февраля 2016 в 13:35
Fuze, спасибо.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.