Автор Тема: Утилита для восстановления собственных языковых файлов после обновлений LT  (Прочитано 11969 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн NA

  • Плагинописатель
  • Эксперт
  • ******
  • Сообщений: 906
  • Репутация +78/-20
    • Просмотр профиля
Настала пора раздел "Плагины" переименовывать в "Плагины и утилиты" *bs*


Некоторые пользователи сталкиваются с необходимостью изменить некоторые предопределенные языковые строки в LeaderTask.

Например, переименовать "Входящие" в "Руда".
Или, чтобы получить недостающие статусы за счет ненужных имеющихся - "На согласовании" вместо "Не началось", и т.д.
Или переименовать Приоритет "Без приоритета" в "Обычный"...


Способ добиться этого несложен и описан несколькими пользователями (в т.ч. и мной) и опубликован в МаХи и Справке.
Но: билды LeaderTask выходят достаточно часто (практически каждую неделю), и возникает вопрос о постоянном переписывании языковых файлов, что слегка портит радость от обновлений.

Можно продолжать использовать старые, уже переделанные языковые файлы.
Но что, если в билде добавились новые строки? Остается снова вписывать все строки вручную.

А почему бы не дать заняться этой рутинной возней программе? Которая не "запарится" и не воткнет текст в соседнюю строчку, которая не устанет сверять состояние языковых файлов хоть каждые пять минут... которая обеспечит, в конце концов, соответствие языковых файлов во всех сетевых копиях, и может запускаться автоматически по расписанию, или в скрипте сразу за обновлением.



Итак, встречайте: Пакетная замена строк в LT! То ли патчер, то ли твикер, то ли всего понемногу. *bm*

Что программа может (и делает):
- одновременно обновить ВСЕ языковые ini-файлы в папке Languages, если соответствующие секции прописаны в файле замен.
- запуститься с подробным отчетом о каждой замене (параметр /detail в командной строке)
- запуститься в скрытом режиме по скрипту или расписанию без вывода окон (параметр /nogui в командной строке)
- запомнить последний указанный путь к папке, содержащей файл LeaderTask.exe
- предупредить из скрытого режима, что
- запустить практически неограниченное количество копий одновременно (так как не пишет в свои настройки в пакетном режиме)
- открыть эту страницу, чтобы Вы могли прочитать более подробную справку, сказать автору спасибо или грязно выругаться :D

Программа исходит из того, что:
- исполняемый файл называется LeaderTask.exe
- языковые файлы лежат в подпапке Languages
- трансляции одних и тех же терминов в разных секциях одинаковы ("Status" всегда = "Статус", независимо от секции)

Чего программа не делает:
- не патчит dll и иные ресурсные и исполняемые файлы
- не любит капслокеров (набирайте параметры в нижнем регистре)
- не понимает больше одного параметра (а зачем ей два противоречащих друг другу?)
- не редактирует сама файл замен. Этот файл будет открыт в Вашем любимом текстовом редакторе (ассоциация ini по умолчанию)
- и - главное - не читает за Вас справку

Формат файла замен:
- Unicode (для совместимости с языковыми файлами LT)
- каждая секция (например, [Russian.ini]) соответствует имени разыскиваемого языкового файла (LeaderTask\Languages\Russian.ini)
- каждая строка имеет вид "Ключ" (берется нужный из любого языкового файла LT), разделитель (знак "=") и "Значение" (вписываете желаемое)


Пример:
Цитировать
[Russian.ini]
PlanningIn=Руда
About=Кому сказать спасибо?
Status_NotBegin=На согласовании


Алгоритм поиска и замены:
1. Перебираются языковые секции файла замен. Пустые игнорируются.
2. Оставшиеся секции сверяются с соответствующими языковые файлами LT.
3. В каждом таком файле перебираются все секции, и в каждой секции перебираются ключи. Отсутствующие в файле замен игнорируются.
4. Имеющиеся в файле замен ключи сравниваются на идентичность. Одинаковые значения игнорируются.
5. Вписанные в файл замен, но не найденные в языковых файлах строки также игнорируются.
6. Оставшееся обновляется из файла замен в языковой файл LT.


Что входит в тестовый дистрибутив:
- собственно exe-файл
- демонстрационный файл замен
- полосочка, выдранная из splash-скрина LeaderTask для придания знакомого оформления  (ILoveLeaderTask)

Файл настроек создастся после того, как Вы укажете программе путь к папке, содержащей LeaderTask.exe

Интерфейс программы прост и понятен, и ведет пользователя по шагам к успеху буквально за ручку.

За трансляцию демо-текста для секции [Ukrainian.ini] отдельное спасибо yusl  *az*

Как говорится, прошу тестировать, любить и пользовать  8)
« Последнее редактирование: 02 Июня 2010, 04:05:28 от NA »
Приглашаю обсудить мои мечты о Контактах.

