[Gnu] Нови латинични локалитет?

Данило Шеган danilo на kvota.net
Пон Јун 11 12:36:56 CEST 2007


Данас у 12:00, Часлав Илић написа:

>> [: Данило Шеган :]
>> Конкретно, .desktop датотеке се преводе аутоматски користећи gettext
>> позиве (измењена је gnome-desktop библиотека ради овога, вероватно и КДЕ
>> еквивалент који год да је), а остале се не допуњавају језичким пакетима.
>
> Ух, овај, КДЕ не ради то. Али ми није баш најјасније како то иде динамички —
> gnome-desktop.pot садржи „све“ ниске из десктоп датотека? Ако је тако,
> колико је тачно то „све“? И шта са другим читачима десктоп датотека, који
> очекују да се у њима налазе сви језици (као овај у КДЕу)? (Односно, то би
> био општи проблем са унакрсно коришћеним изворима превода, преко граница
> одређеног програма којем изворно припадају).

Не, не, ниси ме разумео.  gnome-desktop садржи libgnome-desktop,
библиотеку која служи за читање .desktop датотека.

A Убунту смешта домен у .desktop датотеке, и мења ову библиотеку да
директно позове dgettext(domen, tekst) уместо да ишчита из саме
датотеке.  По мом мишљењу врло фалично (и прилично сам сигуран да на
много места ради неочекивано), али то је давно тако урађено.

>> Мој предлог (уз закрпу за intltool да то омогући) ту је да се на систем
>> инсталирају *и* .xml.in, .schema.in, .desktop.in... датотеке, а да се
>> затим регенеришу користећи intltool-merge и све инсталиране MO датотеке
>> (што би иницирали и језички пакети у својим postinst правилима).
>
> Лудо, овај, лудо ко̑ фока у савани. Кад сам ја био тупио око независних
> језичких пакета, исто ми је мање-више такво решење пало на памет, да сам чак
> био направио и некакво мало програмче,
> http://lists.kde.org/?l=kde-i18n-doc&m=106519489923645&w=2 (само ради
> историјске перспективе :)

Хехе, да, да — са .desktop је лако могуће и директно, како вероватно и
твоје програмче ради, али у Гному имамо и гомилу других фајлова са
којима је то немогуће извести, па је зато овакво циркусантисање
неопходно :)

> Један глуп проблем што ми је тада пао на памет: инсталирају се неки
> програми, затим се инсталира језички пакет који на лицу места стопи њихове
> статичне *.in датотеке, а *затим* се инсталирају још неки програми који
> такође имају своје *.in? Да ли би можда не само језички пакет, већ и
> поједини пакети програма при инсталацији требало да изведу стапање својих
> датотека?

Да, наравно, но то је некако природно, пошто и да нема ниједне језичке
подршке на систему, *.in датотека се мора провући кроз intltool да би
се добила одговарајућа * датотека ;)

То значи да се уклањају нпр. оне _ ознаке из XML ознака, као и из
.desktop фајлова.

> Можда да постоји некакав глобални програм, назовимо га Стопко, који се
> инсталира безусловно у свакој дистрибуцији, а који се призива по инсталацији
> било чега, и тражи све, рецимо, *.mergetrans датотеке у управо инсталираном
> пакету, и покушава да их стопи са постојећим МОовима? Конкретни језички
> пакети би могли посебно наредити Стопку да изврши поновно стапање свих
> *.mergetrans датотека са списка који носе у себи, а које су инсталиране на
> систему (ако се такав списак може водити, требало би)? Ти спискови се такође
> могу инсталирати, тако да при накнадној инсталацији произвољног програмског
> пакета, Стопко не мора да чепрка по свим МОовима, већ нађе у тим списковима
> који МОови пружају превод за дату *.mergetrans датотеку. (Стопко би такође
> могао да ради и пресловљавање писама при стапању, тако да сав превод буде
> покривен тиме. Ма могао би чак и саме пресловљене МОове да прави, да се
> потпуно избегне прчкање са Геттекстом/либцом.)

Овако некако сам замислио да изменим управо intltool да подржава баш
то.  Тамо негде у коментарима помињем баш такав начин рада (и навођење
домена, пошто тамо понуђена закрпа омогућава читање МОова уместо
ПОова, а параметар за домен је недостајући да то заправо убацим у CVS;
да је било која дистрибуција изразила интересовање, потрудио бих се,
овако се не журим).

Практично, ја сам тамо предложио истоветан поступак:

  1. пакет зна који му домени требају за његове .in (.mergetrans)
     датотеке, и то убацује у такав списак на систему
  2. пакет при инсталацији позива
     intltool-merge --localepath=/usr/share/locale --domain=BLABLA --mode=INTLTOOLMODE file.in file
     за све фајлове из „себе“, и то из свог postinst правила
  3. језички пакети освежавају све фајлове (због овога нам је
     неопходан списак)

На дистрибуцији је да одлучи како ће да држи те спискове, и где ће да
чува .in фајлове, али сва машинерија би била ту.

