Переклад рядків, в Drupal 7

23.09.2017

Зображення видалено.
Одна з переваг Друпал це переклад рядків. Коли рядок "Home" перекласти в одному з модулів, то цей рядок вже буде перекладений в усіх модулях вашого сайту і вам не потрібно робити переклад ще раз. З одного боку це плюс системи, а з іншого боку Друпал не знає і не піклується про те що в цього слова можуть бути інші значення, особливо це стосується коротких фраз та окремих слів. На жаль Друпал не в змозі перекладати такі терміни по різному, це все було до появи Друпал 7.

Давайте візьмемо простий приклад: "View". У цього слова багато різних значень залежно від контексту, це може бути "Який гарний вигляд з вікна" або "Натисніть сюди щоб подивитися цей пост". Один з прикладів у ядрі Друпал це "May". Місяця можуть мати довгі і короткі назви, окрім місяця травня, для якого немає різниці в повному та скороченому назві.

Drupal 7 вводить опис рядка, наприклад, для "May" додається "Long month name", тепер ми точно знаємо як переводити цей рядок.
У коді це буде виглядати так
$long_may = t('May', array(), array('context' => 'Long month name'));

Докладніше можна прочитати на сторінці API для t() (цей синтаксис може бути використаний з іншими функціями локалізації), але загальна концепція дуже проста: ви описуєте контекст рядка який використовується. Контекст повинен використовуватися коли сам рядок настільки короткий що може мати кілька значень або в деяких інших випадках.

Тепер розробникам потрібно ввести контексти в свої модулі для полегшення перекладу. Тільки декілька розробників модулів почали використовувати переклад модулів на нове ядро, але не всі з них правильно використовують API. Хороша новина в тому, що Hilde Austlid (zirvap з норвезької команди) почала відстежувати питання пов'язані зі "контекстом рядка" і позначати їх, тому ми можемо відстежувати питання в різних проектах.

Сподіваюся контекст для рядків буде відмінним способом уникнення конфліктів коли короткі рядки не можна перекласти по різному. Потрібно зробити все можливе що б використовувати його правильно і не зловживати використанням цієї функції. Розробку керівних принципів, коли використовувати контекст рядків ще належить зробити.