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

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Извините, если такой вопрос уже был.
Собственно суть - в заголовке темы.
Подробности : нынешние файлы Far….lng имеют "ключевую" структуру (т.е. поиск результата не по номеру строки, а по имени, казанному в теге //[имя]). Есть ли стандартная процедура получения строки из такого файла?
И ещё. Как Far находит нужный языковой файл? Открывает все и читает строку .Language= ? Просто имя языкового файла как-то неочевидно зависит от языка … Например, FarSky.lng - это .Language=Slovak …
Функция far.GetMsg принимает только числовой параметр - номер строки. А уж имя языкового файла совсем отсутствует (хотя бы префикс или маска)
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post 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
Сказано, что принимается только собственный гуид плагина.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post 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-е.
Ладно, спасибо за ответ. Я надеялся, что это я чего-то не нашёл… :-(
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Wed 04 Dec, 2019 16:43 Или цикл по всем lng-файлам?
Да.
buniak_a_h wrote: Wed 04 Dec, 2019 16:43 Спасибо. Грустно.
Мантис?
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

John Doe wrote: Wed 04 Dec, 2019 16:51Мантис?
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

buniak_a_h wrote: Wed 04 Dec, 2019 16:43 очевидное ограничение: в одной папке с плагином - скриптом должен быть единственный lng-файл для одного языка…
Родственное обсуждение: viewtopic.php?p=149773#p149773
Last edited by HaRT on Wed 04 Dec, 2019 17:13, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Wed 04 Dec, 2019 15:19 А у функции far.GetMsg вообще нет упоминания о плагине и его Guid-е.
Со следующего ночного билда будет.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Wed 04 Dec, 2019 17:12 Родственное обсуждение
Там про help. Функция ShowHelp намного более развита по сравнению с GetMsg.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post 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 величина не постоянная.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

John Doe wrote: Thu 05 Dec, 2019 16:18 Теперь есть возможность получить текст сообщения другого плагина (но не фара).
Однако, боюсь, пользы от этого в общем случае нет, поскольку MsgId величина не постоянная.
1. Про ФАР я уже понял. процедуру сделал, доделаю учёт возможности частичного переопределения языковых строк в File.lng.custom и выложу (туда).
2. Думаю, тем и хороши строковые теги, что они могут быть постоянными (ну, если только автор не поставил себе задачу затруднить сторонним лицам использование его софта) Именно поэтому я НИКОГДА не буду использовать языковой файл "старого" вида (с позиционным получением строки)
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Господа админы! Я сильно извиняюсь, но эта тема почти дублирует мою же ранее опубликованную. Там я закончил всё, что могло потребоваться. Вы можете эту тему совсем прибить?
Post Reply

Return to “Нужна помощь”