Latest post of the previous page:
На мой взгляд, незачем. Простота - залог здоровья.Настройка под себя текстовых строк из LNG-файла
- HaRT
- Moderator
- Posts: 10702
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 212 times
- Been thanked: 342 times
Настройка под себя текстовых строк из LNG-файла
Но тогда надо хотя бы, чтобы файл корректур искался в директории текущего профиля Фара.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- NightRoman
- Posts: 6173
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Настройка под себя текстовых строк из LNG-файла
Формально это то же самое, что просто добавить формат ID="Text", но искаробочные переводы оставить в старом формате.2useven10 wrote:Работу фар с локализацией можно вообще оставить почти без изменений.
Загрузка .lng и использование языковых сообщений остаётся без изменений.
Надо чуть допилить lng транслятор, чтобы делал не только enum, но и массив строк идентификаторов.
Эти идентификаторы нужны только на момент загрузки 'модификаторов', память - не больше 20к, скорость не изменится.
Базовые языковые файлы без изменений. Надо только дописать загрузку модификаций (если они есть).
Для них естественный формат ID="Text". Имена можно брать производными от языкового файла - FarRus.lng.mod
Проблема в том, что пользователю это усложняет жизнь, а не упрощает.
Как сейчас: копирую искаробочный 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 под новым именем, меняю нужные строки, всё работает всегда.
Настройка под себя текстовых строк из LNG-файла
В искаробочные переводы ID можно ставить транслятором, как комментарий (я уже приводил пример).
Пользователь пользуется им как справочником, прописывает только нужные ему строки (это удобнее)
в кастомный файл в формате ID="Text" и это работает всегда (формат можно принимать и как у искаробочного,
но комментарий //[ID] будет обязательным).
Пользователь пользуется им как справочником, прописывает только нужные ему строки (это удобнее)
в кастомный файл в формате ID="Text" и это работает всегда (формат можно принимать и как у искаробочного,
но комментарий //[ID] будет обязательным).
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Настройка под себя текстовых строк из LNG-файла
Скорость при любом формате будет достаточной.
Ну будет строка выниматься условно не за 1 такт (сместить указатель на N), а за 500 (посчитать хеш и найти его в хешмапе).
Чтобы нарисовать типичные панели, сколько нам этих строк надо получить? Штук 30? С такими объемами их можно держать в SQLite, никто не заметит.
Ну будет строка выниматься условно не за 1 такт (сместить указатель на N), а за 500 (посчитать хеш и найти его в хешмапе).
Чтобы нарисовать типичные панели, сколько нам этих строк надо получить? Штук 30? С такими объемами их можно держать в SQLite, никто не заметит.
- abelenki
- Posts: 499
- Joined: Thu 02 Jul, 2009 07:39
- Location: Perm, Russia
- Has thanked: 168 times
- Been thanked: 23 times
- Contact:
Настройка под себя текстовых строк из LNG-файла
в 4462 обновился языковой файл, и Far перестал запускаться с модифицированным FarEng.lng. соответственно, пришлось перенести изменённые строчки в новый файл.
в принципе, ничего сложного или времязатратного.
- HaRT
- Moderator
- Posts: 10702
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 212 times
- Been thanked: 342 times
Настройка под себя текстовых строк из LNG-файла
Для облегчения поиска инфы заинтересованными:
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
Настройка под себя текстовых строк из LNG-файла
Форматный вывод в фар со времени 4522 изменился.
Поэтому вместо
Поэтому вместо
%1
%2
%3
теперь надо использовать {0}
{1}
{2}
Last edited by 2useven10 on Fri 23 Jun, 2017 13:12, edited 3 times in total.
- John Doe
- Бюрократ
- Posts: 13746
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 71 times
- Been thanked: 415 times
- Contact:
Настройка под себя текстовых строк из LNG-файла
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.