Відредагований плагін UkrToLat від LaSet згідно із правильними правилами транслітерації, які чинні в Україні
Я чимало тут на блозі пишу про правильну транслітерацію, переклад українських імн та прізвищ українців англійською мовою. Але чомусь не звертав особливої уваги, що транскодування у плагіні UkrToLat від LaSet не зовсім відповідає загальнодержавним вимогам. Звісно, деяким людям це не важливо, але у мене прокинулося загострення нормативносі, тому викладаю тут мною виправлений код автора згаданого плагіну (сподіваюся, в суд мене не поведе – я на авторство не претендую… хіба співавторство…). Якщо захочете, просто скопіюйте код, поданий нижче, і вставте його замість того, що є у плагіні за шляхом в адмінці WordPress: Плагіни -> UkrToLat -> Редагувати. Я спеціально не змінював постійне посилання цієї статті, щоб показати дієвість відредагованого мною плагіну.
<?php
/*
Plugin Name: UkrToLatPlugin URI: http://blog.net.ua/
Description: Цей плаґін формує адресу публікацій і сторінок латинськими літерами з його заголовків .
Author: LaSet; yurolex
Author URI: http://www.laset.info/
Version: 0.1.4
*/
$gost = array(
"Ґ"=>"G","Ё"=>"Yo","Є"=>"Ye","Ы"=>"Y","І"=>"I",
"і"=>"i","ґ"=>"g","ё"=>"yo","№"=>"#","є"=>"ie"," є"=>" ye",
"ы"=>"y","А"=>"A","Б"=>"B","В"=>"V","Г"=>"H",
"Д"=>"D","Е"=>"E","Ж"=>"Zh","З"=>"Z","И"=>"Y",
"Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
"О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
"У"=>"U","Ф"=>"F","Х"=>"Kh","Ц"=>"Ts","Ч"=>"Ch",
"Ш"=>"Sh","Щ"=>"Shch","Ъ"=>"'","Ь"=>"", "Ї"=>"Yi",
"Э"=>"E","Ю"=>"Yu","Я"=>"Ya","а"=>"a","б"=>"b",
"в"=>"v","г"=>"h","д"=>"d","е"=>"e","ж"=>"zh",
"з"=>"z","и"=>"y","й"=>"i","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"kh",
"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"shch","ъ"=>"",
"ы"=>"y","ь"=>"","э"=>"e","ю"=>"iu"," ю"=>" yu","я"=>"ia"," я"=>" ya",
"ї"=>"i"," ї"=>" yi","ьо"=>"io","'"=>"",
"'"=>"","'"=>"","`"=>"","´"=>""
);
$original = array(
"Ґ"=>"G","Ё"=>"Yo","Є"=>"Ye","Ы"=>"Y","І"=>"I",
"і"=>"i","ґ"=>"g","ё"=>"yo","№"=>"#","є"=>"ie"," є"=>" ye",
"ы"=>"y","А"=>"A","Б"=>"B","В"=>"V","Г"=>"H",
"Д"=>"D","Е"=>"E","Ж"=>"Zh","З"=>"Z","И"=>"Y",
"Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
"О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
"У"=>"U","Ф"=>"F","Х"=>"Kh","Ц"=>"Ts","Ч"=>"Ch",
"Ш"=>"Sh","Щ"=>"Shch","Ъ"=>"'","Ь"=>"", "Ї"=>"Yi",
"Э"=>"E","Ю"=>"Yu","Я"=>"Ya","а"=>"a","б"=>"b",
"в"=>"v","г"=>"h","д"=>"d","е"=>"e","ж"=>"zh",
"з"=>"z","и"=>"y","й"=>"i","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"kh",
"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"shch","ъ"=>"",
"ы"=>"y","ь"=>"","э"=>"e","ю"=>"iu"," ю"=>" yu","я"=>"ia"," я"=>" ya",
"ї"=>"i"," ї"=>" yi","ьо"=>"io","'"=>"",
"'"=>"","'"=>"","`"=>"","´"=>""
);
function sanitize_title_with_translit($title) {
global $gost, $original;
$rtl_standard = get_option('rtl_standard');
switch ($rtl_standard) {
case 'off':
return $title;
case 'gost':
return strtr($title, $gost);
default:
return strtr($title, $original);
}
}
function rtl_options_page() {
?>
<div class="wrap">
<h2>Налаштування UkrToLat</h2>
<p>Ви можете обрати стандарт, за яким буде здійснюватися транлітерація заголовків.</p>
<?php
if($_POST['rtl_standard']) {
// set the post formatting options
update_option('rtl_standard', $_POST['rtl_standard']);
echo '<div class="updated"><p>Налаштування оновлено.</p></div>';
}
?>
<form method="post">
<fieldset class="options">
<legend>Проводити транслітерацію за стандартом:</legend>
<?php
$rtl_standard = get_option('rtl_standard');
?>
<select name="rtl_standard">
<option value="off"<?php if($rtl_standard == 'off'){ echo('
selected="selected"');}?>>Вимкнено</option>
<option value="original"<?php if($rtl_standard == 'original' OR $rtl_standard == ''){
echo(' selected="selected"');}?>>Постанова КМУ №55</option>
<option value="gost"<?php if($rtl_standard == 'gost'){ echo('
selected="selected"');}?>>Рішення УКППТ №9</option>
</select>
<input type="submit" value="Змінити стандарт" />
</fieldset>
</form>
</div>
<?
}
function rtl_add_menu() {
add_options_page('UkrToLat', 'UkrToLat', 8, __FILE__, 'rtl_options_page');
}
add_action('admin_menu', 'rtl_add_menu');
add_action('sanitize_title', 'sanitize_title_with_translit', 0);
?>
P.S. Я намагався зробити так, щоб посеред речення слова, які починаються на “я”, “ю”, “є” та “ї” виглядали теж правильно, але, якщо автор статті напише початок заголовка свого допису з малої літери, він буде неправильно транслітерований цим кодом. Причина проста: я прописав, що транслітерація посеред речення зі словами, які починаються згаданими літерами, враховує і пробіл перед ними, щоб таким чином відрізнити малу, велику літери і ті, що посередині слова.

Twitter
Facebook
Youtube
Picasa
4 коментарі
17 Жов 2011
“…
Plugin Name: UkrToLat
Plugin URI: http://blog.net.ua/
…”
Насправді це не URI, так як знайти за цією адресою плагін проблематично…
Пропоную автору виправити, а так, це нагадує рекламу власного ресурса: гляньте, який класний у мене ресурс…
17 Жов 2011
Само собою, що то реклама власного ресурсу, Юра. Ти ж не будеш себе ганити за, по-моєму, непогану роботу, до якої в інших руки не дійшли. Я б міг розписувати про правильність-неправильність їхньої транслітерації дуже довго і це закінчилося б балачками. А так будь-хто охочий може змінити вручну той плагін. На жаль, поки хлопці-автори змін не внесли. Тому ласкаво просимо користуватися моїми корективами. Зауважу: на авторство я ніколи не претендував, навпаки – робив додаткову рекламу плагінові.
А адресу я взяв із специфікацій оригінального плагіну – можеш поскаржитися авторам
.
17 Січ 2012
Красно дякую!
Згодилось.
21 Січ 2012
Радий допомогти.
Ваш відгук