Вход:  Пароль:  
FreeSource: TZ/fluxbox/GettextSupport ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Поддержка gettext в оконном менеджере Fluxbox


Здесь я хотел бы изложить план, по которому будет создаваться патч для Fluxbox. Этот план будет для меня полезен, потому что возможно будет оценить как много/мало уже сделано, что нужно сделать следующим и т.д. Патч вообщем-то не очень сложный, но будет объемным. Его задача это возможность использования gettext. Gettext — это инструмент, позволяющий быстро и просто создавать приложения, которые бы легко поддавались локализации и интернационализации (в данный момент для меня оба этих слова являются синонимами, но вроде бы у них есть различия). Другими словами, программа, использующая gettext сможет легко и непринужденно «разговаривать» с пользователем на его языке (русском, немецком, французском и т.д.)


Всю работу, которую нужно сделать я разбил на три этапа, ниже даётся подробное описание как для них самих так и для их составляющих.


Оглавление документа

Подготовка


На этой стадии я подготовлюсь и подготовлю всё к созданию патча.

Чтение документации


Ну без этого никуда :) Нужно прочитать info gettext и еще одну статейку из интернета, чтобы получить максимально полное и правильное представление о работе gettext и его внедрении в программу. Это нужно сделать до начала работ, чтобы потом мне не пришлось что-либо еще раз искать и исправлять, делая таким образом работу повторно.


Состояние: выполнено

Составление списка файлов для обработки


На этой стадии выявляются файлы, которые я буду править. Это также поможет видеть сколько файлов я уже обработал и сколько осталось.


Имена файлов, которые нуждаются в правке и их количество:



Количество функций-макросов, использующихся сейчас во Флюксе, которые нужно будет исправлять:



Сразу же становится видно, что реально макрос _FBTK_XTEXT не используется нигде, а лишь определяется в src/FbTk/I18n.hh.


Ну и есть ещё один файл, который вообще лишь вскользь, в комментарии, упоминает класс I18n, это файл src/Xinerama.h Вот, теперь, список можно считать полным.


Состояние: выполнено

Реализация


На этой стадии будет производиться основная работа по созданию патча, потому что именно в этом периоде я его создавать и буду.

Использование функций gettext


Смысл здесь, это во всех файлах, из списка, составленного на стадии подготовки, заменить функции используемые во Fluxbox на функции gettext. Также производится «чистка» кода от любых упоминаний функций и заголовочных/исходных файлов, которые использовались до этого для локализации программы.


Состояние: в процессе

Написать скрипт cat2po


Мне понадобится скрипт, который бы конвертировал существующие cat-файлы в po-файлы. Возможно, что в интернете уже есть подобный скрипт, но и самому написать его будет интересно и, как мне кажется, не очень трудно. Нужен обязательно скрипт или какая-либо программа, потому что вручную конвертировать файлы это долго, нудно, возможны ошибки, за которые мне потом будет стыдно, ну и главный довод — это не путь кодера :) Здесь работа очень однообразная, можно легко задать алгоритм, а если есть алгоритм, то можно написать и программу, которая сделает все за меня по заданному алгоритму. Одним словом, как написано в HOWTO о том как стать хакером: «рутина — это зло».


Состояние: готово на 85%, необходима адаптация

Правка служебных файлов


Нужно будет создать отдельный каталог с po-файлами, чтобы при компиляции они «превращались» в mo-файлы, а при установке инсталлировались в /usr/share/locale/$LANG/LC_MESSAGES/fluxbox.mo Перед выполнением этого пункта следует прочитать info gettextize.


Состояние: готово на 70%, необходимо тестирование

Добавление поддержки gettext в скрипт fluxbox-generate_menu


С этим пунктом пока еще не все так ясно, потому что я не вникал в подробности, но при прочтении статьи о локализации shell-скриптов мне и пришла такая идея.


Состояние: отложено, но идея обдумывается снова

Продвижение


К началу этой стадии у меня уже будет патч и он будет работать ;) Мне останется лишь его хорошо протестировать и попытаться отправить в upstream то бишь разработчикам.

Тестирование


Попросить нескольких знакомых, которые используют Fluxbox попробовать патч, высказать свои предложения и найти ошибки. Также, думаю, что стоит выложить этот патч в интернете и дать анонс о нём в fluxbox_wm и на ЛОР (или если не пропустят новость, то в l_o_r).

Включение в пакет для ALT Linux


Добавить патч в мою сборку Fluxbox для ALT Linux.

Отправить патч разработчикам


Тут самое главное ради чего я и затевал весь сыр-бор. Мне хотелось бы, чтобы разработчики приняли мой патч и включили в основное дерево разработки. Я уже говорил на эту тему и почти уговорил Henrik'а (главного разработчика), но тут подоспел Mathias и начал говорить, что это не надо :( Я не знаю почему он не хочет использовать gettext и зачем он хочет модернизировать обработку cat-файлов. Моё мнение, что технология c использованием gencat устарела и пытаться её улучшить это городить лишние костыли и изобретать велосипед. Особенно это выглядит странным на фоне существования gettext, который уже используется в большинстве проектов и работает. В нем уже учтены многие проблемы.


Замечу, что некоторые из пунктов во всех трёх стадиях возможно выполнять параллельно с другими пунктами или даже менять их очередность.

Ссылки по теме



Страницы, ссылающиеся на данную: PhpCoder
TZ/fluxbox


 
Файлы [Скрыть файлы/форму]
Много комментариев (2). [Показать комментарии/форму]