Gantt... как много в этом слове. Оч ждется.

"Анонимному" минусишке: чем больше неудачников меня ненавидит, тем более правильно я живу. Твои минусы исподтишка - это настоящие плюсы мне. Спасибо!

Оффлайн NA

  • Плагинописатель
  • Эксперт
  • ******
  • Сообщений: 906
  • Репутация +78/-20
    • Просмотр профиля
Цитата из п. 55 МаХи:

Цитировать
55. Для тех, кому очень хочется поменять название папки "Входящие", tarabas предлагает вот такое решение:
http://forum.leadertask.ru/index.php?topic=4706.msg32447#msg32447
Обязательно почитайте пояснения zitz!
Про переименование статусов рассказывает NA:
http://forum.leadertask.ru/index.php/topic,4090.msg36287.html#msg36287

Строки для замены статусов на собственные (включено в демо-файл дистрибутива):
Цитировать
Status_Cancelled=Отменено
Status_Completed=Завершено
Status_InWork=В работе
Status_Note=Заметка
Status_NotBegin=Не началось
Status_Paused=Отложено
Status_Ready=Готово к сдаче

Строка для переименования папки "Входящие" (включено в демо-файл дистрибутива):
Цитировать
PlanningIn=Входящие
Приглашаю обсудить мои мечты о Контактах.

Gantt... как много в этом слове. Оч ждется.

"Анонимному" минусишке: чем больше неудачников меня ненавидит, тем более правильно я живу. Твои минусы исподтишка - это настоящие плюсы мне. Спасибо!

Оффлайн grinspan

  • Новичок
  • *
  • Сообщений: 20
  • Репутация +3/-2
    • Просмотр профиля
У меня путь к LT: "V:\GRINSPAN\LT"

При указании пути в этой утилите к LT, она выдает сообщение об ошибке:

- "Для обновления строк необходимо выбрать папку, в которой находится LeaderTask.exe Текущая настройка сброшена (ранее сохраненный путь к папке не изменился)"




Оффлайн yusl

  • Эксперт
  • ******
  • Сообщений: 749
  • Репутация +63/-2
  • Высшее звено в пищевой цепочке-это я
    • Просмотр профиля
NA, сегодня в процессе попытки обновить файл украинского языка наткнулся на интересный момент:
При появлении в новой версии ЛТ дополнительных надписей (напр. главное меню, пункт для плагинов Tools) в английском языковом файле дополнительные строчки появились, а вот в украинском - нет. (http://forum.leadertask.ru/index.php/topic,3337.msg36442.html#msg36442)  Потому желательно, чтобы ваша утилита парсила языковые файлы на тему появления новых строк во всех секциях.
Не надо меня критиковать. Просто сделайте это лучше меня.
Мои ожидания от ЛТ 7.х http://forum.leadertask.ru/index.php/topic,5733.msg39091.html#msg39091

Оффлайн NA

  • Плагинописатель
  • Эксперт
  • ******
  • Сообщений: 906
  • Репутация +78/-20
    • Просмотр профиля
grinspan
создал SUBSTом диск V, в нем папку \GRINSPAN\LT\ - все работает. Добавлю диагностические данные в это окно, попробуйте еще раз.

Оказывается, LT пишет в реестр папку, откуда производился последний запуск (я исходил из того, что портабельные версии следов в системе не оставляют), так что в следующем билде путь будет инициализироваться из реестра.

Для работы в режиме скрипта добавлю папку как второй параметр строки.


yusl
спорный вопрос. zitz предлагает вообще сделать развернутый локализатор. Но это общая проблема отставания локализаций в билдах LT, к твику имеет косвенное отношение. Для этой цели имхо есть готовые специализированные локализаторы... в общем, я пока думаю над насущностью.

Если я поменяю алгоритм с "добавлять, только если есть такой же ключ" на "добавлять по-любому" - устроит?
Приглашаю обсудить мои мечты о Контактах.

Gantt... как много в этом слове. Оч ждется.

"Анонимному" минусишке: чем больше неудачников меня ненавидит, тем более правильно я живу. Твои минусы исподтишка - это настоящие плюсы мне. Спасибо!

Оффлайн yusl

  • Эксперт
  • ******
  • Сообщений: 749
  • Репутация +63/-2
  • Высшее звено в пищевой цепочке-это я
    • Просмотр профиля
Я до "устаканивания" утилиты все равно руками буду править. Так что для временных решений мое мнение несущественно.  Хотя, если локализатор предназначен, как сказано в заголовке, в первую очередь для правки язіковіх файлов после обновлений, то он обязан искать и сообщать о появлении новых строчек. Ибо иначе он будет годиться лишь для английского и русского языков.
Не надо меня критиковать. Просто сделайте это лучше меня.
Мои ожидания от ЛТ 7.х http://forum.leadertask.ru/index.php/topic,5733.msg39091.html#msg39091

Оффлайн NA

  • Плагинописатель
  • Эксперт
  • ******
  • Сообщений: 906
  • Репутация +78/-20
    • Просмотр профиля
yusl
а чего в ней устаканивать? :) Вот она, простая, как три рубля.

