Название: Русский язык в qt. Как локализировать выполнения функций. Отправлено: Hero Sanya от Июнь 13, 2020, 07:20 Искал локализейт для qt и нашёл две строчки, одна из которых по идеи делает setlocate для qt, а вторая, ну просто для проверки.
Я сделал из этого кнопку, которая заменяет лэйбл на фразу во второй строчке. Но к сожалению, как была каша из символов, так и остаётся. Сразу скажу, что мне локализация нужна, например чтобы считывать с полей русские слова, используя их как название будущего файла, переваривать в путь и формат файла(собственно это делать я знаю как, но попытка ввести русское слово в поле, собственно не переварит всё что написано на кириллице(получится какой нибудь D/file/СѓСЃСЃРєРёР№.txt). Насколько я понял, не переваривание происходит уже тогда, когда мы берём и записываем в string'овую переменную с любого лейбла или поля(то есть и весь остальной функционал, кроме вставок в саму программу, то есть в редакторе форм/действий) будет искажён. Я бы хотел чтобы Любые считывания или записи могли делаться на русском. Код: #include <QTextCodec> Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: kambala от Июнь 13, 2020, 10:42 сохраняй исходный файл в кодировке UTF-8 и проблем с русскими словами в коде не будет:
Код
Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: Hero Sanya от Июнь 13, 2020, 11:58 сохраняй исходный файл в кодировке UTF-8 и проблем с русскими словами в коде не будет: Так, ну применилась эта штука удачно. Только вот, что такое auto? Это тип данных?Код
Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: kambala от Июнь 13, 2020, 12:14 по-моему тебе уже неоднократно говорили изучать С++ :) https://en.cppreference.com/w/cpp/language/auto
Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: Hero Sanya от Июнь 14, 2020, 14:33 по-моему тебе уже неоднократно говорили изучать С++ :) https://en.cppreference.com/w/cpp/language/auto Да, я учу си++ и qt. Но кроме как посмотреть все видюшки с ютуба и тыкаться в документации, иного способа кроме как задавать свои вопросы на форумах и везде в надежде что ответят, у меня нету. Потому что документации слишком гиганские, а видюшки с ютуба не полные, даже англоязычные.Вот, благодаря ВАААС, я победил чуды и знать, что такое тип данных auto. На самом деле, меня убило. что существует фигня, которая определяет тип за тебя, с другой стороны, нафига? В любом случае, обрабатывать переменную, по её типу придётся. Я бы даже сказал, благодаря этой фигне. можно будет запутаться, а какой же тип присвоила эта auto. Я так понимаю, тут она присвоила Qstring? Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: demal от Июнь 14, 2020, 15:21 так почитай хотя бы Бланшета. Там гораздо более понятно, чем скакать кузнечиком по Ютубу
Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: vbv от Июнь 14, 2020, 16:19 Да...
А какой хороший был вопрос.... По поводу вопроса: Когда возникает подобная необходимость разбираюсь заново. Потом делаю. И благополучно забываю. Последнее с чем пришлось разбираться/вспоминать, проверить что все символы строки - находятся в диапазоне до 128..... Пока символ - байт хорошо но если предположить возможность символов UTF16 уже не так весело. И, да ничего сложного, понадобится сделать раз в триста лет - сидишь тупишь. PS: Извините, что на вопрос не ответил... Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: Hero Sanya от Июнь 23, 2020, 20:07 А как быть в случае если используется QFileDialog ?
Код: QFileDialog fd; По идеи, такая конструкция, вызовет диалоговое окно, в котором пользователь укажет путь сохранения. Переменная должна его запомнить с русскими словами и дальше её можно пихать в обработки. Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: kambala от Июнь 23, 2020, 22:24 литерал работает только с константами. в данном случае у тебя будет просто QString:
Код
Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: demal от Июнь 23, 2020, 22:27 а зачем такая конструкция, если вот тут https://doc.qt.io/qt-5/qfiledialog.html (https://doc.qt.io/qt-5/qfiledialog.html) говорят что по другому делается. Зачем преобразовывать QString? все ОС поддерживают utf8, зачем такой изврат?
Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: Hero Sanya от Июнь 24, 2020, 00:31 а зачем такая конструкция, если вот тут https://doc.qt.io/qt-5/qfiledialog.html (https://doc.qt.io/qt-5/qfiledialog.html) говорят что по другому делается. Зачем преобразовывать QString? все ОС поддерживают utf8, зачем такой изврат? Чтобы не было вот такого Название.txt.Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: Hero Sanya от Июнь 24, 2020, 13:52 литерал работает только с константами. в данном случае у тебя будет просто QString: Таким способом русские буквы опять будут выводиться саша так. Просто дальше, у меня будет выводится путь в лейбле, этим rusStr. И из него будет браться текст в стринговую переменную, чтобы с текстом можно было манипулировать. Текст будет переводится в const char*, чтобы он для _mkdir подошёл из #include <direct.h>, для создания папки. Однако стринговая переменная, которая хранит путь с именем, будет идти дальше по коду, чтобы в файловых потоках, файлы создавались в этой новой папке. Всё ломается, чисто, когда пользователь вводит русские символы или путь до папки имеет русские буквы.Код
Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: kambala от Июнь 24, 2020, 14:11 Цитировать Текст будет переводится в const char*, чтобы он для _mkdir подошёл из #include <direct.h>, для создания папки. Однако стринговая переменная, которая хранит путь с именем, будет идти дальше по коду, чтобы в файловых потоках, файлы создавались в этой новой папке. Всё ломается, чисто, когда пользователь вводит русские символы или путь до папки имеет русские буквы. надо сконвертировать QString в нужную кодировку, почитай какую _mkdir ожидает (скорее всего это UTF-16). для конвертации см. методы QString или QTextCodec.Название: Re: Русский язык в qt. Как локализировать выполнения функций. Отправлено: demal от Июнь 24, 2020, 19:08 зачем преобразовывать что-то, если у тебя в qt есть тот же функционал. Достаточно посмотреть на qdir, который прекрасно понимает в utf-8. И все эти преобразования оказываются бессмысленными.
|