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

Хотите говорить о Far и не знаете, куда обратиться?
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

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

Post by 2useven10 »

DrKnS wrote: Starting from 4446 you can amend or reorder those as you wish in lng files.
It'll be useful only if we'll support custom user .lng files to override required strings.
Last edited by 2useven10 on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Добавлена ссылка на исходную тему
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 »

2useven10 wrote:It'll be useful only if we'll support custom user .lng files to override required strings.
у меня при установке Far через скрипт, штатный FarEng.lng заменяется на исправленный. вполне удобно.
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Число папок в текущей панели

Post by 2useven10 »

Далеко не все пользователи на такое способны.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Число папок в текущей панели

Post by HaRT »

2useven10 wrote: It'll be useful only if we'll support custom user .lng files to override required strings
Это было бы очень удобным способом подстройки.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Число папок в текущей панели

Post by Yegor »

Немного не в тему, но иметь свой кастомный lng - это хорошо конечно, но есть ли гарантии, что завтра после очередного рефакторинга/удаления ф-ть (e.g. tree), стрОки в новом lng файле "не поедут"? (если бы формат был Key=Value, тогда другой разговор)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
abelenki
Posts: 501
Joined: Thu 02 Jul, 2009 07:39
Location: Perm, Russia
Has thanked: 174 times
Been thanked: 23 times
Contact:

Число папок в текущей панели

Post by abelenki »

Yegor wrote: но есть ли гарантии, что завтра после очередного рефакторинга/удаления ф-ть (e.g. tree), стрОки в новом lng файле "не поедут"?
как "поедут", copy из кастомного .lng две строки и paste в новый. ;)
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Число папок в текущей панели

Post by 2useven10 »

Yegor wrote:Немного не в тему, но иметь свой кастомный lng - это хорошо конечно, но есть ли гарантии, что завтра после очередного рефакторинга/удаления ф-ть (e.g. tree), стрОки в новом lng файле "не поедут"? (если бы формат был Key=Value, тогда другой разговор)
Без изменений в работе с .lng файлами проблему не решить.
Но, например, вполне можно хранить в них информацию об исходных идентификаторах строк (немного увелив размер языковых файлов):

Code: Select all

//[MYes]
"Да"
//[MNo]
"Нет"
//[MOk]
"OK"
В кастомных файлах тогда можно будет указывать только изменяемые строки:

Code: Select all

//[MYes]
"Несомненно"
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 »

Вступление, если кто вдруг не в курсе.
Сейчас lng-файл это тупо список строк. Строки берутся тупо по номеру. Т.е. из кода обращение идёт по индексу, замаскированному именованными константами.
Это просто, быстро и компактно. Для 1996 года - очень уместное решение.
Однако, у него есть фатальный недостаток: при любом изменении индексов (разработчики добавили или удалили строки) ваш личный lng превращается в тыкву.
Возможные альтернативы:
  • список пар строковый_ключ=значение, например ID_OK="OK". Так у очень-очень многих.
    Плюсы:
    • не превращается в тыкву вообще никогда: новые строки останутся непереведёнными, удаленные тоже ничего не сломают, разве что осядут мусором.
    • Можно создавать производные lng, указав какой-то в качестве базового и переопределив только некоторые строки
    Минусы:
    • Более жирные lng (раза в полтора).
    • Более жирный far (килобайт на 100), как на диске, так и в памяти.
    • Более медленное получение строк (не мерял, возможно раз в тысячу, но следует понимать, что это значит микросекунды вместо наносекунд).
      С моей точки зрения всё это мелочи, но пуристы могут не согласиться.
  • список пар индекс=значение, например 42="ОК". С гарантией со стороны разработчиков, что отныне и до тепловой смерти вселенной новые индексы добавляются только в конец списка, удалённые повторно не используются.
    Плюсы: те же, что и в предыдущем случае.
    Минусы:
    • Требует админресурса и контроля.
    • При добавлении только в конец о группировке родственных строк можно забыть, если, конечно, сразу не резервировать индексы блоками с большим запасом.
При любых изменениях поддержка старого формата останется, как минимум, для плагинов.
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

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

Post by Yegor »

Ну если кому-то жалко 100 кил для Фара в памяти, то можно гибридный вариант, держать два файла:

keys.lng - строковые ключи. Ключи берутся по номеру. Порядок важен.
FarEng.lng - список пар ключ=значение в любом порядке.

keys.lng

Code: Select all

ID_OK
ID_CANCEL
...
FarEng.lng

Code: Select all

ID_CANCEL="Cancel"
...
ID_OK="OK"
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
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 »

Пока не изучал предметную область, но вроде уже изобрели ресурсные текстовые файлы и комприляцию их в бинарный формат. Может, стоит в этом направлении подумать? В Фарнет, скажем, я так и сделал. Там .NET подход со своими методами в .NET по доступу к ресурсам. Думается, что и в С/C++ все это тоже есть. Локализация приложений - это типовая задача. Но еще раз оговорюсь, для С++ не изучал, могу ошибаться.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

NightRoman wrote: Думается, что и в С/C++ все это тоже есть. Локализация приложений - это типовая задача.
Да, так и есть. Если надо, могу вкратце рассказать, как это сделано в Qt, а также показать, где это почитать подробнее.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

NightRoman wrote:комприляцию их в бинарный формат
Мы тут вроде о том, как упростить жизнь любителям (и создателям) персональных переводов, а не наоборот, не?
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

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

Post by 2useven10 »

Работу фар с локализацией можно вообще оставить почти без изменений.
Загрузка .lng и использование языковых сообщений остаётся без изменений.
Надо чуть допилить lng транслятор, чтобы делал не только enum, но и массив строк идентификаторов.
Эти идентификаторы нужны только на момент загрузки 'модификаторов', память - не больше 20к, скорость не изменится.
Базовые языковые файлы без изменений. Надо только дописать загрузку модификаций (если они есть).
Для них естественный формат ID="Text". Имена можно брать производными от языкового файла - FarRus.lng.mod
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

2useven10 wrote: Имена можно брать производными от языкового файла
Не лучше ли предоставить возможность прописать цепочку суффиксов имён для последовательных подстановок (машина—пользователь—профиль) в конфигурации?
Фар есть инструмент, а не нянька. © 2009 DrKnS
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

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

Post by 2useven10 »

На мой взгляд, незачем. Простота - залог здоровья.
Post Reply

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