Help:Extension:Translate/Group configuration example/uk

Цей посібник призначений для розробників і досвідчених адміністраторів перекладу. У цьому посібнику пояснюється, як створювати нові файли конфігурації для перекладу повідомлень інтерфейсу програмного забезпечення, включно з практичними аспектами цього. Його треба використовувати разом із посібником з налаштування груп; розробники розширення Translate радо допоможуть вам з будь-якими питаннями, які у вас виникнуть під час роботи з цим посібником.

Передумови

 * Встановити Mediawiki,
 * розширення Translate і
 * його.

Цей посібник було створено на основі версії r97948 розширення Translate (2011-09-23).

У цьому посібнику описано процес вмикання перекладу для деяких частин проекту MyBB. Ви можете слідувати таким крокам додавання інших проектів/файлів на переклад. Деякі речі специфічні для translatewiki.net і вам, зрозуміло, треба користуватись тим, що відповідає вашій ситуації, замість того, щоб сліпо слідувати крокам, описаним тут.

Крок 1: Перевірка вихідного коду
Давайте перевіримо вихідний код MyBB використовуючи  як робочу директорію, що у цьому приклад є. cd /home/betawiki/projects svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb

sudo -u betawiki svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb Тепер треба знайти файли, що містять повідомлення. Вони знаходяться у субдиректорії  і ви можете знайти вихідні повідомлення англійською мовою у субдиректорії.

Тож давайте розпочнемо з, першого файлу локалізації нашого проекту.

Крок 2: Підтримка формату файлу
У нашій директорії встановлення MediaWiki під  та    ми можемо бачити класи для підтримки формату файлу, які використовуються для планування груп повідомлень у файли локалізації кожного проекту. Ви маєте трохи покопатися, щоб побачити, власне, який вид форматів підтримується. Тому ми просто вирішили спробувати і використати спершу клас FlatPhpFFS, і побачити, як добре він працює з нашим PHP-файлом.

Тож ми маємо файл для планування і ми вибрали для нього клас FFS. Тепер нам треба прописати конфігурацію групи. Це файл YAML.

На ви можете знайти посилання на. Розпочнемо з мінімального файлу, поданого як приклад для секції BASIC. Ми можемо іти далі і просто замінити текст прикладу на наші значення. Опис сприймає увесь синтаксис вікітексту. Цікава річ, показана в оригінальному прикладі, полягає в тому, що ви можете зробити його перекладабельним, використавши. Але потім вам треба зазначити текст за замовчування на сторінці Mediawiki:Message-key. Зверніть увагу, що ID простору назв додається постійно, див. як використовувати інші простори назв.

Нам необхідна ще одна річ: секція. Знову починаємо з прикладу, поданого в документації: Гмм,  — це код мови, як   за замовчуванням. На зараз, ми не хочемо змінювати структуру директорії, яку використовує MyBB. Натомість ми можемо використати функцію, створену з цією метою: план коду, який дозволяє нам спланувати мовні коди кожної мови на ідентифікатори, використовувані нашим проектом.

Тож у нас виходить таке:

По суті, це значить, що для коду    угорі буде , директорія для файлів повідомлень англійською. Ключ, зазвичай, те саме, що й  , але без префіксу.

Добре. Тепер давайте збережемо кудись цей файл, наприклад, що у ту саму папку, де зберігається LocalSettings.php, з назвою. Увесь файл такий: Далі нам треба вказати нашому розширенню прочитати цей файл. Додайте до  такий рядок: Після того, як зробите це, слідуйте інструкціям на сторінці Управління групами, щоб запустити скрипт.

Тож давайте увійдемо в систему, переконаємося, що користувач має правильно налаштоване право "translate-manage", і перейдемо на Special:ManageMessageGroups.

Ви можете бачите таке: No valid namespace defined, got NS_MYBB. Backtrace: <...> У цьому випадку, уважно читавши документацію, ви могли визначити необхідність додання до  наступного рядка, щоб зареєструвати новий простір назв у MediaWiki: У цьому прикладу використано 1246, але ви можете обрати будь-який вільних номер простору назв. Для розширення Translate ми рекомендуємо вам використовувати парні числа у діапазоні 1200-1298.

