Уважаемые гости и пользователи форума!
Чтобы видеть ссылки на форуме - надо зарегистрироваться и иметь 1 пост на форуме. Для этого есть КУРИЛКА и там тема Здрасти.

Скрипт для облегчения локализации ISPConfig 3.1

Настройка, обслуживание, эксплуатация, управление панелью ISPConfig 3. А так же обсуждение установки и оптимизация сайта под ISPConfig 3

Модератор: kulia

Правила форума
Условием использования нашего форума, является соблюдение настоящих Правил форума.


Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам, а вы рискуете получить предупреждение.
Аватара пользователя
SinglWolf
Контактная информация:
Откуда: Башкирия
Сообщения: 2618
Зарегистрирован: 23 янв 2012, 22:11

Скрипт для облегчения локализации ISPConfig 3.1

19 янв 2017, 19:58

Короче... немного лирики :-D
Слепил давеча на коленке скриптик для облегчения перевода много-много одинаковых фраз в языковых файлах ISPConfig 3.1.
Первая версия, потом вторая, третья.... И понеслась №%*?: по кочкам :-D ...
Пора выкладывать на всеобщий суд.

Описание (что умеет):
0. Имеет защиту от "дурачка" :-D
1. Все сообщения скрипта на английском языке. Их не много и они простые.
2. Делает бекап языковых файлов (мало ли... всякое бывает :-) )
3. Исправляет (приводит к единому виду) идентификаторы в языковых файлах (по простому, заменяет двойные кавычки на одинарные)
4. Создаёт список языковых файлов с абсолютными путями
5. Автоматически создаёт шаблон для замены одинаковых фраз. Естественно, что автоматически невозможно сделать идеальный шаблон. Придётся поработать ручками.
6. Не будет работать, если есть хоть 1 дубль идентификаторов в шаблоне.

7. Проверяет целостность шаблона (запустить с параметром test)
  • Формат шаблона такой (строка дана для примера):

    Код: Выделить всё

    'Add group'~"Добавить группу"#
    где
    'Add group' - идентификатор. Обёртка в одинарные кавычки обязательна! (я не зря привёл этот пример, ибо, да - встречаются идентификаторы с пробелами. Из-за этого пришлось изобретать разделитель. См. ниже)
    ~ - разделитель, маркер конца идентификатора.
    "Добавить группу" - собственно это и есть фраза для замены. Может быть как в одинарных кавычках, так и в двойных. Соблюдайте парность и экранировку символов.
    # - маркер конца строки. Не спрашивайте зачем. Много текста. Но без него работать не будет, предупреждаю. :-D
  • Засада получившегося шаблона заключается в следующем. Там есть(будут) много одинаковых идентификаторов, например, таких:

    Код: Выделить всё

    'active_txt'~"Active"#
    'active_txt'~"Активен?"#
    'active_txt'~"Активна?"#
    'active_txt'~"Активные"#
    Смысл одинаковый. Нужно оставить только одну строку с правильным переводом (если нет правильного перевода - исправить\перевести), а остальные с таким же идентификатором удалить. Иначе в языковые файлы будет подставлена самая последняя строка по списку скрипт версии выше 0.4 отакажется работать.
  • Есть ещё круче засада, например такая:
    ► Показать
    По здравому смыслу такие строки обязательно нужно безжалостно вырезать, иначе фигня получится с переводом :'(
    Зачем так разрабы сделали, непонятно. %)
    Строки с непонятными содержимым лучше удалить.
    Дублей идентификаторов быть не должно, разумеется. :-)
