ChanServ changed the topic of #libreoffice-ru to: Канал поддержки русскоязычных пользователей LibreOffice | Wiki TDF http://tdf.io/wikiru | On-line документация http://tdf.io/helpru | Логи канала: http://goo.gl/gzwdwU
JohnDoe_71Rus has joined #libreoffice-ru
<tagezi> mikekaganski: а откуда %PRODUCTNAME вообще приходит?
* tagezi понимает пачему разные окна сделаны по разному
kompi has joined #libreoffice-ru
<mikekaganski> здесь сначала мы заменяем все стандартные вещи (вызывая вышеуказанную функцию), а потом дополнительно вручную заменяем %CMDNAME на то, что надо
<mikekaganski> у тебя будет что-то похожее
<tagezi> примерно так.. это я поимаю
<mikekaganski> ну да
<tagezi> я тут не понимаю
<tagezi> потому что раньше в предедущем случае они собирают текст по кускам, а тут просто берут и "втыкают"
<tagezi> и я не вижу, чтобы тут инклудили app.cxx
<mikekaganski> сразу всё не понимаю
<mikekaganski> втыкают что?
<kompi> утра
<mikekaganski> и почему нужно инклудить cxx?
<mikekaganski> привет :)
<tagezi> эм
<tagezi> hxx
<tagezi> но не суть
<tagezi> там по классам оно переходит как довесок?
<mikekaganski> tagezi: оно - это что? я правда не понял
<mikekaganski> ты про функцию ReplaceStringHookProc?
<tagezi> %PRODUCTNAME
<mikekaganski> может понадобиться включить... но я не знаю. Может быть, код, вытаскивающий текст для диалога, сам этим занимается
<tagezi> я вчера, как умный вася, думая что всё сделано по уму, и все переменные в окнах прописаны в одном месте, просто втавил $LOCAL
<mikekaganski> :)
<tagezi> а оно не работает
<tagezi> хватит ржать :)
<tagezi> начал копать, как это сделано, и вот вижу, что оно используется только в одном месте
<mikekaganski> Смотри: сейчас текст этого диалога просто прописан в .ui и вытаскивается в конструкторе окна, которому передаётся этот .ui как параметр
<tagezi> открывается диалоговое окно созданое в (как его там) , но обробатывается оно по разному
<tagezi> ну
<mikekaganski> а тебе придётся заменять часть строки в своём коде
<mikekaganski> то есть я бы не трогал sfx2/source/appl/sfxhelp.cxx
<tagezi> а сделал бы всё по уму :)
<tagezi> вот и я подумал, что стоит сделать %LOCAL
<tagezi> и больше не парится как она там разработана
<tagezi> так?
<tagezi> тоесть реализовать мне её нужно тут https://opengrok.libreoffice.org/xref/core/desktop/source/app/app.cxx#397
<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-ом
kompi has quit [Quit: Page closed]
<tagezi> а откуда тут приходит $BUILDID?
<tagezi> в апп оно отпределяется как %BUILDID
<tagezi> так, я реально не понимаю как это делается :(
<tagezi> такой нет, есть похожее в этом файле https://opengrok.libreoffice.org/xref/core/unotools/source/config/syslocaleoptions.cxx#117
<tagezi> mikekaganski: а почему не используют %BUILDID?
<mikekaganski> tagezi: ну ты спросил :)
<tagezi> Зачем строить велосипед?
<mikekaganski> это надо историю поднимать, вдруг этот код старше...
<mikekaganski> или спрашивать ведосипедостроителей, нет ли какого подвоха
<tagezi> mikekaganski: так, а зачем вообще нужна эта перменная.. если её убрать из xml файла, то ничего не меняется, хеш код точно также показывается
<tagezi> Build ID: 5940f3020e513c769c5cf452b49c1f211358c525
<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> есть только вот это
<JohnDoe_71Rus> tagezi: 152 строка не?
<tagezi> это обработчик $BUILDID
<tagezi> нужно катрину пинать
<tagezi> катарину*
<JohnDoe_71Rus> что за багу ты изихакаешь? как понял %PRODUCTNAME == LibreOffice
<tagezi> JohnDoe_71Rus: так, ты дал ссылку на перл
<tagezi> это было бы очень странныс заменять переменные в коде перлом перед сборкой
<JohnDoe_71Rus> я просто решил посмотреть где оно используется
<tagezi> бубли сказала идти простым путем, не выдумывать всякую фигню, если не знаешь где это будет применяться
<tagezi> так что, делаем как задумывалось сначала
JohnDoe_71Rus has quit [Quit: Miranda IM! Smaller, Faster, Easier. http://miranda-im.org]
<tagezi> mikekaganski:
<tagezi> можешь помочь, объяснить пару моментов
<tagezi> ?
<mikekaganski> давай
<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> а я почемуто решил что он меняет сам себя
<tagezi> sVersion += m_aLocaleStr.replaceAll("$LOCALE", aLocaleStr);
<tagezi> нужно быть внимательнее
<tagezi> да, работает
<tagezi> спасибо, теперь можно браться за локаль
<tagezi> теперь нужно будет понять как вернуть язык пользовательского интерфейса :)
JohnDoe_71Rus has joined #libreoffice-ru
<mikekaganski> tagezi: совет: там внутри проверки на установку (или где-то во вложенных функциях) есть вызов функции, возвращающей строку локали
<tagezi> mikekaganski: а разве это не тут? https://opengrok.libreoffice.org/xref/core/include/i18nlangtag/languagetag.hxx
<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
<mikekaganski> затупил, бывает :)
<tagezi> а это что за язык возвращает?
<tagezi> вот почему тупо погулить нельзя "как получить текущий язык интерфейса с++ LibreOffice"
<tagezi> ?
<tagezi> zpsr bynthatqf exfdcndetn d yfcnhjqrf[
<tagezi> язык интерыейса участвует в настройках
<tagezi> вот, в тиории, его можно брать от туда.. в том модуле его и устанавливают и получают и трансформируют в читаемый
kompi has joined #libreoffice-ru
<tagezi> mikekaganski: тык
<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)
<mikekaganski> какая там функция возвращает "ru"?
<tagezi> mikekaganski: static OUString const & HelpLocaleString()
<mikekaganski> ага, уже вижу :)
<tagezi> mikekaganski: а почему ты говориь что она вовращает список, когда можно стринг,
<tagezi> ?
<mikekaganski> я говорю???
<tagezi> не, я уже всё понял, там на входе не строка
<tagezi> mikekaganski: получилось
<tagezi> охренеть баяны и велосипеды
<mikekaganski> здорово! так что ты был прав, и Айке с тобой согласен
<tagezi> нада это причесать, а то всё как-то раком вывернуто, даже я не разберусь :)
<tagezi> mikekaganski: https://paste.ubuntu.com/26120228/
<tagezi> как-то так получилось
<tagezi> но зато теперь полное название языка :)
<tagezi> красата красатища :)
<mikekaganski> nLangTag - префикс n - это для целых чисел... aLangTag
<tagezi> там же вроде инт входит
<mikekaganski> замечательно
<tagezi> нет?
<mikekaganski> в смысле?
<mikekaganski> куда входит? это же объект
<mikekaganski> nLangTag.getLanguageType()
<mikekaganski> это же не яваскрипт :)
<tagezi> LanguageTag это объект?
<tagezi> а это не понял nLangTag.getLanguageType()
<tagezi> что тут не правильно?
<mikekaganski> я про то, что если бы nLangTag был числом, то такой номер бы не прошёл :)
<tagezi> а.. ясно
<tagezi> коментарии сюда нужны, или и так всё не понятно? :)
<mikekaganski> да не нужно, здесь прозрачно всё
<tagezi> сейчас ещё раз соберу и кину в герит тогда
<mikekaganski> знаешь, на всякий случай: замени %UILOCALE на $UILOCALE
<mikekaganski> потому что так уже есть в других случаях
kompi has quit [Ping timeout: 260 seconds]
<mikekaganski> чтобы различать подстановки, выполняемые в app
<mikekaganski> а может, и не надо...
<mikekaganski> сам не знаю, что лучше
<tagezi> mikekaganski: в месаджах это вообще не использовалось до этого
<tagezi> в других окнах ставят $
<mikekaganski> оставь как есть. Нечего себе голову морочить
<mikekaganski> в каких?
<mikekaganski> как я не люблю эту мелочёвку - когда нужно выбрать правильный "стиль"
<tagezi> например туту
<mikekaganski> в обчем, это на твоё усмотрение\
bormant has quit [Quit: Leaving]
kompi has joined #libreoffice-ru
<kompi> Вы опять о сложном
<tagezi> не, все. на сегодня всё :)
mikekaganski has quit [Read error: Connection reset by peer]
mikekaganski has joined #libreoffice-ru
<kompi> Да уж куда еще то
<kompi> У меня вот было сегодня желание пописать гайд, но конечно дети не дали , а сейчас и свет вырубили
JohnDoe_71Rus has quit [Quit: KVIrc 4.9.2 Aria http://www.kvirc.net/]
<tagezi> чото как-то мелких косяков много
<mikekaganski> ?
<tagezi> ну в патче.. наверное ещё что-то будет когда кто-нибудь посмотрит
<mikekaganski> фигня, это не косяки
<mikekaganski> там Миклош внедрил хрень для проверки форматирования... я всё жду, когда она меня начнёт дручить, а я орать матом
<tagezi> mikekaganski: она на кланге основана?
<mikekaganski> ага
<tagezi> я пока не осилил
<tagezi> но это хорошо что внедрил, будет удобнее читат, а то каждый как хочет форматирует
kompi has quit [Ping timeout: 268 seconds]