Якщо ви зараз перезавантажите спеціальну сторінку ManageMessageGroups, то маєте побачити рядок, який каже: MyBB This message group has not been imported previously. Натисніть на посилання MyBB. Після цього, ви побачите список повідомлень, які є в тому файлі. Якщо ви задоволені результатом, натисніть «Виконати».

Після того, як ви натиснете «Виконати», файл виконається і ви побачите результат, подібний до цього: Imported new version of page MyBB:L\x5b'boardstats'\x5d/en. Imported new version of page MyBB:L\x5b'new posts'\x5d/en. Imported new version of page MyBB:L\x5b'no new posts'\x5d/en. ... Cache rebuild. All done! Якщо файл дуже великий, вам треба спершу запустити, оскільки веб-інтерфейс може імпортувати обмежену кількість повідомлень зараз через ліміт PHP-таймаут; якщо ви зіткнулися з цим обмеженням, ми можете натиснути кнопку унизу сторінки для імпорту повідомлень, що залишилися.

Крок 3: Додавання іншого файлу
Тепер давайте додамо другий файл для MyBB на переклад. Є два способи це зробити:

Підхід 1: Додавання нового файлу YAML
Просто додайте новий файл YAML і збережіть його з новою назвою. Потім викличіть його зсередини   і повторіть усі попередні кроки. Файл буде виглядати приблизно так: З прикладу вище очевидно, що для цієї нової групи треба використати інший ID.

Хоч цей підхід і простий, він не підходить за масштабом для сотень різних юнітів перекладу (i.e. файлів, спланованих на їхню групу повідомлень). У повний момент вам треба оновити якесь значення, і робити це для усіх тих файлів зовсім не весело. На щастя, є інший спосіб, показаний нижче.

Підхід 2: Синтаксис TEMPLATE
Ідея полягає у тому, що ми виносимо спільні значення у шаблон. Потім кожна група буде брати потрібні значення із шаблону і не треба буде повторювати їх для кожної групи.

Let's get back to MyBB example. Let's say you want to include,   and   in the translatable messages. The YAML file needs to be updated like this: As obvious in the above example,  is defined only once; addition and removal of files is as easy as adding or removing a section in the above file.

Now if you go to the ManageMessageGroups special page, you will see three items like this: MyBB global messages: This message group has not been imported previously. MyBB index page: This message group has not been imported previously. MyBB show thread: This message group has not been imported previously.

If there are a lot of files to be included in your project, it may be a good idea to write a script that generated your YAML file for you. An example can be found in page>svn:trunk/translatewiki/StatusNet/genStatusNet-plugins.php.

Крок 4: Агрегувати групу
Adding an aggregate group and defining the message files as its subgroups has two benefits:


 * Less work for translators to select different message groups, in particular for maintenance work. Translators can simply open the aggregate group and translate or update everything that needs updating or translation for all the groups.
 * Statistics can be reported on the aggregate group level, i.e. whole project.

In order to define an aggregate group, you need to add the following section right after the TEMPLATE section and before the definition of individual subgroups: This gets us pretty close, but there is still one step missing. At this point, if you go to Special:Translate, you will see the MyBB parent group (and it in fact works!) but also the subgroups listed as separate groups. :(

This is the way to fix it. Add the following line to your : $wgTranslateGroupStructure['/^out-mybb/'] = array( 'mybb' );

This takes all groups whose id match the given pattern, shows the first group, and hides everything else below that first group. A bit ugly, but it works. This construction only supports two layers, even though aggregate groups can be part of aggregate groups.

If you go to Special:Translate now, you will only see the parent group MyBB listed. Additionally, you will see a link "Show 3 subgroups"; clicking on that will show you the names of subgroups.

Check out the manual for TAGS and other sections we didn't go through in this document.

Крок 5: Очищення
YAML files of projects supported by translatewiki.net are committed to the repository on Git.

In translatewiki.net, the  lines are actually in. Sandboxwiki at translatewiki.net does not have a  file, which is why we added everything in.