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

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

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

Post by buniak_a_h » Wed 04 Dec, 2019 15:19

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

User avatar
John Doe
Бюрократ
Posts: 12533
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 237 times

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

Post by John Doe » Wed 04 Dec, 2019 15:24

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
Сказано, что принимается только собственный гуид плагина.

buniak_a_h
Posts: 1241
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 89 times
Been thanked: 79 times
Contact:

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

Post by buniak_a_h » Wed 04 Dec, 2019 16:43

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: 12533
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 237 times

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

Post by John Doe » Wed 04 Dec, 2019 16:51

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

buniak_a_h
Posts: 1241
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 89 times
Been thanked: 79 times
Contact:

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

Post by buniak_a_h » Wed 04 Dec, 2019 17:05

John Doe wrote:
Wed 04 Dec, 2019 16:51
Мантис?

User avatar
HaRT
Moderator
Posts: 9159
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 174 times

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

Post by HaRT » Wed 04 Dec, 2019 17:12

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: 12533
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 237 times

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

Post by John Doe » Wed 04 Dec, 2019 17:56

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

buniak_a_h
Posts: 1241
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 89 times
Been thanked: 79 times
Contact:

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

Post by buniak_a_h » Wed 04 Dec, 2019 18:14

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

buniak_a_h
Posts: 1241
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 89 times
Been thanked: 79 times
Contact:

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

Post by buniak_a_h » Wed 04 Dec, 2019 18:27


User avatar
John Doe
Бюрократ
Posts: 12533
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 237 times

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

Post by John Doe » Thu 05 Dec, 2019 16:18

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

buniak_a_h
Posts: 1241
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 89 times
Been thanked: 79 times
Contact:

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

Post by buniak_a_h » Thu 05 Dec, 2019 19:03

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

buniak_a_h
Posts: 1241
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 89 times
Been thanked: 79 times
Contact:

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

Post by buniak_a_h » Fri 06 Dec, 2019 07:53

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

Post Reply

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