>> Нове ПОТ датотеке се генеришу са сваком изменом изворног пакета, то се
>> шаље на Розету, и ту се онда обезбеђује све што треба. Пошто су очекивања
>> да када узмеш новији језички пакет, истовремено освежиш и систем [...]
>
> Хм, онда ја тебе можда нисам разумео баш најбоље кад кажеш:
>
>> Ваљало би натерати све дистрибуције да почну да испоручују језичке пакете,
>> зато што се онда преводи могу лакше допуњавати независно од развоја
>> програма [...]
>
> што сам схватио као то да превод може бити допуњен после издања програма, и
> језички пакет испоручен са ажурираном верзијом превода једног те истог
> издања програма? Ту сам онда имао у виду онај проблем узводно, јер тамо ће
> преводиоци потпуно баталити то конкретно издање програма, и прећи на
> развојни ПОТ.

Мислио сам да циљаш на гранични случај који није добро подржан.
Заправо се дешава ово:

 1. Увезе се пакет у Убунту нпр. нешто-1.0.тар.гз, генерише се ПОТ и
    он се заједно са преводима пошаље у Розету
 2. Преводиоци преводе нешто-1.0 у Розети
 3. Стигне нешто-1.0.1.тар.гз у Убунту, генерише се ПОТ и заједно са
    преводима из .тар.гз се опет пошаље у Розету, која пази да не
    пресними преводе урађене у кораку 2
 4. Преводиоци наставе да раде, али сада на нешто-1.0.1
 5. Језички пакети се могу генерисати у сваком тренутку, и они ће
    садржати све што је учињено у Розети, од пакета до пакета — у
    Убунту се не увозе развојна издања (тј. из нпр. SVN-а), већ само
    пакети, тако да постоји дискретан број могућих ПОТ датотека, а од
    тога је подржана само она последња, пошто се подразумева да
    инсталираш и најновији пакет ако узмеш и најновији језички пакет.
    Примедба о сталном освежавању језичког пакета укључује измене
    сачињене у корацима 2 и 4.

> Моја идеја је била да буду прављени посебни интегрисани ПОТови, који у себи
> стапају ПОТове више претходних издања програма, рецимо годину дана у назад
> (уз одговарајуће #. коментаре који ће пратити ситуацију).
>
> http://lists.kde.org/?l=kde-i18n-doc&m=106138836617469&w=2

Значи ипак сам схватио нашта циљаш — то је тај гранични случај. ;)

То има веома много смисла, али је и мало напорно за нове преводиоце,
нарочито док *неке важне* дистрибуције не почну да испоручују освежене
језичке пакете бар годину дана за стара издања дистрибуција.

Просто, стара издања Убунтуа не добијају освежене пакете (осим за
сигурносне исправке), па се ПОТ не мења, али се освежавају језички
пакети (мада, из Розете, не из самих извора).  Ту настаје својеврстан
проблем неусклађености Розете са изворима, али то је већ друга ствар.

Ипак, у пракси ово даје резултат да ти заиста добијаш честе допуне
језичких пакета и за старе системе, али је искључиво везано за Розету
и Убунту.

> Тада језички пакети могу бити уистину независни од програма (посебно ако се
> у игру уведе и Стопко), односно на преводилачким тимовима (или
> координаторима за веће пројекте) би било да објављују нова издања превода,
> већ по динамици коју сами одреде.

Тачно, само што је проблем то интегрисати у постојећу инфраструктуру —
Убунту се за сада посветио Космодрому (Launchpad :) за преводе и
допуне овог типа, мада је у плану ускоро развити синхронизацију са
узводним стаблима изворног кода, тако да ће имати предности оба
света.

> Ово би можда допринело и успостављању скупних преводилачких подухвата, поред
> садашњих КДЕа, Гнома, и ТПа, где би сваки издавао тачно један језички пакет
> по језику. Они би међусобно водили рачуна да не преплићу програме које
> покривају, а на одржаваоцима програма би било да се одлуче чије ће услуге
> користити. (Опет ја размишљам о Јупитеру а да ни на Марс још стигао
> нисам...)

Видиш, занимљиво размишљаш: Убунту има неколико језичких пакета за
сваки језик:

понедељак, 12:30 : danilo на smorisa : ~
$ apt-cache search language |grep sr
language-pack-gnome-sr-base - GNOME translations for language Serbian
language-pack-kde-sr-base - KDE translations for language Serbian
language-pack-sr-base - translations for language Serbian
language-support-sr - metapackage for Serbian language support
openoffice.org-l10n-sr-cs - Serbian language package for OpenOffice.org
...

;)

Овај language-support-sr пакет такође инсталира и локалитете и може
зависити од одговарајућих фонтова.  language-sr-base садржи „све
остале“ преводе (не-Гном, не-КДЕ, не-ООо, не-Фајрфокс).

Уздр,
Данило


Више информација о листи слања Gnu