Call the LanguageGetMagic hook only once (per language object)
[lhc/web/wiklou.git] / languages / LanguageCs.php
index b807257..0265c6f 100644 (file)
@@ -11,9 +11,8 @@ require_once( 'LanguageUtf8.php' );
 # Yucky hardcoding hack
 switch( $wgMetaNamespace ) {
 case 'Wikipedie':
+case 'Wikipedia':
        $wgUserNamespace = 'Wikipedista'; break;
-case 'Wikcionář':
-       $wgUserNamespace = 'Wikcionarista'; break;
 default:
        $wgUserNamespace = 'Uživatel';
 }
@@ -57,51 +56,50 @@ default:
     'Státní technická knihovna' => 'http://www.stk.cz/cgi-bin/dflex/CZE/STK/BROWSE?A=01&V=$1'
 ) + $wgBookstoreListEn;
 
-
 # Note to translators:
 #   Please include the English words as synonyms.  This allows people
 #   from other wikis to contribute more easily.
 #
 # Nepoužívá se, pro používání je třeba povolit getMagicWords dole v LanguageCs.
-#/* private */ $wgMagicWordsCs = array(
+/* private */ $wgMagicWordsCs = array(
 ##   ID                                 CASE  SYNONYMS
-#    MAG_REDIRECT             => array( 0,    '#redirect',        '#přesměruj'     ),
-#    MAG_NOTOC                => array( 0,    '__NOTOC__',        '__BEZOBSAHU__'  ),
-#    MAG_FORCETOC             => array( 0,    '__FORCETOC__',     '__VŽDYOBSAH__'  ),
-#    MAG_TOC                  => array( 0,    '__TOC__',          '__OBSAH__'      ),
-#    MAG_NOEDITSECTION        => array( 0,    '__NOEDITSECTION__', '__BEZEDITOVATČÁST__' ),
-#    MAG_START                => array( 0,    '__START__',        '__ZAČÁTEK__'        ),
-#    MAG_CURRENTMONTH         => array( 1,    'CURRENTMONTH',     'AKTUÁLNÍMĚSÍC'      ),
-#    MAG_CURRENTMONTHNAME     => array( 1,    'CURRENTMONTHNAME', 'AKTUÁLNÍMĚSÍCJMÉNO' ),
-#      MAG_CURRENTMONTHNAMEGEN  => array( 1,    'CURRENTMONTHNAMEGEN', 'AKTUÁLNÍMĚSÍCGEN' ),
-##     MAG_CURRENTMONTHABBREV   => array( 1,    'CURRENTMONTHABBREV' 'AKTUÁLNÍMĚSÍCZKR'  ),
-#      MAG_CURRENTDAY           => array( 1,    'CURRENTDAY',       'AKTUÁLNÍDEN' ),
-#    MAG_CURRENTDAYNAME       => array( 1,    'CURRENTDAYNAME',   'AKTUÁLNÍDENJMÉNO'   ),
-#    MAG_CURRENTYEAR          => array( 1,    'CURRENTYEAR',      'AKTUÁLNÍROK'        ),
-#    MAG_CURRENTTIME          => array( 1,    'CURRENTTIME',      'AKTUÁLNÍČAS'        ),
-#    MAG_NUMBEROFARTICLES     => array( 1,    'NUMBEROFARTICLES', 'POČETČLÁNKŮ'        ),
-#    MAG_PAGENAME             => array( 1,    'PAGENAME',         'NÁZEVSTRANY'        ),
-#      MAG_PAGENAMEE                    => array( 1,    'PAGENAMEE',        'NÁZEVSTRANYE'       ),
-#      MAG_NAMESPACE            => array( 1,    'NAMESPACE',        'JMENNÝPROSTOR'      ),
-#      MAG_MSG                  => array( 0,    'MSG:'                   ),
-#      MAG_SUBST                => array( 0,    'SUBST:',           'VLOŽIT:'            ),
-#    MAG_MSGNW                => array( 0,    'MSGNW:',           'VLOŽITNW:'          ),
-#      MAG_END                  => array( 0,    '__END__',          '__KONEC__'          ),
-#    MAG_IMG_THUMBNAIL        => array( 1,    'thumbnail', 'thumb', 'náhled'           ),
-#    MAG_IMG_RIGHT            => array( 1,    'right',            'vpravo'             ),
-#    MAG_IMG_LEFT             => array( 1,    'left',             'vlevo'              ),
-#    MAG_IMG_NONE             => array( 1,    'none',             'žádné'              ),
-#    MAG_IMG_WIDTH            => array( 1,    '$1px'                   ),
-#    MAG_IMG_CENTER           => array( 1,    'center', 'centre', 'střed'              ),
-#    MAG_IMG_FRAMED             => array( 1,    'framed', 'enframed', 'frame', 'rám'     ),
-#    MAG_INT                  => array( 0,    'INT:'                   ),
-#    MAG_SITENAME             => array( 1,    'SITENAME',         'NÁZEVSERVERU'       ),
-#    MAG_NS                   => array( 0,    'NS:'                    ),
-#      MAG_LOCALURL             => array( 0,    'LOCALURL:',        'MÍSTNÍURL:'         ),
-#      MAG_LOCALURLE            => array( 0,    'LOCALURLE:',       'MÍSTNÍURLE:'        ),
-#      MAG_SERVER               => array( 0,    'SERVER'                 ),
-##     MAG_REVISIONID           => array( 1,    'REVISIONID',       'IDREVIZE'           )
-#);
+       MAG_REDIRECT             => array( 0,    '#REDIRECT',        '#PŘESMĚRUJ'     ),
+       MAG_NOTOC                => array( 0,    '__NOTOC__',        '__BEZOBSAHU__'  ),
+       MAG_FORCETOC             => array( 0,    '__FORCETOC__',     '__VŽDYOBSAH__'  ),
+       MAG_TOC                  => array( 0,    '__TOC__',          '__OBSAH__'      ),
+       MAG_NOEDITSECTION        => array( 0,    '__NOEDITSECTION__', '__BEZEDITOVATČÁST__' ),
+       MAG_START                => array( 0,    '__START__',        '__ZAČÁTEK__'        ),
+       MAG_CURRENTMONTH         => array( 1,    'CURRENTMONTH',     'AKTUÁLNÍMĚSÍC'      ),
+       MAG_CURRENTMONTHNAME     => array( 1,    'CURRENTMONTHNAME', 'AKTUÁLNÍMĚSÍCJMÉNO' ),
+       MAG_CURRENTMONTHNAMEGEN  => array( 1,    'CURRENTMONTHNAMEGEN', 'AKTUÁLNÍMĚSÍCGEN' ),
+#      MAG_CURRENTMONTHABBREV   => array( 1,    'CURRENTMONTHABBREV' 'AKTUÁLNÍMĚSÍCZKR'  ),
+       MAG_CURRENTDAY           => array( 1,    'CURRENTDAY',       'AKTUÁLNÍDEN' ),
+       MAG_CURRENTDAYNAME       => array( 1,    'CURRENTDAYNAME',   'AKTUÁLNÍDENJMÉNO'   ),
+       MAG_CURRENTYEAR          => array( 1,    'CURRENTYEAR',      'AKTUÁLNÍROK'        ),
+       MAG_CURRENTTIME          => array( 1,    'CURRENTTIME',      'AKTUÁLNÍČAS'        ),
+       MAG_NUMBEROFARTICLES     => array( 1,    'NUMBEROFARTICLES', 'POČETČLÁNKŮ'        ),
+       MAG_PAGENAME             => array( 1,    'PAGENAME',         'NÁZEVSTRANY'        ),
+       MAG_PAGENAMEE                    => array( 1,    'PAGENAMEE',        'NÁZEVSTRANYE'       ),
+       MAG_NAMESPACE            => array( 1,    'NAMESPACE',        'JMENNÝPROSTOR'      ),
+       MAG_MSG                  => array( 0,    'MSG:'                   ),
+       MAG_SUBST                => array( 0,    'SUBST:',           'VLOŽIT:'            ),
+       MAG_MSGNW                => array( 0,    'MSGNW:',           'VLOŽITNW:'          ),
+       MAG_END                  => array( 0,    '__END__',          '__KONEC__'          ),
+       MAG_IMG_THUMBNAIL        => array( 1,    'thumbnail', 'thumb', 'náhled'           ),
+       MAG_IMG_RIGHT            => array( 1,    'right',            'vpravo'             ),
+       MAG_IMG_LEFT             => array( 1,    'left',             'vlevo'              ),
+       MAG_IMG_NONE             => array( 1,    'none',             'žádné'              ),
+       MAG_IMG_WIDTH            => array( 1,    '$1px'                   ),
+       MAG_IMG_CENTER           => array( 1,    'center', 'centre', 'střed'              ),
+       MAG_IMG_FRAMED           => array( 1,    'framed', 'enframed', 'frame', 'rám'     ),
+       MAG_INT                  => array( 0,    'INT:'                   ),
+       MAG_SITENAME             => array( 1,    'SITENAME',         'NÁZEVSERVERU'       ),
+       MAG_NS                   => array( 0,    'NS:'                    ),
+       MAG_LOCALURL             => array( 0,    'LOCALURL:',        'MÍSTNÍURL:'         ),
+       MAG_LOCALURLE            => array( 0,    'LOCALURLE:',       'MÍSTNÍURLE:'        ),
+       MAG_SERVER               => array( 0,    'SERVER'                 ),
+       MAG_REVISIONID           => array( 1,    'REVISIONID',       'IDREVIZE'           )
+);
 
 if (!$wgCachedMessageArrays) {
        require_once('MessagesCs.php');
@@ -142,8 +140,16 @@ class LanguageCs extends LanguageUtf8 {
                return $wgSkinNamesCs;
        }
 
-       # Datové a časové funkce možno upřesnit podle jazyka
-       # TODO: Umožnit nastavování formátu data a času.
+       function getMonthNameGen( $key ) {
+               #TODO: převést na return $this->convertGrammar( $this->getMonthName( $key ), '2sg' );
+               global $wgMonthNamesGenEn, $wgContLang;
+               // see who called us and use the correct message function
+               if( get_class( $wgContLang->getLangObj() ) == get_class( $this ) )
+                       return wfMsgForContent( $wgMonthNamesGenEn[$key-1] );
+               else
+                       return wfMsg( $wgMonthNamesGenEn[$key-1] );
+       }
+
        function formatMonth( $month, $format ) {
                return intval( $month ) . '.';
        }
@@ -166,7 +172,6 @@ class LanguageCs extends LanguageUtf8 {
        }
 
        function checkTitleEncoding( $s ) {
-               global $wgInputEncoding;
 
                # Check for non-UTF-8 URLs; assume they are WinLatin2
                $ishigh = preg_match( '/[\x80-\xff]/', $s);
@@ -175,70 +180,86 @@ class LanguageCs extends LanguageUtf8 {
 
                if( $ishigh and !$isutf ) {
                        return iconv( 'cp1250', 'utf-8', $s );
-       }
+               }
 
                return $s;
        }
 
-       var $digitTransTable = array(
-                       ',' => "\xc2\xa0", // @bug 2749
-                       '.' => ','
-       );
-
-       function formatNum( $number, $year = false ) {
-               return $year ? $number : strtr($this->commafy($number), $this->digitTransTable);
+       function separatorTransformTable() {
+               return array(',' => "\xc2\xa0", '.' => ',' );
        }
 
-               # Grammatical transformations, needed for inflected languages
-               # Invoked by putting {{grammar:case|word}} in a message
-               function convertGrammar( $word, $case ) {
-                       # allowed values for $case:
-                       #       1sg, 2sg, ..., 7sg -- nominative, genitive, ... (in singular)
-                       switch ( $word ) {
-                               case 'Wikipedia':
-                               case 'Wikipedie':
-                                       switch ( $case ) {
-                                               case '3sg':
-                                               case '4sg':
-                                               case '6sg':
-                                                       return 'Wikipedii';
-                                               case '7sg':
-                                                       return 'Wikipedií';
-                                               default:
-                                                       return 'Wikipedie';
-                                       }
-
-                               case 'Wiktionary':
-                               case 'Wikcionář':
-                                       switch ( $case ) {
-                                               case '2sg':
-                                                       return 'Wikcionáře';
-                                               case '3sg':
-                                               case '5sg';
-                                               case '6sg';
-                                                       return 'Wikcionáři';
-                                               case '7sg':
-                                                       return 'Wikcionářem';
-                                               default:
-                                                       return 'Wikcionář';
-                                       }
-
-                               case 'Wikiquote':
-                               case 'Wikicitáty':
-                                       switch ( $case ) {
-                                               case '2sg':
-                                                       return 'Wikicitátů';
-                                               case '3sg':
-                                                       return 'Wikicitátům';
-                                               case '6sg';
-                                                       return 'Wikicitátech';
-                                               default:
-                                                       return 'Wikicitáty';
-                                       }
-                       }
-                       # unknown
-                       return $word;
+       # Grammatical transformations, needed for inflected languages
+       # Invoked by putting {{grammar:case|word}} in a message
+       function convertGrammar( $word, $case ) {
+               global $wgGrammarForms;
+               if ( isset($wgGrammarForms['cs'][$case][$word]) ) {
+                       return $wgGrammarForms['cs'][$case][$word];
                }
+               # allowed values for $case:
+               #       1sg, 2sg, ..., 7sg -- nominative, genitive, ... (in singular)
+               switch ( $word ) {
+                       case 'Wikipedia':
+                       case 'Wikipedie':
+                               switch ( $case ) {
+                                       case '3sg':
+                                       case '4sg':
+                                       case '6sg':
+                                               return 'Wikipedii';
+                                       case '7sg':
+                                               return 'Wikipedií';
+                                       default:
+                                               return 'Wikipedie';
+                               }
+
+                       case 'Wiktionary':
+                       case 'Wikcionář':
+                               switch ( $case ) {
+                                       case '2sg':
+                                               return 'Wikcionáře';
+                                       case '3sg':
+                                       case '5sg';
+                                       case '6sg';
+                                               return 'Wikcionáři';
+                                       case '7sg':
+                                               return 'Wikcionářem';
+                                       default:
+                                               return 'Wikcionář';
+                               }
+
+                       case 'Wikiquote':
+                       case 'Wikicitáty':
+                               switch ( $case ) {
+                                       case '2sg':
+                                               return 'Wikicitátů';
+                                       case '3sg':
+                                               return 'Wikicitátům';
+                                       case '6sg';
+                                               return 'Wikicitátech';
+                                       default:
+                                               return 'Wikicitáty';
+                               }
+               }
+               # unknown
+               return $word;
+       }
+
+  # Plural form transformations, needed for some languages.
+  # Invoked by {{plural:count|wordform1|wordform2|wordform3}}
+  function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
+    switch ( $count ) {
+      case 1:
+        return $wordform1;
+
+      case 2:
+      case 3:
+      case 4:
+        return $wordform2;
+
+      default:
+        return $wordform3;
+    };
+  }
 }
 
 ?>