Автор Тема: Превод на Tiny Tiny RSS  (Прочетена 3215 пъти)

neter

  • Global Moderator
  • Участник
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Превод на Tiny Tiny RSS
« -: Mar 07, 2015, 05:04 »
Нахвърлих един превод на Tiny Tiny RSS. Преводът е на текущата версия от GitHub, пълен е, само дето се оказа, че засега има няколко стринга, които са забити статично в кода и ги няма в преводния файл, но са малко и трудно се забелязват. Ще гледам преводът да влезе официално в пакета, но ви го споделям предварително тук, за да може тези, които ползват приложението, да го пробват, че доста от стринговете ги писах без проверка къде точно са в интерфейса, та няма да откажа корекции на неточности и предложения за по-добър превод.
За да сработи преводът е нужно папката от архива да се постави в папката locale на tt-rss инсталацията, след което във файла include/functions.php на ред 70 (или около него, в масива $tr) трябва да се добави ред
Код
GeSHi (PHP):
  1. "bg_BG" => "Български",
за да се появи в менюто с езици и да може да се използва от приложението.

При това датите все още ще излизат на английски, тъй като разработчиците ползват директно PHP функцията date() за изписването им, която няма локализация. Ще им пусна предложение да ползват и PHP функцията strftime(), за да могат да се локализират и датите, но ако някой иска не е трудно да си я добави и сам. В същия файл include/functions.php около ред 950 имаме следното парче код
Код
GeSHi (PHP):
  1.        if (!$no_smart_dt) {
  2.            return smart_date_time($user_timestamp,
  3.                $tz_offset, $owner_uid);
  4.        } else {
  5.            if ($long)
  6.                $format = get_pref('LONG_DATE_FORMAT', $owner_uid);
  7.            else
  8.                $format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
  9.  
  10.            return date($format, $user_timestamp);
  11.        }    
  12.    }    
  13.  
  14.    function smart_date_time($timestamp, $tz_offset = 0, $owner_uid = false) {
  15.        if (!$owner_uid) $owner_uid = $_SESSION['uid'];
  16.  
  17.        if (date("Y.m.d", $timestamp) == date("Y.m.d", time() + $tz_offset)) {
  18.            return date("G:i", $timestamp);
  19.        } else if (date("Y", $timestamp) == date("Y", time() + $tz_offset)) {
  20.            $format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
  21.            return date($format, $timestamp);
  22.        } else {
  23.            $format = get_pref('LONG_DATE_FORMAT', $owner_uid);
  24.            return date($format, $timestamp);
  25.        }    
  26.    }
Трябва да се промени така
Код
GeSHi (PHP):
  1.        setlocale(LC_TIME, 'bg_BG.UTF-8');
  2.  
  3.        if (!$no_smart_dt) {
  4.            return smart_date_time($user_timestamp,
  5.                $tz_offset, $owner_uid);
  6.        } else {
  7.            if ($long)
  8.                $format = get_pref('LONG_DATE_FORMAT', $owner_uid);
  9.            else
  10.                $format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
  11.  
  12.            //return date($format, $user_timestamp);
  13.            return strftime($format, strtotime(date("d F Y, H:i:s", $user_timestamp)));
  14.        }    
  15.    }    
  16.  
  17.    function smart_date_time($timestamp, $tz_offset = 0, $owner_uid = false) {
  18.        if (!$owner_uid) $owner_uid = $_SESSION['uid'];
  19.  
  20.        if (date("Y.m.d", $timestamp) == date("Y.m.d", time() + $tz_offset)) {
  21.            return date("G:i", $timestamp);
  22.        } else if (date("Y", $timestamp) == date("Y", time() + $tz_offset)) {
  23.            $format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
  24.            //return date($format, $timestamp);
  25.            return strftime($format, strtotime(date("d F Y, H:i:s", $timestamp)));
  26.        } else {
  27.            $format = get_pref('LONG_DATE_FORMAT', $owner_uid);
  28.            //return date($format, $timestamp);
  29.            return strftime($format, strtotime(date("d F Y, H:i:s", $timestamp)));
  30.        }    
  31.    }
Естествено, трябва да имаме bg_BG.UTF-8 сред добавените локали на сървъра. И, разбира се, задаването на локализацията ще е по-удобно да се изнесе в конфигурационния файл, но да не усложнявам примера. Важно е да се обърне внимание, че синтаксисът на функцията strftime() е различен от синтаксиса на функцията date(), така че след това човек трябва да си направи съответната замяна на стойностите за дълъг и къс формат на датите в предпочитанията на Tiny Tiny RSS.
За улеснение давам пример, че аз за дълъг формат съм си задал
Цитат
%a, %d %b %Y - %H:%M
а за къс формат
Цитат
%d %b, %H:%M
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

