[kde-russian] Странного хочется

Alexander Potashev aspotashev на gmail.com
Сб Июл 24 08:36:20 UTC 2010


24 июля 2010 г. 11:50 пользователь Alexander Wolf
<alex.v.wolf at gmail.com> написал:
> 24 июля 2010 г. 13:10 пользователь Yuri Chornoivan <yurchor at ukr.net> написал:
>> Можно. С помощью Transcript. Я так делал для KGeography. Всё работает
>> довольно хорошо.
>> Но было бы легче объяснить как, если бы были примеры. ;)
>
> Тогда конкретный пример из KStars.
>
> В калькуляторе есть модуль "Солнечная система" в котором можно
> производить расчеты обстоятельств соединений и противостояний. Сейчас
> там диалог такой:
>
> Показать соединения/противостояние для: ${кнопка выбора местоположения
> с текущим местоположением по умолчанию}
> Начиная с: ${дата и время}
> Заканчива в: ${дата и время}
> Между объектами: ${кнопка поиска объекта} и ${выпадающий список с
> объектами Солнечной системы}
> Максимально допустимое расстояние: ${угловое расстояние}
>
> Там дальше еще текст, но он для этого примера уже не важен. В
> выпадающем списке объекты именуются в именительном падеже
> единственного числа, как это принято в английском языке. Например для
> расчета возможности соединения Венеры и Солнца за определенный
> промежуток времени строка будет иметь такой вид: "Между объектами:
> Венера и Солнце".
>
> А хотелось бы "Между Венерой и Солнцем" - этот вариант более
> благозвучный и более русский, чем предыдущий.

Насколько я понимаю, это потребует изменений в коде программы:
1. Чтобы можно было использовать Transcript для названия первого
объекта, нужно пропустить название этого объекта через вызов i18n().
Это нужно будет делать в файле tools/conjunctions.cpp в методе
ConjunctionsTool::slotFindObject().
2. Чтобы название второго объекта (планеты) было в правильном падеже,
Transcript можно не использовать, а вместо этого просто сделать другие
переводы для следующих строк в из файла tools/conjunctions.cpp:

    pNames[KSPlanetBase::MERCURY] = i18n("Mercury");
    pNames[KSPlanetBase::VENUS] = i18n("Venus");
    pNames[KSPlanetBase::MARS] = i18n("Mars");
    pNames[KSPlanetBase::JUPITER] = i18n("Jupiter");
    pNames[KSPlanetBase::SATURN] = i18n("Saturn");
    pNames[KSPlanetBase::URANUS] = i18n("Uranus");
    pNames[KSPlanetBase::NEPTUNE] = i18n("Neptune");
    pNames[KSPlanetBase::PLUTO] = i18n("Pluto");
    pNames[KSPlanetBase::SUN] = i18n("Sun");
    pNames[KSPlanetBase::MOON] = i18n("Moon");

Но сначала нужно "разделить" строки (например, добавить контексты),
как, например, вот эту:

#. i18n: file: tools/modcalcplanets.ui:109
#. i18n: ectx: property (text), item, widget (KComboBox, PlanetComboBox)
#. i18n: file: tools/modcalcplanets.ui:452
#. i18n: ectx: property (text), item, widget (KComboBox, PlanetComboBoxBatch)
#. i18n: file: options/opssolarsystem.ui:181
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMercury)
#: rc.cpp:2862 rc.cpp:2946 rc.cpp:5463 skymapdraw.cpp:317
#: tools/conjunctions.cpp:84 tools/ksconjunct.cpp:59
#: tools/modcalcplanets.cpp:268 tools/obslistwizard.cpp:421
#: tools/obslistwizard.cpp:435 skycomponents/skymapcomposite.cpp:385
#: skycomponents/solarsystemsinglecomponent.cpp:126
#: skyobjects/ksplanetbase.cpp:161 skyobjects/ksplanet.cpp:125
#: skyobjects/ksplanet.cpp:158 skyobjects/ksplanet.cpp:340
#: skyobjects/ksplanet.cpp:368
msgid "Mercury"
msgstr "Меркурий"


=== А нужно ли вообще все это делать? ===

> Между объектами: ${кнопка поиска объекта} и ${выпадающий список с
> объектами Солнечной системы}

На самом деле перед кнопкой поиска есть еще кнопка "Single
Object..."/"Звёзды"/..., которая разрывает законченное предложение
"Между Венерой и Солнцем". А если в результате в любом случае
получается текст на полумашинном языке, то зачем огород городить?


-- 
Alexander Potashev


Подробная информация о списке рассылки kde-russian