Если будет большой локализатор - он будет писаться отдельно. А это именно lang_tweaker, скажем так.

Повторю свой вопрос: сейчас проблема, как я понимаю, в том, что в русский, украинский и прочие файлы не попадают строки, присутствующие только в English-версии.

Если я добавлю проверку на существование строки в файле English.ini и добавление ее в любой язык (при наличии в English) - такое решение устроит?

Или еще проще - втупую "добавлять, не глядя".
Мало ли - вдруг однажды Russian.ini окажется более подробным, чем English.ini ?
Приглашаю обсудить мои мечты о Контактах.

Gantt... как много в этом слове. Оч ждется.

"Анонимному" минусишке: чем больше неудачников меня ненавидит, тем более правильно я живу. Твои минусы исподтишка - это настоящие плюсы мне. Спасибо!

Оффлайн yusl

  • Эксперт
  • ******
  • Сообщений: 749
  • Репутация +63/-2
  • Высшее звено в пищевой цепочке-это я
    • Просмотр профиля
Файлы Инглыш и Рашын я сверял, они вроде одинаковые и самые полные. Но, поскольку, непереведенные слова выскочили на англицком, то, наверное, ориентироваться надо все-таки на инглиш.
И вариант, добавить строку, если есть в инглише, меня устраивает. А запрос "Ввести перевод" там будет?

А  алгоритм действия "втупую" - я не совсем понимаю, как это и чем отличается от проверки наличия новых строк
Не надо меня критиковать. Просто сделайте это лучше меня.
Мои ожидания от ЛТ 7.х http://forum.leadertask.ru/index.php/topic,5733.msg39091.html#msg39091

Оффлайн NA

  • Плагинописатель
  • Эксперт
  • ******
  • Сообщений: 906
  • Репутация +78/-20
    • Просмотр профиля
yusl
впереди всех идет English, все остальные "отстают" больше или меньше, информация от zitz. Поэтом если опираться - то на английский (т.к. русский тоже может запаздывать).

Отличия:
"опираясь на English" - вставляются только те параметры, что есть в английском файле.
"втупую" - вставляются любые, оказавшиеся в файле замен, даже явно несуществующие.

Плюс второго варианта:
- если базовым файлом станет русский, а не английский - не придется перестраивать программу.

Минус второго варианта:
- есть шанс засадить в языковой файл "левую" строчку (опечатку). Что, впрочем, не страшно.
Приглашаю обсудить мои мечты о Контактах.

Gantt... как много в этом слове. Оч ждется.

"Анонимному" минусишке: чем больше неудачников меня ненавидит, тем более правильно я живу. Твои минусы исподтишка - это настоящие плюсы мне. Спасибо!

Оффлайн yusl

  • Эксперт
  • ******
  • Сообщений: 749
  • Репутация +63/-2
  • Высшее звено в пищевой цепочке-это я
    • Просмотр профиля
Не знаеш, который лучше - делай оба, выбор за пользователем :)

А что з запросом на перевод новых строчек?
Не надо меня критиковать. Просто сделайте это лучше меня.
Мои ожидания от ЛТ 7.х http://forum.leadertask.ru/index.php/topic,5733.msg39091.html#msg39091

Оффлайн NA

  • Плагинописатель
  • Эксперт
  • ******
  • Сообщений: 906
  • Репутация +78/-20
    • Просмотр профиля
yusl
пока не знаю, мне все еще кажется, что транслятор - совсем другой проект :)
Приглашаю обсудить мои мечты о Контактах.

Gantt... как много в этом слове. Оч ждется.

"Анонимному" минусишке: чем больше неудачников меня ненавидит, тем более правильно я живу. Твои минусы исподтишка - это настоящие плюсы мне. Спасибо!

Оффлайн NA

  • Плагинописатель
  • Эксперт
  • ******
  • Сообщений: 906
  • Репутация +78/-20
    • Просмотр профиля
