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
Ідея полягає у тому, що ми виносимо спільні значення у шаблон. Потім кожна група буде брати потрібні значення із шаблону і не треба буде повторювати їх для кожної групи.

Давайте повернемося до прикладу з MyBB. Скажімо, ви хочете включити у перекладабельні повідомлення,   і. Файл YAML треба оновити, як тут: Як показано у прикладі зверху,  визначено тільки раз; додавання і видалення файлів так само просте, як і додавання чи видалення секції у файлі вгорі.

Якщо ви зараз перейдете до спеціальної сторінки ManageMessageGroups, то побачите три такі пункти: 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: Агрегувати групу
Додавання агрегованої групи і визначення файлів повідомлень як її підгрупи має дві вигоди:


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

Для того, щоб визначити агреговану групу, вам треба додати наступну секцію одразу після секції TEMPLATE і перед визначенням індивідуальних підгруп: 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.