Как получить строку из языкового файла 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
Собственно суть - в заголовке темы.
buniak_a_h wrote: ↑Wed 04 Dec, 2019 15:19
А уж имя языкового файла совсем отсутствует
Оно не требуется.
На самом деле надо же как-то знать префикс имени файла, не? Искать для плагина "TmpPanel", например, среди Tmp*.lng … Откуда берётся "префикс" имени файла (в данном случае - tmp)? Или цикл по всем lng-файлам? Тогда очевидное ограничение: в одной папке с плагином - скриптом должен быть единственный lng-файл для одного языка…
buniak_a_h wrote: ↑Wed 04 Dec, 2019 15:19
Собственно суть - в заголовке темы.
Если нужна строка из файла FarManager, то видимо никак.
Спасибо. Грустно. … Придётся доделывать моюGetMsg (где-то уже опубликовывал), чтоб сама искала нужный файл по маске и языку.
На самом деле нужна строка из %FarHome%\far*.lng.
Требуется определить, как завершили стандартный диалог (напр., результаты поиска) и на нажатие Panel, если при инициализации поиска был включен поиск в архивах, поместить найденные на временную панель (идея не моя, но реализуется, вроде, просто). В одной этой задаче надо проверять Caption-ы CheckBox-а и Button-а. Закладывать номер элемента не хочу - всё может поменяться, а вот по языковому файлу искать - вроде, можно - постоянная величина (ну, или поменяется вместе с языковым файлом)
Мне легче запрограммировать. Lua я знаю лучше, чем английский.
Кроме того, видимо, я там что не так делаю. Там есть пара пожеланий, решение одного Shmuel даже написал в комментариях, но ничего не происходит.
Как получить строку из языкового файла Far<…>.lng ?
Posted: Wed 04 Dec, 2019 17:12
by HaRT
buniak_a_h wrote: ↑Wed 04 Dec, 2019 16:43
очевидное ограничение: в одной папке с плагином - скриптом должен быть единственный lng-файл для одного языка…
Там про help. Функция ShowHelp намного более развита по сравнению с GetMsg.
Как получить строку из языкового файла Far<…>.lng ?
Posted: Wed 04 Dec, 2019 18:27
by buniak_a_h
P/S. На самом деле мне тоже казалось, что эти функции должны быть "родственными". Во всяком случае было бы удобно, чтоб параметры у них были одинаковые (именно как у far.ShowHelp с одним маленьким отличием: топик может быть числовым для совместимости с lng-файлами «старого» вида. Ну и в качестве модуля можно было бы указывать не только полное имя плагина, но и его GUID).
Как получить строку из языкового файла Far<…>.lng ?
Теперь есть возможность получить текст сообщения другого плагина (но не фара).
Однако, боюсь, пользы от этого в общем случае нет, поскольку 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
Господа админы! Я сильно извиняюсь, но эта тема почти дублирует мою же ранее опубликованную. Там я закончил всё, что могло потребоваться. Вы можете эту тему совсем прибить?