In some languages it's conventional not to insert a thousands separator in numbers that are four digits long (1000-9999). Rather than copy-paste the custom code to do this between 13 files, introduce another option and have the base Language class handle it. This also fixes an issue in several languages where this logic previously would not work for negative or fractional numbers. To implement this, a new option is added to MessagesXx.php files, `$minimumGroupingDigits = 2;`, with the meaning as defined in <http://unicode.org/reports/tr35/tr35-numbers.html>. It is a little roundabout, but it could allow us to migrate the number formatting (currently all custom code) to some generic library easily. Bug: T177846 Change-Id: Iedd8de5648cf2de1c94044918626de2f96365d48
78 lines
2 KiB
PHP
78 lines
2 KiB
PHP
<?php
|
||
/**
|
||
* Karakalpak (Qaraqalpaqsha) specific code.
|
||
*
|
||
* This program is free software; you can redistribute it and/or modify
|
||
* it under the terms of the GNU General Public License as published by
|
||
* the Free Software Foundation; either version 2 of the License, or
|
||
* (at your option) any later version.
|
||
*
|
||
* This program is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
* GNU General Public License for more details.
|
||
*
|
||
* You should have received a copy of the GNU General Public License along
|
||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
* http://www.gnu.org/copyleft/gpl.html
|
||
*
|
||
* @file
|
||
* @ingroup Language
|
||
*/
|
||
|
||
/**
|
||
* Karakalpak (Qaraqalpaqsha)
|
||
*
|
||
* @ingroup Language
|
||
*/
|
||
class LanguageKaa extends Language {
|
||
|
||
# Convert from the nominative form of a noun to some other case
|
||
# Invoked with {{GRAMMAR:case|word}}
|
||
/**
|
||
* Cases: genitive, dative, accusative, locative, ablative, comitative + possessive forms
|
||
*
|
||
* @param string $word
|
||
* @param string $case
|
||
*
|
||
* @return string
|
||
*/
|
||
function convertGrammar( $word, $case ) {
|
||
global $wgGrammarForms;
|
||
if ( isset( $wgGrammarForms['kaa'][$case][$word] ) ) {
|
||
return $wgGrammarForms['kaa'][$case][$word];
|
||
}
|
||
/* Full code of function convertGrammar() is in development. Updates coming soon. */
|
||
return $word;
|
||
}
|
||
|
||
/**
|
||
* It fixes issue with ucfirst for transforming 'i' to 'İ'
|
||
*
|
||
* @param string $string
|
||
*
|
||
* @return string
|
||
*/
|
||
public function ucfirst( $string ) {
|
||
if ( substr( $string, 0, 1 ) === 'i' ) {
|
||
return 'İ' . substr( $string, 1 );
|
||
}
|
||
return parent::ucfirst( $string );
|
||
}
|
||
|
||
/**
|
||
* It fixes issue with lcfirst for transforming 'I' to 'ı'
|
||
*
|
||
* @param string $string
|
||
*
|
||
* @return mixed|string
|
||
*/
|
||
function lcfirst( $string ) {
|
||
if ( substr( $string, 0, 1 ) === 'I' ) {
|
||
return 'ı' . substr( $string, 1 );
|
||
}
|
||
return parent::lcfirst( $string );
|
||
}
|
||
|
||
}
|