wiki.techinc.nl/languages/classes/LanguageKaa.php
Bartosz Dziewoński eb6bb6b7b9 Generalize non-digit-grouping of four-digit numbers
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
2018-01-02 11:17:25 +01:00

78 lines
2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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 );
}
}