Page 1 of 1

Lokalizace pluginů - skloňování podle číslovky

Posted: 30 Jul 2008, 17:59
by zarevak
Dobrý den,
pohrávám si s lokalizací pro rozepsaný Salamandeří plugin a narazil jsem na drobný problém: Skloňování podle číslovky

Japonština: 0 ファイル, 1 ファイル, 2 ファイル, ... :arrow: 1 tvar
Angličtina: 0 files, 1 file, 2 files, ... :arrow: 2 tvary
Čeština: 0 souborů, 1 soubor, 2 soubory, 5 souborů, 21 soubor, ... :arrow: 3 tvary

Podle stránky http://dev.eiffel.com/Internationalization/plural_forms existuje minimálně 9 různých způsobů, jak se různé tvary přiřazují k číslovkám.

Bohužel Salamandeří SLG soubory s jazyky jsou knihovny obsahující pouze lokalizované resource, které těžko ovlivní své chování. Jak toto řešit? Mohu do SLG souboru přidat kód pro skloňování, ale tak nebude zachována jednoduchost překladu.

Posted: 30 Jul 2008, 20:04
by manison
K tomuto účelu poskytuje Salamander metodu CSalamanderGeneralAbstract::ExpandPluralString, jako parametr je formátovací řetězec a číselné hodnoty, které slouží pro expanzi řetězce.

Např. pro češtinu bude formátovací řetězec vypadat následovně:
{!}%d soubo{rů|0|r|1|ry|4|rů}

pro angličtinu
{!}%d file{s|0||1|s}

atd.

Takto vám bude stačit v SLG resourcech jeden řetězec.

Pro více informací koukněte do hlavičkového souboru spl_gen.h na komentář k metodě ExpandPluralString a/nebo do zdrojáků demo pluginu.

Posted: 30 Jul 2008, 20:58
by zarevak
Wow, děkuji! Koukám, že Altap myslel na (skoro) všechno ;)

Jestli tomu dobře rozumím, tak to však neumí řešit skloňování podle konců čísel - tedy 21 soubor. Je pravda, že toto se v češtině už skoro nepoužívá, ale nevím, jak je tomu v ostatních jazycích...

Posted: 30 Jul 2008, 21:13
by Jan Rysavy
Pokud na to narazíme, snad vymyslíme, jak zápis rozšířit při zachování zpětné kompatibility.

Jazyky do kterých byl lokalizován Salamander 1.52 by toto mělo pokrývat.

Posted: 12 Mar 2009, 20:57
by zarevak
Jen pro doplnění:

Čeština už tvary "21 soubor" moc nepoužívá a využívá z programovacího hlediska jednoduší tvar "21 souborů".

- Jazyková poradna ÚJČ AV ČR: FAQ - "dvě stě jeden člověk – dvě stě jedna lidí"

Posted: 14 Mar 2009, 01:45
by fenghuang
zarevak wrote:Jen pro doplnění:

Čeština už tvary "21 soubor" moc nepoužívá a využívá z programovacího hlediska jednoduší tvar "21 souborů".
Zdravím, doufám že se trochu mýlíte, protože ve Vámi uvedeném příkladě jde o rozdíl mezi jednotným a množným číslem. Ale neznám souvislosti, takže budu mlčet :) . (Příklad: "Byl nalezen 21 soubor." versus "Bylo nalezeno 21 souborů".) Resp. v tom odkazu jde o něco jiného, skutečně nepřirozeného, co mělo být změněno už mnohem dřív. Celé bych to napsal miniaturním písmem, kdybych věděl jak.

Možná že mi ale něco dost podstatného uniklo. :)

Posted: 14 Mar 2009, 06:18
by Jan Rysavy
fenghuang wrote:Zdravím, doufám že se trochu mýlíte, protože ve Vámi uvedeném příkladě jde o rozdíl mezi jednotným a množným číslem. Ale neznám souvislosti, takže budu mlčet :) . (Příklad: "Byl nalezen 21 soubor." versus "Bylo nalezeno 21 souborů".) Resp. v tom odkazu jde o něco jiného, skutečně nepřirozeného, co mělo být změněno už mnohem dřív. Celé bych to napsal miniaturním písmem, kdybych věděl jak.

Možná že mi ale něco dost podstatného uniklo. :)
Co kdybyste uvedl nějaké zdroje a podložil svá tvrzení?

Článek ÚJČ AV ČR tady myslím mluví dost jasně a navíc se to shoduje s běžně používanou češtinou.

Re: Lokalizace pluginů - skloňování podle číslovky

Posted: 07 Apr 2009, 09:44
by zarevak
Projekt OpenTTD právě přešel v revizi 15965 na nové jednoduší tvary množných čísel češtiny ;)

Pro zájemce kdyžtak funkce DeterminePluralForm(..) v souboru /src/strings.cpp

Re: Lokalizace pluginů - skloňování podle číslovky

Posted: 07 Apr 2009, 10:48
by Jan Rysavy
To vypadá našroubované natvrdo do kódu. Asi pro nás nic zajímavého?

Re:

Posted: 09 Apr 2009, 07:06
by fenghuang
Jan Rysavy wrote:
fenghuang wrote:Zdravím, doufám že se trochu mýlíte, protože ve Vámi uvedeném příkladě jde o rozdíl mezi jednotným a množným číslem. Ale neznám souvislosti, takže budu mlčet :) . (Příklad: "Byl nalezen 21 soubor." versus "Bylo nalezeno 21 souborů".) Resp. v tom odkazu jde o něco jiného, skutečně nepřirozeného, co mělo být změněno už mnohem dřív. Celé bych to napsal miniaturním písmem, kdybych věděl jak.

Možná že mi ale něco dost podstatného uniklo. :)
Co kdybyste uvedl nějaké zdroje a podložil svá tvrzení?

Článek ÚJČ AV ČR tady myslím mluví dost jasně a navíc se to shoduje s běžně používanou češtinou.
Tady není co řešit, žádné další zdroje nejsou třeba. Odkaz který uvedl zarevak říká, že mimo stupidního konstatování "máme dvacet a jeden soubor" je v moderní češtině povoleno i tvrzení že "máme dvacet jedna souborů". Stanovisko ÚJČ AV ČR v tomto případě vůbec není podstatné. Desítky nebo stovky, tisíce, milióny, miliardy... to je přece úplně jedno.

Jde asi o nějaké nedorozumění. A hlavně se to vůbec netýká AS.