Нахвърлих един превод на Tiny Tiny RSS. Преводът е на текущата версия от GitHub, пълен е, само дето се оказа, че засега има няколко стринга, които са забити статично в кода и ги няма в преводния файл, но са малко и трудно се забелязват. Ще гледам преводът да влезе официално в пакета, но ви го споделям предварително тук, за да може тези, които ползват приложението, да го пробват, че доста от стринговете ги писах без проверка къде точно са в интерфейса, та няма да откажа корекции на неточности и предложения за по-добър превод.
За да сработи преводът е нужно папката от архива да се постави в папката locale на tt-rss инсталацията, след което във файла include/functions.php на ред 70 (или около него, в масива $tr) трябва да се добави ред
GeSHi (PHP):
"bg_BG" => "Български",
за да се появи в менюто с езици и да може да се използва от приложението.
При това датите все още ще излизат на английски, тъй като разработчиците ползват директно PHP функцията date() за изписването им, която няма локализация. Ще им пусна предложение да ползват и PHP функцията strftime(), за да могат да се локализират и датите, но ако някой иска не е трудно да си я добави и сам. В същия файл include/functions.php около ред 950 имаме следното парче код
GeSHi (PHP):
if (!$no_smart_dt) {
return smart_date_time($user_timestamp,
$tz_offset, $owner_uid);
} else {
if ($long)
$format = get_pref('LONG_DATE_FORMAT', $owner_uid);
else
$format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
return date($format, $user_timestamp);
}
}
function smart_date_time($timestamp, $tz_offset = 0, $owner_uid = false) {
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
if (date("Y.m.d", $timestamp) == date("Y.m.d", time() + $tz_offset)) { return date("G:i", $timestamp);
} else if (date("Y", $timestamp) == date("Y", time() + $tz_offset)) { $format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
return date($format, $timestamp);
} else {
$format = get_pref('LONG_DATE_FORMAT', $owner_uid);
return date($format, $timestamp);
}
}
Трябва да се промени така
GeSHi (PHP):
if (!$no_smart_dt) {
return smart_date_time($user_timestamp,
$tz_offset, $owner_uid);
} else {
if ($long)
$format = get_pref('LONG_DATE_FORMAT', $owner_uid);
else
$format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
//return date($format, $user_timestamp);
}
}
function smart_date_time($timestamp, $tz_offset = 0, $owner_uid = false) {
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
if (date("Y.m.d", $timestamp) == date("Y.m.d", time() + $tz_offset)) { return date("G:i", $timestamp);
} else if (date("Y", $timestamp) == date("Y", time() + $tz_offset)) { $format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
//return date($format, $timestamp);
} else {
$format = get_pref('LONG_DATE_FORMAT', $owner_uid);
//return date($format, $timestamp);
}
}
Естествено, трябва да имаме bg_BG.UTF-8 сред добавените локали на сървъра. И, разбира се, задаването на локализацията ще е по-удобно да се изнесе в конфигурационния файл, но да не усложнявам примера. Важно е да се обърне внимание, че синтаксисът на функцията
strftime() е различен от синтаксиса на функцията
date(), така че след това човек трябва да си направи съответната замяна на стойностите за дълъг и къс формат на датите в предпочитанията на Tiny Tiny RSS.
За улеснение давам пример, че аз за дълъг формат съм си задал
%a, %d %b %Y - %H:%M
а за къс формат
%d %b, %H:%M