go_fire

  • Участник
  • *****
  • Публикации: 5304
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: Превод на Tiny Tiny RSS
« Отговор #1 -: Mar 10, 2015, 21:54 »
Ех Нетере, какво щяхме да правим безтеб?! Не само тази тема. Я да видим дори само днешната ти активност. Срам е, че архива към темата ти не е бил свален нито веднъж. Ако позволиш мъничка забележчица. Поне аз бих предпочел второто да е от типа:

Код
GeSHi (Bash):
  1. --- 01  2015-03-10 21:52:37.000000000 +0200
  2. +++ 02  2015-03-10 21:53:13.000000000 +0200
  3. @@ -1,4 +1,6 @@
  4. -if (!$no_smart_dt) {
  5. +setlocale(LC_TIME, 'bg_BG.UTF-8');
  6. +
  7. +        if (!$no_smart_dt) {
  8.             return smart_date_time($user_timestamp,
  9.                 $tz_offset, $owner_uid);
  10.         } else {
  11. @@ -7,7 +9,8 @@
  12.             else
  13.                 $format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
  14.  
  15. -            return date($format, $user_timestamp);
  16. +            //return date($format, $user_timestamp);
  17. +            return strftime($format, strtotime(date("d F Y, H:i:s", $user_timestamp)));
  18.         }    
  19.     }    
  20.  
  21. @@ -18,9 +21,11 @@
  22.             return date("G:i", $timestamp);
  23.         } else if (date("Y", $timestamp) == date("Y", time() + $tz_offset)) {
  24.             $format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
  25. -            return date($format, $timestamp);
  26. +            //return date($format, $timestamp);
  27. +            return strftime($format, strtotime(date("d F Y, H:i:s", $timestamp)));
  28.         } else {
  29.             $format = get_pref('LONG_DATE_FORMAT', $owner_uid);
  30. -            return date($format, $timestamp);
  31. +            //return date($format, $timestamp);
  32. +            return strftime($format, strtotime(date("d F Y, H:i:s", $timestamp)));
  33.         }    
  34.     }
  35.  

Разбира се, това е само пример. Include/functions.php не се кав 01 и няма да се заменя от 02.  И малко скапано е генерирано, щото нямам целият functions.php.  Ала важното е, че мантрата е: каквото може да се автоматизира, трябва да се автоматизира. Някак си не ми се редактира на ръка (ако ползвах нещото). Що ли?
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

neter

  • Global Moderator
  • Участник
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Превод на Tiny Tiny RSS
« Отговор #2 -: Mar 10, 2015, 22:50 »
Да, няма лошо да е в по-автоматизиран вариант. Тук го показах само като идея, имах надеждата разработчиците да го вкарат официално и да не си играем с допълнителни пачове, само че ме отрязаха засега под претекст, че не било важно :) Tiny Tiny RSS ползва rolling release модела и не се знае колко време дадена версия на patch-а ще бъде актуална, а и трудно ще се проследява. По едно време се замислих дали да не пазя един редовно обновяван, но и с добавена промяната за датите, fork на проекта в моя акаунт в GitHub, и така желаещите да си обновяват инсталациите от това копие, но... желаещите вероятно ще се броят на пръсти, въпреки че ще може да се ползва не само от българските потребители, та ще се получи трепане на мухи с гаубица. Ще опитам да измисля достатъчно удобен и смислен за прилагане и поддръжка вариант, благодаря за подкрепата :) Карай за несваления архив тук - във форума на проекта е свален цели 3 пъти (е, не зная дали е свалян за ползване или за проверка, ама все тая), а скоро ще бъде добавен и официално в приложението, при което много народ ще си го дръпне, ще-неще :P
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Проблем със Synaptic при Tiny Me с LXDE графична среда.
Хардуерни и софтуерни проблеми
tokopan 2 1772 Последна публикация Jan 01, 2009, 16:07
от tokopan
Регулярни изрази за Tiny C Compiler - SLRE или друга библиотека?
Общ форум
PhrozenCrew 5 1596 Последна публикация Jul 20, 2012, 14:35
от morbid_viper
Tiny and Fast WebDev environment
Web development
clovenhoof 1 1545 Последна публикация Oct 28, 2013, 16:15
от clovenhoof