Уф.Вроде всё.
Ограничения (куда же без них...)
0. Скрипт для Linux (Debian, Ubuntu, etc...)
1. В пути к скрипту не должно быть пробелов
2. Запускать лучше под рутом, ибо не проверял под пользователем. :-[
3. Перед запуском скрипта отредактируйте, если нужно, значения переменных (язык для перевода, путь к языковым файлам и выключить режим отладки)
Параметры запуска
Скачайте аттач и распакуйте в удобное место и зайдите в каталог скрипта

Код: Выделить всё

cd replacer
Далее можно запустить без параметров:

Код: Выделить всё

./replacer.sh
Скрипт сообщит следующее (например):

Код: Выделить всё

Usage: /root/replacer/replacer.sh {prepare|replace|restore|check|test}
The parsing of the template, for example:
'Website quota (Harddisk)'~"Website quota (Harddisk)"#
|          IDs           | | String for replace     |
 "~" - the separator between ID and String for replace
 "#" - the marker of the end of the row
./replacer.sh prepare - выполняет пункты 2-5 описания
./replacer.sh replace - берёт заготовки из шаблона и... работает, короче. :-D По умолчанию включен режим отладки, в котором просто выводит данные для замены на дисплей. Пример:

Код: Выделить всё

DEBUG MODE
ID: '1001' => Value: "Имя пользователя или пароль пусты."
DEBUG MODE
ID: '1002' => Value: "Имя пользователя или пароль неправильны."
display IDs and substitution strings completed.
./replacer.sh restore - восстанавливает языковые файлы из бекапа. Приводит языковые файлы в исходное состояние. Это бывает нужно, если вы накосячили (строк много, ошибиться легко) в файле шаблонов и панель загнулась.
+Версия 0.5
./replacer.sh check - проверяет дубли идентификаторов в шаблоне. (при запуске скрипта с параметром replace, проверка на дубли делается автоматом.)
+Версия 0.6
./replacer.sh test - проверяет шаблон на ошибки средствами PHP!!! Если шаблон в порядке, то на дисплее появится аккуратная картинка, например, такая (для шаблона на 6 строк):

Код: Выделить всё

Creates a list of IDs.
Please wait...
Find duplicate IDs.
Duplicates IDs not found.
The template file is ready to go!
Array
(
    [1001] => Имя пользователя или пароль пусты.
    [1002] => Имя пользователя или пароль неправильны.
    [10 - highest] => 10 - highest
    [1 - lowest] => 1 - lowest
    [5 - medium] => 5 - medium
    [About ISPConfig] => Об ISPConfig
)
Вроде всё написал. Если что - спрашивайте, не стесняйтесь.
Удачного перевода! *DRINK*
Вложения
replacer_v06.tar.gz
Версия 0.6
(2.4 КБ) 36 скачиваний
replacer_v05.tar.gz
Версия 0.5
(2.26 КБ) 36 скачиваний
replacer.zip
Версия 0.4
(2.18 КБ) 34 скачивания
Аватара пользователя
kulia
Откуда: Москва
Сообщения: 147
Зарегистрирован: 28 май 2014, 14:59

20 янв 2017, 00:49

Запустил, прогнал последовательно. Скрипт отработал без запинок, ничего не спрашивал. В терминале выдавалась замена фраз (очень много). Но английские фразы так и оставались :-)
Дальше то какие действия по локализации? Из панели править или из терминала?
Создал на Линукс-форуме тему "Установка Internet Explorer под Убунту".
Тему удалили через 4 минуты, выдали бан на 10 дней...
Аватара пользователя
SinglWolf
Контактная информация:
Откуда: Башкирия
Сообщения: 2618
Зарегистрирован: 23 янв 2012, 22:11

20 янв 2017, 09:08

kulia писал(а):Но английские фразы так и оставались
В скрипте 0.4 была ошибка, перезалил :-[
______________
Для тех, кто не читает инструкции в танке повторяю:
Скрипт по умолчанию ничего не заменяет! Он в режиме DEBUG MODE, о чём, собственно, честно сообщает.
kulia писал(а):Дальше то какие действия по локализации?
Для перевода в режим реальной замены нужно поменять значение переменной DEBUG с 1 на 0 путём редактирования файла самого скрипта в любом текстовом редакторе, например:

Код: Выделить всё

nano replacer.sh
Привожу кусок кода

Код: Выделить всё

# DEBUG="0" - real replace strings in the translation files
# DEBUG="1" - only display IDs and substitution strings
DEBUG="1"
#
translate_lang="ru"
#
path_to_translate="/usr/local/ispconfig/"
#
name_template="template_for_placeholders.txt"
Далее нужно привести в порядок шаблон фраз! Тоже, путём редактирования файла, по умолчанию, template_for_placeholders.txt, он находится в корне каталога скрипта.
Кстати, работы по приведению шаблона в порядок, вам обеспечено не на один вечер :-D
kulia писал(а):Из панели править или из терминала?
Естественно, что из терминала. Можно удалённо подключиться к серверу, чтобы править шаблон в любимом текстовом редакторе. Кодировка шаблона UTF-8


Выкладываю свежую версию 0.5. Скрипт настолько поумнел, что не даст вам сделать замену фраз если в шаблоне для замены есть два одинаковых идентификатора. :-D
Шапку темы обновил.


Очередная версия 0.6 обрела функцию проверки шаблона средствами PHP. См. описание в шапке. \m/

Вернуться в «ISPConfig 3»