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

Podpora vývojářů nových pluginů, oznámení o nových pluginech nezávislých autorů a diskuse o nich.
User avatar
zarevak
Plugin Developer
Plugin Developer
Posts: 789
Joined: 04 Feb 2006, 16:49
Location: Prague, Czech Republic

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

Post 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.
manison
Plugin Developer
Plugin Developer
Posts: 216
Joined: 09 Dec 2005, 23:23
Location: Ceske Budejovice, Czech Republic
Contact:

Post 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.
User avatar
zarevak
Plugin Developer
Plugin Developer
Posts: 789
Joined: 04 Feb 2006, 16:49
Location: Prague, Czech Republic

Post 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...
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post 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.
User avatar
zarevak
Plugin Developer
Plugin Developer
Posts: 789
Joined: 04 Feb 2006, 16:49
Location: Prague, Czech Republic

Post 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í"
fenghuang
Posts: 20
Joined: 19 Jan 2009, 15:03

Post 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. :)
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post 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.
User avatar
zarevak
Plugin Developer
Plugin Developer
Posts: 789
Joined: 04 Feb 2006, 16:49
Location: Prague, Czech Republic

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

Post 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
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

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

Post by Jan Rysavy »

To vypadá našroubované natvrdo do kódu. Asi pro nás nic zajímavého?
fenghuang
Posts: 20
Joined: 19 Jan 2009, 15:03

Re:

Post 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.
Post Reply