Help:Extension:Translate/Group configuration example/uk

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

Передумови

 * розширення Translate і
 * його.
 * його.

Цей посібник було створено на основі версії r97948 розширення (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. Натомість ми можемо використати функцію, створену з цією метою: план коду, який дозволяє нам спланувати мовні коди кожної мови на ідентифікатори, використовувані нашим проектом.

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

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

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

Далі нам треба вказати нашому розширенню прочитати цей файл. Додайте до  такий рядок:

Після того, як зробите це, слідуйте інструкціям на сторінці Управління групами, щоб запустити скрипт $code.

Тож давайте увійдемо в систему, переконаємося, що користувач має правильно налаштоване право "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 trunk/translatewiki/StatusNet/genStatusNet-plugins.php.

Крок 4: Агрегувана група
Додавання агрегованої групи і визначення файлів повідомлень як її підгрупи має дві вигоди:


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

Для того, щоб визначити агреговану групу, вам треба додати наступну секцію одразу після секції TEMPLATE і перед визначенням індивідуальних підгруп:

Зробивши це, ми вже близько до завершення, але є ще один крок. На цьому етапі, якщо ви перейдете до Special:Translate, ви побачите батьківську групу MyBB (і вона насправді працює!), але також підгрупи, які будуть у списку як окремі групи. :&#40;

Ось як це треба виправити. Додайте до вашого  такий рядок:



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

Якщо ви перейдете зараз на Special:Translate, ви побачите у списку тільки батьківську групу MyBB. Додатково ви побачите посилання «Show 3 subgroups»; клік по ньому покаже вам назви підгруп.

Ознайомтесь із посібником з TAGS та інших секцій, які ми не оглядали у цьому документі.

Крок 5: Очищення
YAML-файли проектів, підтримувані сайтом translatewiki.net фіксуються у репозиторії на Git.

На translatewiki.net, рядки  знаходяться, власне, у. Sandboxwiki на translatewiki.net не має файлу  file, через це ми додали усе в.