Page 1 of 1

Как получить строку из языкового файла Far<…>.lng ?

Posted: Wed 04 Dec, 2019 15:19
by buniak_a_h
Извините, если такой вопрос уже был.
Собственно суть - в заголовке темы.
Подробности : нынешние файлы Far….lng имеют "ключевую" структуру (т.е. поиск результата не по номеру строки, а по имени, казанному в теге //[имя]). Есть ли стандартная процедура получения строки из такого файла?
И ещё. Как Far находит нужный языковой файл? Открывает все и читает строку .Language= ? Просто имя языкового файла как-то неочевидно зависит от языка … Например, FarSky.lng - это .Language=Slovak …
Функция far.GetMsg принимает только числовой параметр - номер строки. А уж имя языкового файла совсем отсутствует (хотя бы префикс или маска)

Как получить строку из языкового файла Far<…>.lng ?

Posted: Wed 04 Dec, 2019 15:24
by John Doe
buniak_a_h wrote: Wed 04 Dec, 2019 15:19 Открывает все и читает строку .Language= ?
Да.
buniak_a_h wrote: Wed 04 Dec, 2019 15:19 А уж имя языкового файла совсем отсутствует
Оно не требуется.
Функция работает с языком установленным в фаре.
buniak_a_h wrote: Wed 04 Dec, 2019 15:19 Собственно суть - в заголовке темы.
Если нужна строка из файла FarManager, то видимо никак.
https://api.farmanager.com/ru/service_f ... etmsg.html
Сказано, что принимается только собственный гуид плагина.

Как получить строку из языкового файла Far<…>.lng ?

Posted: Wed 04 Dec, 2019 16:43
by buniak_a_h
John Doe wrote: Wed 04 Dec, 2019 15:24
buniak_a_h wrote: Wed 04 Dec, 2019 15:19 Открывает все и читает строку .Language= ?
Да.
Наверно, это довольно затратно - пробежаться по всем файлам, открыть, прочитать первую строку, закрыть …
John Doe wrote: Wed 04 Dec, 2019 15:24
buniak_a_h wrote: Wed 04 Dec, 2019 15:19 А уж имя языкового файла совсем отсутствует
Оно не требуется.
На самом деле надо же как-то знать префикс имени файла, не? Искать для плагина "TmpPanel", например, среди Tmp*.lng … Откуда берётся "префикс" имени файла (в данном случае - tmp)? Или цикл по всем lng-файлам? Тогда очевидное ограничение: в одной папке с плагином - скриптом должен быть единственный lng-файл для одного языка…
John Doe wrote: Wed 04 Dec, 2019 15:24
buniak_a_h wrote: Wed 04 Dec, 2019 15:19 Собственно суть - в заголовке темы.
Если нужна строка из файла FarManager, то видимо никак.
Спасибо. Грустно. … Придётся доделывать мою GetMsg (где-то уже опубликовывал), чтоб сама искала нужный файл по маске и языку.
На самом деле нужна строка из %FarHome%\far*.lng.
John Doe wrote: Wed 04 Dec, 2019 15:24 https://api.farmanager.com/ru/service_f ... etmsg.html
Сказано, что принимается только собственный гуид плагина.
Я в курсе. А у функции far.GetMsg вообще нет упоминания о плагине и его Guid-е.
Ладно, спасибо за ответ. Я надеялся, что это я чего-то не нашёл… :-(

Как получить строку из языкового файла Far<…>.lng ?

Posted: Wed 04 Dec, 2019 16:51
by John Doe
buniak_a_h wrote: Wed 04 Dec, 2019 16:43 Или цикл по всем lng-файлам?
Да.
buniak_a_h wrote: Wed 04 Dec, 2019 16:43 Спасибо. Грустно.
Мантис?

Как получить строку из языкового файла Far<…>.lng ?

Posted: Wed 04 Dec, 2019 17:05
by buniak_a_h
John Doe wrote: Wed 04 Dec, 2019 16:51Мантис?

Как получить строку из языкового файла Far<…>.lng ?

Posted: Wed 04 Dec, 2019 17:12
by HaRT
buniak_a_h wrote: Wed 04 Dec, 2019 16:43 очевидное ограничение: в одной папке с плагином - скриптом должен быть единственный lng-файл для одного языка…
Родственное обсуждение: viewtopic.php?p=149773#p149773

Как получить строку из языкового файла Far<…>.lng ?

Posted: Wed 04 Dec, 2019 17:56
by John Doe
buniak_a_h wrote: Wed 04 Dec, 2019 15:19 А у функции far.GetMsg вообще нет упоминания о плагине и его Guid-е.
Со следующего ночного билда будет.

Как получить строку из языкового файла Far<…>.lng ?

Posted: Wed 04 Dec, 2019 18:14
by buniak_a_h
HaRT wrote: Wed 04 Dec, 2019 17:12 Родственное обсуждение
Там про help. Функция ShowHelp намного более развита по сравнению с GetMsg.

Как получить строку из языкового файла Far<…>.lng ?

Posted: Wed 04 Dec, 2019 18:27
by buniak_a_h

Как получить строку из языкового файла Far<…>.lng ?

Posted: Thu 05 Dec, 2019 16:18
by John Doe
John Doe wrote: Wed 04 Dec, 2019 17:56
buniak_a_h wrote: Wed 04 Dec, 2019 15:19 А у функции far.GetMsg вообще нет упоминания о плагине и его Guid-е.
Со следующего ночного билда будет.
Теперь есть возможность получить текст сообщения другого плагина (но не фара).
Однако, боюсь, пользы от этого в общем случае нет, поскольку MsgId величина не постоянная.

Как получить строку из языкового файла Far<…>.lng ?

Posted: Thu 05 Dec, 2019 19:03
by buniak_a_h
John Doe wrote: Thu 05 Dec, 2019 16:18 Теперь есть возможность получить текст сообщения другого плагина (но не фара).
Однако, боюсь, пользы от этого в общем случае нет, поскольку MsgId величина не постоянная.
1. Про ФАР я уже понял. процедуру сделал, доделаю учёт возможности частичного переопределения языковых строк в File.lng.custom и выложу (туда).
2. Думаю, тем и хороши строковые теги, что они могут быть постоянными (ну, если только автор не поставил себе задачу затруднить сторонним лицам использование его софта) Именно поэтому я НИКОГДА не буду использовать языковой файл "старого" вида (с позиционным получением строки)

Как получить строку из языкового файла Far<…>.lng ?

Posted: Fri 06 Dec, 2019 07:53
by buniak_a_h
Господа админы! Я сильно извиняюсь, но эта тема почти дублирует мою же ранее опубликованную. Там я закончил всё, что могло потребоваться. Вы можете эту тему совсем прибить?