Настройка под себя текстовых строк из LNG-файла

Хотите говорить о Far и не знаете, куда обратиться?
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Настройка под себя текстовых строк из LNG-файла

Post by HaRT »

Latest post of the previous page:

2useven10 wrote: Простота - залог здоровья
Но тогда надо хотя бы, чтобы файл корректур искался в директории текущего профиля Фара.
Фар есть инструмент, а не нянька. © 2009 DrKnS
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Настройка под себя текстовых строк из LNG-файла

Post by 2useven10 »

Да. Вполне разумно.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Настройка под себя текстовых строк из LNG-файла

Post by NightRoman »

DrKnS wrote:
NightRoman wrote:комприляцию их в бинарный формат
Мы тут вроде о том, как упростить жизнь любителям (и создателям) персональных переводов, а не наоборот, не?
Да, пожалуй, немного отвлекся от этого момента.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Настройка под себя текстовых строк из LNG-файла

Post by DrKnS »

2useven10 wrote:Работу фар с локализацией можно вообще оставить почти без изменений.
Загрузка .lng и использование языковых сообщений остаётся без изменений.
Надо чуть допилить lng транслятор, чтобы делал не только enum, но и массив строк идентификаторов.
Эти идентификаторы нужны только на момент загрузки 'модификаторов', память - не больше 20к, скорость не изменится.
Базовые языковые файлы без изменений. Надо только дописать загрузку модификаций (если они есть).
Для них естественный формат ID="Text". Имена можно брать производными от языкового файла - FarRus.lng.mod
Формально это то же самое, что просто добавить формат ID="Text", но искаробочные переводы оставить в старом формате.

Проблема в том, что пользователю это усложняет жизнь, а не упрощает.

Как сейчас: копирую искаробочный lng под новым именем, меняю нужные строки, всё работает до первого обновления.

Как получится: Ищу в искаробочном lng нужную мне строку и... э... А где мне теперь взять ID?
Если список этих ID лежит внутри far.exe - проще сразу плюнуть.
Если он лежит где-то снаружи, в формате, похожем на bootstrap\lang.inc, то как быстро найти там нужный? Логично предположить, что номер в этом списке соответствует номеру строки в lng, да? Увы, номера строк в lng не соответствуют индексам, т. к. в lng есть шапка, каменты и пустые строки для смысловой группировки. Найти примерное место и догадаться, что "Show &total copy progress indicator" - это MConfigShowTotal? Или это MConfigCopyTotal? Повторить N раз. Не, проще плюнуть.
Т. е. надо чтобы этот список ID содержал такие же каменты и пустые строки, иначе это издевательство.
Кроме того, из искаробочного lng никак не следует, что существует ещё и формат ID="Text". Люди будут править их как раньше и иметь те же грабли при обновлении. Можно, конечно, написать подробный мануал "как правильно писать свои модификаторы", но кто их читает?

Как должно быть в идеале: копирую искаробочный lng под новым именем, меняю нужные строки, всё работает всегда.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Настройка под себя текстовых строк из LNG-файла

Post by 2useven10 »

В искаробочные переводы ID можно ставить транслятором, как комментарий (я уже приводил пример).
Пользователь пользуется им как справочником, прописывает только нужные ему строки (это удобнее)
в кастомный файл в формате ID="Text" и это работает всегда (формат можно принимать и как у искаробочного,
но комментарий //[ID] будет обязательным).
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Настройка под себя текстовых строк из LNG-файла

Post by 2useven10 »

Вообще можно и с новым форматом сохранить скорость нынешнего.
Разные форматы подчеркивают, что родной файл лучше не трогать (он будет обновляться).
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Настройка под себя текстовых строк из LNG-файла

Post by DrKnS »

Скорость при любом формате будет достаточной.
Ну будет строка выниматься условно не за 1 такт (сместить указатель на N), а за 500 (посчитать хеш и найти его в хешмапе).
Чтобы нарисовать типичные панели, сколько нам этих строк надо получить? Штук 30? С такими объемами их можно держать в SQLite, никто не заметит.
User avatar
abelenki
Posts: 501
Joined: Thu 02 Jul, 2009 07:39
Location: Perm, Russia
Has thanked: 174 times
Been thanked: 23 times
Contact:

Настройка под себя текстовых строк из LNG-файла

Post by abelenki »

Yegor wrote:но есть ли гарантии, что завтра после очередного рефакторинга/удаления ф-ть (e.g. tree), стрОки в новом lng файле "не поедут"?
в 4462 обновился языковой файл, и Far перестал запускаться с модифицированным FarEng.lng. соответственно, пришлось перенести изменённые строчки в новый файл.

в принципе, ничего сложного или времязатратного.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Настройка под себя текстовых строк из LNG-файла

Post by HaRT »

Для облегчения поиска инфы заинтересованными:
changelog wrote:

Code: Select all

w17 27.01.2016 23:06:51 +0300 - build 4522

1. Экспериментально: кастомизация языковых файлов без редактирования генерируемых 'родных' файлов .lng

   Чтобы работало надо:
   1) создать полные версии языковых файлов обновлённым генератором lng.generator.exe, в новой сборке должны быть.
   2) создать свой файл с изменениями для нужных языков

   Имя файла = <Оригинал>.custom, например FarRus.lng.custom, FarEng.lng.custom
   Файл ищется в %FARHOME% и %FARPROFILE% (можно создать 2 файла)

   Файл должен содержать строки вида:
   MessageId = "Modified Text"
   например:
   MListFileSize = " %1 bytes in %2 files, %3 folders "
   Нужный MessageId можно найти в оригинальном файле, там это выглядит так:
   //[MessageId]
   "Original text"
   //[MListFileSize]
   " Bytes: %1, files: %2, folders: %3 "
   Такой формат также допустим в .lng.custom файлах.
   //[MListFileSize]
   " %1 bytes in %2 files, %3 folders "
Фар есть инструмент, а не нянька. © 2009 DrKnS
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Настройка под себя текстовых строк из LNG-файла

Post by 2useven10 »

Форматный вывод в фар со времени 4522 изменился.
Поэтому вместо %1 %2 %3 теперь надо использовать {0} {1} {2}
Last edited by 2useven10 on Fri 23 Jun, 2017 13:12, edited 3 times in total.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Настройка под себя текстовых строк из LNG-файла

Post by John Doe »

Code: Select all

drkns 30.09.2018 02:13:21 +0300 - build 5275

1. Lng MListFileSize может содержать replacement field "{3}", куда будет помещена сумма файлов и папок.
   Заменив строку на что-то типа "{0} bytes in {3} files", можно получить почти такую же информацию о выделенных файлах, как было до 4442.
Post Reply

Return to “Обсуждение Far Manager”