LINUX.ORG.RU

И снова про qt5

 ,


1

3

Вобщем, есть файлы локализации которые генерятся лупдейтом. Но у меня возникла следующая мысль.

В исходниках обычно пишется QObject::tr(«This is runglish token») где позже лупдейт находит эти токены и генерит хмл файлы для других желаемых языков.

Вопрос в том, почему токенами используется английский? Я не зря там написал, мол, рунглиш, т.к. есть фразочки такие, что написаны мной некорректно.

И вот я хочу не париться с написанием по англицки, а продолжить работу над кодом и писать ака, например для пункта меню «Файл» QObject::tr(«lang_mainmenu_file») т.е. писать действительно токены, а не рунглиш, ну а в лупдейт просить генерить еше и английский.

И делегировать задачу правильного английского тому, кто вменяемо напишет и без ошибок.

Что это дает? Отсутствие необходимости перекомпиливать приложение изза ошибок в англ тексте прямо в сорцах.

Ваше мнение — оно того стоит или какие-то минусы я не вижу?

Ну есть вариант сделать проект с русскими текстами, а потом воспользоваться моим велосипедом.

А с токенами, по-моему, это наворачивание ещё одного слоя бесполезных абстракций. Во-первых, в токене тоже можно допустить ошибку. Во-вторых, чем руководствоваться «тому, кто вменяемо напишет и без ошибок» - самими токенами, или ещё какими-то твоими пояснениями к ним? Проще переводчика с нормального русского на нормальный английский найти, если что.

hobbit ★★★★★
()

Нормальный подход

annulen ★★★★★
()

Ваше мнение — оно того стоит или какие-то минусы я не вижу?

Иногда делают так, ибо так даже лучше.

EXL ★★★★★
()
Ответ на: комментарий от hobbit

Ты считаешь правильнее начать с русского варианта приложения а уже потом англицкий сделать?

Да ну.. Как в токене ошибку можно допустить? Он же чаще короче чем его текст.

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

А я не особо вижу в этом профита. В моем варианте можно арги в токене писать и все. И не менять структуру хмл для лингвиста. Ну или я чего-то не понял.

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

Конечно не видите, ведь вы снова изобретаете велосипед.

Весь нормальный софт пишется на английском, а потом уже переводится на нужный язык.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

А потом все упирается в том что в двух местах английский текст одинаковый а требуемый русский перевод - разный. А поменять нельзя никак, ибо английские токены одинаковые.

PPP328 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Кстати, не ради оффтопа, просто интересно — получилось ли решить вопрос с быстрым сиком видео? Если да, то как?

deep-purple ★★★★★
() автор топика

Я так и делаю.

Это, помимо прочего, решает проблемы с вариантами, которые по-английски пишутся одинаково, а по-русски - разными способами. (Типа, «Удалить %1 элемент?», «Удалить %1 элемента?», «Удалить %1 элементов?»).

Beewek ★★
()
Ответ на: комментарий от Beewek

Поправка. (Невнимательно прочитал).

Я не делаю каких-то специальных токенов, а просто делаю русские тексты. А на англицкий уже делаю перевод.

Beewek ★★
()
Ответ на: комментарий от Beewek

Типа, «Удалить %1 элемент?», «Удалить %1 элемента?», «Удалить %1 элементов?»

А чё, в Qt плюрализацию не завезли?

theNamelessOne ★★★★★
()
Ответ на: комментарий от Beewek

Это, помимо прочего, решает проблемы с вариантами, которые по-английски пишутся одинаково, а по-русски - разными способами. (Типа, «Удалить %1 элемент?», «Удалить %1 элемента?», «Удалить %1 элементов?»).

Алсо, в английском тоже как минимум два варианта будет («Remove one element», «Remove %1 elements», для других фраз имеет смысл отдельно ноль выделять).

theNamelessOne ★★★★★
()
Ответ на: комментарий от RazrFalcon

Спасибо, буду знать. Но речь ведь не только про числительные. Это просто первое, что пришло в голову. Бывает, что и другие слова в английском варианте одинаковые, а в русском - нет. (Сейчас с ходу не могу придумать, но точно помню, что встречал такое).

А, ну вот, например: «Правка» (пункт меню) / «Редактировать» (название кнопки).

Beewek ★★
()
22 декабря 2017 г.

Ап.

К чему я приехал: https://s10.postimg.org/4v77f24rd/qt-language-tokens.png — это так вообще без *.qm файлов.

А вот почему я так сделал — если будет ошибка в англицкой мове, то не придется перекомпиливать. Это считаю вообще самая веская причина.

Ну и такое:

1) Все так же можно прописать плейсхолдеры для аргов «foo_bar_bazz%1%2» а уже в реальном языке расставить эти плейсхолдеры в нужных местах.

2) Нет проблем с неоднозначностью. Да, я в курсе за второй аргумент у tr() но он тупо не понадобился.

3) У каждого токена в сорцах есть для лингвиста спецкоммент «//:» на англицком (коряво как могу, зато хоть как-то понятно).

4) Прикрутил даже динамическое обновление текста у всего и вся при смене языка.

Знаю что велосипедисто, квадратноколесисто, есть касяк при полном отсутствии *.qm файлов — будет казать токены. Но, это уже проблема комплектации файлами, если их нет, то и не гарантируется нормальная работа, как и при отсутствующих либах.

deep-purple ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.