Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: v1ctor от Сентябрь 05, 2011, 14:30



Название: Локализация pop-up меню у QPlainTextEdit
Отправлено: v1ctor от Сентябрь 05, 2011, 14:30
Подскажите, пожалуйста, как локализовать?

Pop-up меню QLineEdit перевел так:

Код:
<context>
    <name>QLineEdit</name>
    <message>
        <source>Cu&amp;t</source>
        <translation>切り取り(&amp;T)</translation>
    </message>
    <message>
        <source>&amp;Copy</source>
        <translation>コピー(&amp;C)</translation>
    </message>
    <message>
        <source>&amp;Redo</source>
        <translation>やり直す(&amp;R)</translation>
    </message>
    <message>
        <source>&amp;Undo</source>
        <translation>元に戻す(&amp;U)</translation>
    </message>
    <message>
        <source>&amp;Paste</source>
        <translation>貼り付け(&amp;P)</translation>
    </message>
    <message>
        <source>Delete</source>
        <translation>削除</translation>
    </message>
    <message>
        <source>Select All</source>
        <translation>すべてを選択</translation>
    </message>
</context>


все работает. А вот для QPlainTextEdit - не получается. И примера найти не могу...



Название: Re: Локализация pop-up меню у QPlainTextEdit
Отправлено: kambala от Сентябрь 05, 2011, 16:15
по-моему достаточно просто загрузить файл переводов Qt в приложение - самому не нужно этого прописывать. например это будет QTDIR\translations\qt_ja.qm для японского языка.


Название: Re: Локализация pop-up меню у QPlainTextEdit
Отправлено: v1ctor от Сентябрь 05, 2011, 17:00
Собственно я так и пытаюсь делать.
А где то можно взять готовый файл .qm с переводами? В том что я взял в директории Qt отсутствует перевод QPlainTextEdit


Название: Re: Локализация pop-up меню у QPlainTextEdit
Отправлено: lit-uriy от Сентябрь 05, 2011, 18:43
>> В том что я взял в директории Qt отсутствует перевод QPlainTextEdit
ну возьми да переведи сам. (в ts-файле)


Название: Re: Локализация pop-up меню у QPlainTextEdit
Отправлено: kambala от Сентябрь 05, 2011, 19:33
там сами строки для QPlainTextEdit отсутствуют, а не только их перевод (как собственно и для QTextEdit). скорее всего там используются стандартные из подлежащей ОС.


Название: Re: Локализация pop-up меню у QPlainTextEdit
Отправлено: lit-uriy от Сентябрь 06, 2011, 06:03
В файле %QTDIR%\src\gui\text\qtextcontrol.cpp
есть функция
QMenu *QTextControl::createStandardContextMenu(const QPointF &pos, QWidget *parent)
в ней создаётся контекстное меню для текстовых виджетов, все необходимые tr-ки присутсвуют.
Следовательно переводите контекст QTextControl


Название: Re: Локализация pop-up меню у QPlainTextEdit
Отправлено: v1ctor от Сентябрь 06, 2011, 09:22
>> В том что я взял в директории Qt отсутствует перевод QPlainTextEdit
ну возьми да переведи сам. (в ts-файле)

Я и пытаюсь сам перевести.  :)

там сами строки для QPlainTextEdit отсутствуют, а не только их перевод (как собственно и для QTextEdit). скорее всего там используются стандартные из подлежащей ОС.

Да, в этом то и проблема.

В файле %QTDIR%\src\gui\text\qtextcontrol.cpp
есть функция
QMenu *QTextControl::createStandardContextMenu(const QPointF &pos, QWidget *parent)
в ней создаётся контекстное меню для текстовых виджетов, все необходимые tr-ки присутсвуют.
Следовательно переводите контекст QTextControl

Спасибо! Сейчас попробую. Отпишусь о результатах.


Название: Re: Локализация pop-up меню у QPlainTextEdit
Отправлено: v1ctor от Сентябрь 06, 2011, 10:32
QPlainTextEdit не наследует QTextControl. :(

А вобще разработчики Qt в исходниках ясно написали: хотите юзать не стандартное контекстное меню у QPlainTextEdit - реализуйте сами.

Спасибо всем.


Название: Re: Локализация pop-up меню у QPlainTextEdit
Отправлено: lit-uriy от Сентябрь 06, 2011, 19:43
>>QPlainTextEdit не наследует QTextControl.
Я об этом и не говорил, я говорил, что QPlainTextEdit пользуется соответствующей функцией, чтобы создать меню.
Из асистента/исходников:
Цитировать
void QPlainTextEdit::contextMenuEvent(QContextMenuEvent *event)
Shows the standard context menu created with createStandardContextMenu().
...
смотрим QPlainTextEdit::createStandardContextMenu:
Код
C++ (Qt)
QMenu *QPlainTextEdit::createStandardContextMenu()
{
   Q_D(QPlainTextEdit);
   return d->control->createStandardContextMenu(QPointF(), this);
}
Где d->control - QTextControl

>> хотите юзать не стандартное контекстное меню у QPlainTextEdit
А при чём здесь не стандартное, речь ведь шла о переводе пунктов меню


Название: Re: Локализация pop-up меню у QPlainTextEdit
Отправлено: v1ctor от Сентябрь 07, 2011, 16:50
Если все так как вы сказали то это очень странно. Проблему это не фиксит  :(