Форумы / National / Russian / Загрузка языковых файлов

русский вариант темы

dervan
#9565 08.03.2009 22:42
# Trustmaster : Не надо упускать из виду текучку. Стабильные релизы редко выходят, а работать часто приходится с тем "что есть".

Сначала подробнее про утилиту синхронизации lang-паков.

1.
Утилита синхронизации сверяет lang-файлы с эталонными, английскими. В конце каждого несинхронного lang-файла формируются несколько секций.

1а)
Секция пропусков.
В эту секцию добавляются строки на английском, которые отсутствуют в несинхронном lang-файле.

В результате пропуски в таком несинхронном lang-файле будут заполнены английскими вариантами - в соответствии с идеей, предложенной esclkm.

Для тех, кто занимается локализацией, будет дополнительное удобство - все новые строки для перевода будут расположены группой, их не надо будет искать по всему lang-файлу.

1б)
Секция несинхронных массивов.
В эту секцию переносятся массивы (или не массивы), размеры которых не соответствуют размерам массивов в английском lang-файле.

Для массивов declension нужна специальная обработка. Для их опознавания в тексте после каждого массива declension в английском lang-файле должен быть добавлен специальный комментарий:
// declension array; WARNING!!! never delete this comment
Для каждого языка в конфигурации утилиты должно быть задано количество элементов в массиве declension:
$declension_items = array(
	'en' => 2,
	'ru' => 3,
	'tr' => 1,
	...
);
Если строка в lang-файле предполагается как массив declension, но не реализована как массив, то она оставляется на месте, а в секцию несинхронных массивов добавляется комментарий с рекомендацией реализовать эту строку как массив declension. Если строка - массив declension с неправильным размером, то она перемещается в секцию несинхронных массивов.

1в)
Секция лишних строк.
В неё перемещаются все строки, которых нет в английском lang-файле.

Исключение - строки для формы конфигурации плагина, которых может не быть в английском lang-файле. Эти строки имеют вид:
$L['cfg_*'] = '*';

2.
По результатам обработки lang-паков утилита синхронизации создаёт отчёты.

2а)
Log-файл, в котором зафиксированы изменения для каждого файла. Разбит на секции по lang-пакам.

2б)
Для тех lang-паков, которые нуждаются в доработке, создаются файлы с текстами ticket'ов для внесения в track.

Теперь про возможную организацию текущей работы.

Синхронизацию lang-паков можно проводить и при подготовке к выходу нового релиза, и при накоплении критического числа изменений.

Синхронизацию делает кто-то из координаторов локально на своей копии SVN. Затем он делает comit полученных результатов, создаёт для локализаторов сообщение форуме, в котором выкладывает log-файл утилиты синхронизации, и при необходимости вносит ticket'ы в track.

Полагаю, это будет удобный и чёткий способ синхронизации lang-паков.


# Kort : Под Seditio был же такой langcompare.
Да, есть такой плагин. Но это из другой оперы - когда для каждой локализации есть переводчик, который оперативно, с помощью этого инструмента для персональной работы, делает качественную локализацию, ничего при этом не пропуская.

Но если локализация сделана неполностью, - либо погрешности в работе, либо lang-паком некому заниматься, - тогда надо делать синхронизацию с английским вариантом, как предлагает esclkm. Конечно, с этим плагином такую синхронизацию (добавить английские тексты) может сделать и человек, не знающий языка. Но это - ручная работа, к тому же получатся файлы с идущими вперемешку строками на разных языках.


# esclkm : про лишню нагрузку - если лэнг файлы будут разбиты по модулям - файлы станут небольшими.
Ключевое слово - лишняя. :) И к тому же такое латание на лету при формировании страниц не выявляет недоделки, а наоборот их затушёвывает.