Поразмышлял, как "примирить" две эти концепции.
Если утяжелять до полноценного "транслятора-полуавтомата", будет вот что:

   1. Путь к LT больше не хранится. Получаем папку последнего запуска LT из реестра при каждом старте.
   2. Если в реестре пусто или папка ложная - диалог с просьбой пролистать.
   3. Если в диалоге папка указана неверно или нажат Cancel - закрываем лавочку.
   4. Открываем файл English.ini из папки LT.
   5. Заполняем из него все недостающие строки во всех языковых секциях.
   6. Ранее измененные (и другие существующие) строки остаются неизмененными.
   7. Открываем файл пользователю на редактирование.
   8. Пользователь видит непереведенные строки и правит как ему надо.
   9. Жмет кнопку "Я хочу" - и все языковые файлы обновляются.


Минусы:
   1. Если будет изменена официальная терминология в локализациях - пользователь об этом все равно не узнает. Как программа отличит изменение локализации пользователем от изменения локализации разработчиком? Никак.
   2. Зато придется хранить не только "избранные", но все подряд строки для каждого языка.
   3. Больше строк - больше шансов допустить ошибку.

Плюсы:
   1. Автоматически добавляются упущенные строки во все трансляции (правда, надо долго листать все их выискивать).
   2. ? пока не вижу. Минусов явно больше.



yusl
Запрос на добавление перевода более интересен, и его можно вписать и в текущую концепцию, что совсем хорошо.
Но все равно надо сверять не менее трех копий файлов одновременно:


   1. Строку из English.ini поискать в обновляемом Some.ini
   2. Если есть - переход к следующей. Если нет - то поискать в файле замен.
   3. Если есть - переход к следующей. Если нет и там - запросить ее добавление в секцию [Some.ini]


И уже после синхронизации, внесения и правки новых строк - обновление.

Быстродействие, конечно, просядет. Но можно задействовать синхронизацию только в графическом режиме.

Чтобы было поменьше диалоговых окон - удалить перед синхронизацией из папки Languages все ненужное (только в первой копии LT для настройки, а при пакетной замене в остальных копиях будет уже по барабану).

Можно пристроить "авто-прибивалку" ненужных языков и в сам твикер, раз пошла такая пьянка. Заодно почти 2 мегабайта на флэшке сэкономится.

В итоге получаем индивидуальный "транслятор-полуавтомат"+"твикер-автомат" - и по-прежнему легкий, работающий с минимумом строк.


Пакетный режим: только обновление из файла замен в папку, указанную в первом и единственном параметре (взамен упраздненного избыточного /nogui), это решено окончательно. Если папка "левая" - сообщение об ошибке и вылет.

В качестве первого параметра допускается также /debug (взамен /detail) - обычный (не пакетный) режим, но больше сообщений о событиях и ошибках.



Мнения?
Приглашаю обсудить мои мечты о Контактах.

Gantt... как много в этом слове. Оч ждется.

"Анонимному" минусишке: чем больше неудачников меня ненавидит, тем более правильно я живу. Твои минусы исподтишка - это настоящие плюсы мне. Спасибо!

Оффлайн NA

  • Плагинописатель
  • Эксперт
  • ******
  • Сообщений: 906
  • Репутация +78/-20
    • Просмотр профиля
А дабы пуще послужило делу всенародной трансляризации всея Руси, можно дополнительно генерить файлики
diffs.Language.ini - где будут сохраняться только свежедобавленные при синхронизации строки.

Сей файлик можно выложить на форум для скорейшего внедрения в ближайшем билде.

P.S. файл из шапки пока удалил.
Приглашаю обсудить мои мечты о Контактах.

Gantt... как много в этом слове. Оч ждется.

"Анонимному" минусишке: чем больше неудачников меня ненавидит, тем более правильно я живу. Твои минусы исподтишка - это настоящие плюсы мне. Спасибо!

Оффлайн yusl

  • Эксперт
  • ******
  • Сообщений: 749
  • Репутация +63/-2
  • Высшее звено в пищевой цепочке-это я
    • Просмотр профиля
Кажется мне, что есть смысл подумать о разделении задачи на две:
1) сделать СЕЙЧАС маленькую и быструю "Утилита для восстановления собственных языковых файлов после обновлений ", которая бы восстанавливала после обновления "некоторые предопределенные языковые строки в LeaderTask." Этим некоторым пользователям она действительно нужна уже сейчас
2) Делать полноценный твикер, котрый бы настраивал все что можно, в т.ч. п.1, а кроме него - все то, что было описано. Возможно, что бы в нем можно было подставлять сеты иконок. Возможно, он позволял бы праить какие-то параметры ини-файла....
Не надо меня критиковать. Просто сделайте это лучше меня.
Мои ожидания от ЛТ 7.х http://forum.leadertask.ru/index.php/topic,5733.msg39091.html#msg39091

Оффлайн NikaS

  • Новичок
  • *
  • Сообщений: 14
  • Репутация +0/-0
    • Просмотр профиля
А где же ссылка на Утилиту для восстановления собственных языковых файлов после обновлений LT ?