<mikekaganski>
здесь сначала мы заменяем все стандартные вещи (вызывая вышеуказанную функцию), а потом дополнительно вручную заменяем %CMDNAME на то, что надо
<mikekaganski>
ты думаешь, %LOCALE вместо $LOCALE тебя спасёт?
<mikekaganski>
не думаю, что так
<tagezi>
а почему %PRODUCTNAME определяется?
<mikekaganski>
может, я и ошибаюсь, когда пишу "я бы не трогал sfx2/source/appl/sfxhelp.cxx"
<mikekaganski>
потому что оно прописано в ReplaceStringHookProc
<mikekaganski>
просто LOCALE может в разных контекстах значить разные вещи
<mikekaganski>
а PRODUCTNAME всегда однозначен
<mikekaganski>
поэтому в той функции не получится обрабатывать такую неоднозначную переменную
<tagezi>
погодь, когда мы коворим про локаль, мы всегда имеет ввиду язык интерфейса
<mikekaganski>
нет
<tagezi>
эм
<mikekaganski>
ты глянь настройки наши
<mikekaganski>
есть язык, и есть локаль
<mikekaganski>
мы можем их менять по усмотрению
<mikekaganski>
а ещё есть локаль абзаца или ячейки, и даже символов
<mikekaganski>
так что не всё так однозначно
<tagezi>
ну, можно сделать LOCALLANG
<tagezi>
оббясни про продукт
<mikekaganski>
В принципе можно, если ты сделаешь переменную, у которой будет однозначная трактовка
<tagezi>
LOCALUI
<mikekaganski>
а что про продукт? у нас принято, что продукт - это константа, выставленная глобально при компиляции (в каком-то заголовке или в define компилятора - не помню)
<tagezi>
LOCALUIPRODUCTNAME
<mikekaganski>
%UILOCALE
<mikekaganski>
Ок, первый вариант - добавить это к ReplaceStringHookProc и втыкать где надо. Сработает, но нужно будет послушать других, нет ли каких-то соображений против (я не знаю, но может быть всяко)
<tagezi>
кого тискать?
* kompi
глядит на чатик и грустит
<tagezi>
не понимаешь ничего?
<kompi>
eue
<kompi>
да
<mikekaganski>
tagezi: не знаю. Нужно будет просто этот момент описать отдельно в commit message, и оставить для review
<tagezi>
mikekaganski: а ты не помнишь, когда я переписывал cmdlinehelp.cxx, я жу вроде пытался добавить локаль в вывод, но была какая-то вонь по поводу
<mikekaganski>
нет, там было другое
<mikekaganski>
емнип
<kompi>
tagezi: я понимаю о чем речь
<mikekaganski>
мне кацца, ты хотел просто сделать хэлп локализованным
<kompi>
но грустить мне это не мешает
<mikekaganski>
kompi: :) разве можно грустить, когда на твоих глазах делается хорошее дело? :)
<tagezi>
не, локализованым я его вроде не хотел сделать
<mikekaganski>
я могу ошибаться
<tagezi>
что-то я тот патч не нахожу
<mikekaganski>
ты у себя в геррите глянь
<mikekaganski>
там в верхней строке фильтра нужно сделать owner:self
<tagezi>
не, я выносил буиод айди
<tagezi>
и мне сказали, что оно может быть пустым, так что пусть все просто тупят на эти 24 рандомных знака
<kompi>
mikekaganski: есть какой-то дискомфорт у меня, когда я на это гляжу
<mikekaganski>
kompi: это в тебе говорить программер, которого ты не пускаешь на свободу :)
<kompi>
:D
<kompi>
mikekaganski: у меня склад ума не такой, я реально могу оперировать только известными вариантами решения задачи, а творческий потенциал у меня равен нулю
<mikekaganski>
насчёт творчества - это для меня непосильно. :)
<kompi>
я говорю о том, что если будет задача как-то переработать логику или алгоритм, то я буду просто тупить
<kompi>
то есть задача "сделай чтобы работала так же, но другим путем" для меня - это сразу тупняк
<tagezi>
да ладно. задача, вырыть траншею, алгоритм: нанять китайца, дать лопату и пинка, проверить работу
<tagezi>
прогнать китайца :)
<tagezi>
сделай чтобы было также но без китайца :)
<mikekaganski>
Ну, здесь потенциал для творчества огромен...
<mikekaganski>
копать от А до Б или от Б до А...
<mikekaganski>
Копать лопатой или совком (для армейцев :))
<tagezi>
у тебя тоже плохо с алгоритмами :)
<mikekaganski>
проверять по завершении или поэтапно
<tagezi>
любой умеет делать алгоритмы, просто не знает как это проявить
<tagezi>
это как народ говорит, что у него нет склонности к математике, но в магазине сдачу всеравно считает :)
<tagezi>
и потом, программирование и математика на 90% - это абстракция
<JohnDoe_71Rus>
нанять индуса
<tagezi>
но вот почемуто махать кистью - это творчество, а решать уравнения нет :)
<tagezi>
пригнать эксковатор :) блин
<JohnDoe_71Rus>
который соберут сотня китайцев?
<tagezi>
mikekaganski: кого пинать по поводу локали? или делать патч и ждать ревью?
<mikekaganski>
tagezi: сделай патч, насчёт ревью - я спрошу в канале, чтобы глянули, у кого есть соображения по поводу функции
<mikekaganski>
tagezi: проверь, что у нас нет такой строки (UILOCALE или как ты её назовёшь) в дереве
<mikekaganski>
чтобы не получилось конфликта существующих имён
<mikekaganski>
и отрази это в commit message, что такого нет, протестировано grep-ом
<mikekaganski>
tagezi: не уверен, что ты всё правильно делаешь. Строка в XML - это ключ для переведённых строк.
<mikekaganski>
Если после твоей правки оно всё равно способно найти корректный перевод в локализации, то оно подтянет ту строку из перевода, а в ней будет и переменная
<tagezi>
эм.. тоесть нужно в ен смотреть
<mikekaganski>
не знаю деталей, просто соображение
<tagezi>
эм.. в ен тоже самое, переменной нет, а хеш есть
<mikekaganski>
дебаг...
<mikekaganski>
поставь в этом месте вывод исходной строки, до замены переменной
<tagezi>
Локаль, в этом окне не тоже самое, что локаль интерфейса
<tagezi>
и сдается мне что %PRODUCTNAME берется из другого места, а не из desktop/source/app/app.cxx
<JohnDoe_71Rus>
тагезя хочет хакнуть и выпустить свой LeraOffice
<tagezi>
угу, и платную версию МегоКулЛераОффис
<tagezi>
mikekaganski: вот смотри, логика в следующем, если я вставляю %BUILDID в форму, то я не получаю ещё один хешь, оно распознается как строка
<JohnDoe_71Rus>
хаха КулЛер офес
<tagezi>
но обработчика для %PRODUCTNAME я не нахожу тут
<tagezi>
MessageDialog имеет методы get_primary_text() и set_primary_text(const OUString &rPrimaryString)
<tagezi>
в теории я могу взять сроку, заменить в ней что хочу и вернуть это
<tagezi>
так?
<mikekaganski>
так
<tagezi>
а вот не получается
<mikekaganski>
?
<tagezi>
глянь драфт
<mikekaganski>
смотрю
<tagezi>
648 строка, заменяет %UILOCALE на то что в aLocaleStr
<tagezi>
не важно что там сейчас..
<mikekaganski>
ну, что-то в этом духе (хотя мне кажется, что локаль нужно будет брать не так, но в данном контексте не суть)
<tagezi>
да.. у меня замены не происходит
<tagezi>
локаль там будет по другому браться.. топому что это возвращает не правильный результат, но суть в замене пока
<mikekaganski>
выводится с %UILOCALE?
<tagezi>
да
<tagezi>
вот прям как в форме The LibreOfficeDev built-in help for current UI language (%UILOCALE) is not installed on your computer.
<tagezi>
блин, нужно дебажить всетаки
<tagezi>
партачит в трё строках
<mikekaganski>
а, понятно
<mikekaganski>
replaceAll не меняет себя. Это константный член. Он возвращает новую строку. Ты можешь его результат присвоить обратно исходной строке, а можешь его прямо в set_primary_text запихать
<tagezi>
ааааааааааааааа
<tagezi>
блин.. ну вот, а я тут уже хрен знает сколько сношаюсь
<tagezi>
спасибо
<mikekaganski>
:)
<tagezi>
а я почемуто решил что он меняет сам себя
<mikekaganski>
У нас по философии должно быть не меньше десятка разных способов узнать локаль. :) Но тут вот какое соображение. У impl_hasHelpInstalled() есть какой-то свой способ узнать локаль, справку по которй надо искать.
<mikekaganski>
Если ты воспользуешься другим, результаты могут не совпасть, и будут странности у пользователя
<tagezi>
велосипеды
<mikekaganski>
ессно
<mikekaganski>
если девелопер не придумает новый велосипед в своём патче, мы его даже не смотрим :))
<tagezi>
почему нельзя было сделать один единственный метод получения локили, сделать ему галочки какую хочется получить, и пользоваться этим?
<tagezi>
вот если убрать все велосипеды, ЛО будет на 5 дюймовую дискету помещаться :)
<mikekaganski>
На самом деле erAck делал что-то для этого недавно. И возможно, постепенно это сойдётся в единый метод. Но пока я указал, почему стоит здесь посмотреть реализацию hasHelpInstalled
<tagezi>
да, я тебя понял
<tagezi>
это логично...
<mikekaganski>
(можешь его спросить, может, я не прав, кстати)
<tagezi>
mikekaganski: не, это плохой способ
<tagezi>
help for current UI language (ru) is not installed
<tagezi>
по идее должно быть RU_ru
<mikekaganski>
tagezi: Я бы всё равно начал с него, и попытался узнать у erAck, как эту строку перевести в понятную пользователю
<mikekaganski>
tagezi: ru_RU
<tagezi>
да
<tagezi>
но ты в ошибке писал вообще полное название
<mikekaganski>
вероятно, справка игнорит код страны, смотрит только на код языка
<mikekaganski>
у тебя в первом варианте ты брал локаль из системы. Попробуй создать локаль на основе этой строки, а потом получить строку из неё?
<mikekaganski>
(не знаю, насколько реально - просто мысль)
<mikekaganski>
хм
<mikekaganski>
я почему-то подумал, что ты там как-то получал человеческую строку
<mikekaganski>
тогда нужно erAck спросить, как перевести ru в Русский
<tagezi>
его сейчас нет, видимо оттошёл
<tagezi>
тот способ который я использовал, возвращал локаль по умолчанию, для меня всегда русский
<mikekaganski>
да я помню. Просто меня переклинило, что пользовался там потом каким-то методом типа pLoc->getHumanReadableString()
<mikekaganski>
вот я и подумал, что ты можешь сделать Locale aLoc("ru"); aLoc.getHumanReadableString() - и получишь Русский или Russian
<tagezi>
вот смотри, есть такая штука officecfg::System::L10N::UILocale
<tagezi>
но я не могу найти её в пространстве имен на сайте API
<mikekaganski>
А зачем?
<tagezi>
эта штука возвращает язык по дефолту, а не тот который текущий
<mikekaganski>
если она тебе нужна, просто включи соответствующий заголовок
<tagezi>
а мне нужно текущий, я хотел посмотреть
<mikekaganski>
почему по дефолту?
<tagezi>
#include <officecfg/System.hxx> это?
<mikekaganski>
ага
<tagezi>
это я включил, она работает, но на финском языке показывает русский
<mikekaganski>
странно
<tagezi>
ru-RU
<tagezi>
ну, я и хотел посмотреть чо там есть
<tagezi>
ещё
<tagezi>
вот.. потому и спрашиваю, как? :)
<tagezi>
я её вот так использую officecfg::System::L10N::UILocale::get()
<tagezi>
может просто не правильно
<kompi>
mikekaganski: в каком каталоге .ui диалогов лежат в установленном Либре?
<kompi>
mikekaganski: в каком каталоге лежат .ui файлы в установленном Либре?
<tagezi>
странно, должно работать
<tagezi>
там же всего 3 имени SystemLocale, Locale и UILocale
<tagezi>
officecfg::Office::Linguistic::General::UILocale аэто за что отвечает?
<tagezi>
а этот возвращает правильно, но не в том формате :)
<tagezi>
а русский не возвращает вообще
<tagezi>
всё, мои идеи закончились
bormant has joined #libreoffice-ru
<mikekaganski>
а в каком? и что выдаёт вместо русского?
<tagezi>
пусто
<tagezi>
officecfg::Office::Linguistic::General::UILocale этот, показывает финский правильно, но как fi, а русский не показывает вообще, там пустые скобки
<mikekaganski>
пусто - это когда По умолчанию (Русский) или когда просто Русский?
<tagezi>
наверное, я что-то не доделываю
<tagezi>
когда по умолчанию
<mikekaganski>
так и должно быть
<mikekaganski>
"по умолчанию" значит, что эта настройка очищена
<tagezi>
а с форматом что делать?
<mikekaganski>
значит, твой первый вариант показывает то же самое, что и здесь?
<tagezi>
да, только русский показывает
<tagezi>
и я не знаю насколько будет полезным двухбуквенное обозначение языка
<mikekaganski>
tagezi: спрашиваю и Айке
<tagezi>
обломинго
<tagezi>
нужно велосипедить
<tagezi>
что такое ICU?
<tagezi>
intensive care unit?
<tagezi>
International Components for Unicode (ICU)