diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
commit | 9db190c7e736ec8d063187d4241b59feaf7dc2d1 (patch) | |
tree | 46d1a0dee7febef5c2d57a9f7b972be16a163b3d /languages | |
parent | 78677c7bbdcc9739f6c10c75935898a20e1acd9e (diff) |
update to MediaWiki 1.17.0
Diffstat (limited to 'languages')
378 files changed, 50273 insertions, 28745 deletions
diff --git a/languages/Language.php b/languages/Language.php index 3416fb27..fee5aec3 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -1,30 +1,34 @@ <?php /** - * @defgroup Language Language + * Internationalisation code * * @file * @ingroup Language */ -if( !defined( 'MEDIAWIKI' ) ) { +/** + * @defgroup Language Language + */ + +if ( !defined( 'MEDIAWIKI' ) ) { echo "This file is part of MediaWiki, it is not a valid entry point.\n"; exit( 1 ); } # Read language names global $wgLanguageNames; -require_once( dirname(__FILE__) . '/Names.php' ) ; +require_once( dirname( __FILE__ ) . '/Names.php' ); global $wgInputEncoding, $wgOutputEncoding; /** * These are always UTF-8, they exist only for backwards compatibility */ -$wgInputEncoding = "UTF-8"; -$wgOutputEncoding = "UTF-8"; +$wgInputEncoding = 'UTF-8'; +$wgOutputEncoding = 'UTF-8'; -if( function_exists( 'mb_strtoupper' ) ) { - mb_internal_encoding('UTF-8'); +if ( function_exists( 'mb_strtoupper' ) ) { + mb_internal_encoding( 'UTF-8' ); } /** @@ -34,20 +38,22 @@ if( function_exists( 'mb_strtoupper' ) ) { */ class FakeConverter { var $mLang; - function FakeConverter( $langobj ) { $this->mLang = $langobj; } - function autoConvertToAllVariants( $text ) { return $text; } + function __construct( $langobj ) { $this->mLang = $langobj; } + function autoConvertToAllVariants( $text ) { return array( $this->mLang->getCode() => $text ); } function convert( $t ) { return $t; } function convertTitle( $t ) { return $t->getPrefixedText(); } function getVariants() { return array( $this->mLang->getCode() ); } function getPreferredVariant() { return $this->mLang->getCode(); } + function getDefaultVariant() { return $this->mLang->getCode(); } + function getURLVariant() { return ''; } function getConvRuleTitle() { return false; } - function findVariantLink(&$l, &$n, $ignoreOtherCond = false) {} - function getExtraHashOptions() {return '';} - function getParsedTitle() {return '';} - function markNoConversion($text, $noParse=false) {return $text;} - function convertCategoryKey( $key ) {return $key; } - function convertLinkToAllVariants($text){ return array( $this->mLang->getCode() => $text); } - function armourMath($text){ return $text; } + function findVariantLink( &$l, &$n, $ignoreOtherCond = false ) { } + function getExtraHashOptions() { return ''; } + function getParsedTitle() { return ''; } + function markNoConversion( $text, $noParse = false ) { return $text; } + function convertCategoryKey( $key ) { return $key; } + function convertLinkToAllVariants( $text ) { return $this->autoConvertToAllVariants( $text ); } + function armourMath( $text ) { return $text; } } /** @@ -129,7 +135,7 @@ class Language { */ static function factory( $code ) { if ( !isset( self::$mLangObjCache[$code] ) ) { - if( count( self::$mLangObjCache ) > 10 ) { + if ( count( self::$mLangObjCache ) > 10 ) { // Don't keep a billion objects around, that's stupid. self::$mLangObjCache = array(); } @@ -158,10 +164,10 @@ class Language { $class = 'Language' . str_replace( '-', '_', ucfirst( $code ) ); // Preload base classes to work around APC/PHP5 bug if ( file_exists( "$IP/languages/classes/$class.deps.php" ) ) { - include_once("$IP/languages/classes/$class.deps.php"); + include_once( "$IP/languages/classes/$class.deps.php" ); } if ( file_exists( "$IP/languages/classes/$class.php" ) ) { - include_once("$IP/languages/classes/$class.php"); + include_once( "$IP/languages/classes/$class.php" ); } } @@ -169,7 +175,7 @@ class Language { throw new MWException( "Language fallback loop detected when creating class $class\n" ); } - if( ! class_exists( $class ) ) { + if ( !class_exists( $class ) ) { $fallback = Language::getFallbackFor( $code ); ++$recursionLevel; $lang = Language::newFromCode( $fallback ); @@ -202,7 +208,7 @@ class Language { } function __construct() { - $this->mConverter = new FakeConverter($this); + $this->mConverter = new FakeConverter( $this ); // Set the code to the name of the descendant if ( get_class( $this ) == 'Language' ) { $this->mCode = 'en'; @@ -225,7 +231,7 @@ class Language { * Hook which will be called if this is the content language. * Descendants can use this to register hook functions or modify globals */ - function initContLang() {} + function initContLang() { } /** * @deprecated Use User::getDefaultOptions() @@ -257,12 +263,12 @@ class Language { */ function getNamespaces() { if ( is_null( $this->namespaceNames ) ) { - global $wgExtraNamespaces, $wgMetaNamespace, $wgMetaNamespaceTalk; + global $wgMetaNamespace, $wgMetaNamespaceTalk, $wgExtraNamespaces; $this->namespaceNames = self::$dataCache->getItem( $this->mCode, 'namespaceNames' ); - if ( $wgExtraNamespaces ) { - $this->namespaceNames = $wgExtraNamespaces + $this->namespaceNames; - } + $validNamespaces = MWNamespace::getCanonicalNamespaces(); + + $this->namespaceNames = $wgExtraNamespaces + $this->namespaceNames + $validNamespaces; $this->namespaceNames[NS_PROJECT] = $wgMetaNamespace; if ( $wgMetaNamespaceTalk ) { @@ -272,6 +278,13 @@ class Language { $this->namespaceNames[NS_PROJECT_TALK] = $this->fixVariableInNamespace( $talk ); } + + # Sometimes a language will be localised but not actually exist on this wiki. + foreach( $this->namespaceNames as $key => $text ) { + if ( !isset( $validNamespaces[$key] ) ) { + unset( $this->namespaceNames[$key] ); + } + } # The above mixing may leave namespaces out of canonical order. # Re-order by namespace ID number... @@ -290,8 +303,8 @@ class Language { */ function getFormattedNamespaces() { $ns = $this->getNamespaces(); - foreach($ns as $k => $v) { - $ns[$k] = strtr($v, '_', ' '); + foreach ( $ns as $k => $v ) { + $ns[$k] = strtr( $v, '_', ' ' ); } return $ns; } @@ -320,7 +333,7 @@ class Language { */ function getFormattedNsText( $index ) { $ns = $this->getNsText( $index ); - return strtr($ns, '_', ' '); + return strtr( $ns, '_', ' ' ); } /** @@ -332,7 +345,7 @@ class Language { * @return mixed An integer if $text is a valid value otherwise false */ function getLocalNsIndex( $text ) { - $lctext = $this->lc($text); + $lctext = $this->lc( $text ); $ids = $this->getNamespaceIds(); return isset( $ids[$lctext] ) ? $ids[$lctext] : false; } @@ -365,14 +378,14 @@ class Language { # class-specific fixup hasn't been done. $this->mNamespaceIds = array(); foreach ( $this->getNamespaces() as $index => $name ) { - $this->mNamespaceIds[$this->lc($name)] = $index; + $this->mNamespaceIds[$this->lc( $name )] = $index; } foreach ( $this->getNamespaceAliases() as $name => $index ) { - $this->mNamespaceIds[$this->lc($name)] = $index; + $this->mNamespaceIds[$this->lc( $name )] = $index; } if ( $wgNamespaceAliases ) { foreach ( $wgNamespaceAliases as $name => $index ) { - $this->mNamespaceIds[$this->lc($name)] = $index; + $this->mNamespaceIds[$this->lc( $name )] = $index; } } } @@ -388,7 +401,7 @@ class Language { * @return mixed An integer if $text is a valid value otherwise false */ function getNsIndex( $text ) { - $lctext = $this->lc($text); + $lctext = $this->lc( $text ); if ( ( $ns = MWNamespace::getCanonicalIndex( $lctext ) ) !== null ) { return $ns; } @@ -480,7 +493,7 @@ class Language { global $IP; $names = array(); $dir = opendir( "$IP/languages/messages" ); - while( false !== ( $file = readdir( $dir ) ) ) { + while ( false !== ( $file = readdir( $dir ) ) ) { $code = self::getCodeFromFileName( $file, 'Messages' ); if ( $code && isset( $allNames[$code] ) ) { $names[$code] = $allNames[$code]; @@ -509,39 +522,39 @@ class Language { } function getMonthName( $key ) { - return $this->getMessageFromDB( self::$mMonthMsgs[$key-1] ); + return $this->getMessageFromDB( self::$mMonthMsgs[$key - 1] ); } function getMonthNameGen( $key ) { - return $this->getMessageFromDB( self::$mMonthGenMsgs[$key-1] ); + return $this->getMessageFromDB( self::$mMonthGenMsgs[$key - 1] ); } function getMonthAbbreviation( $key ) { - return $this->getMessageFromDB( self::$mMonthAbbrevMsgs[$key-1] ); + return $this->getMessageFromDB( self::$mMonthAbbrevMsgs[$key - 1] ); } function getWeekdayName( $key ) { - return $this->getMessageFromDB( self::$mWeekdayMsgs[$key-1] ); + return $this->getMessageFromDB( self::$mWeekdayMsgs[$key - 1] ); } function getWeekdayAbbreviation( $key ) { - return $this->getMessageFromDB( self::$mWeekdayAbbrevMsgs[$key-1] ); + return $this->getMessageFromDB( self::$mWeekdayAbbrevMsgs[$key - 1] ); } function getIranianCalendarMonthName( $key ) { - return $this->getMessageFromDB( self::$mIranianCalendarMonthMsgs[$key-1] ); + return $this->getMessageFromDB( self::$mIranianCalendarMonthMsgs[$key - 1] ); } function getHebrewCalendarMonthName( $key ) { - return $this->getMessageFromDB( self::$mHebrewCalendarMonthMsgs[$key-1] ); + return $this->getMessageFromDB( self::$mHebrewCalendarMonthMsgs[$key - 1] ); } function getHebrewCalendarMonthNameGen( $key ) { - return $this->getMessageFromDB( self::$mHebrewCalendarMonthGenMsgs[$key-1] ); + return $this->getMessageFromDB( self::$mHebrewCalendarMonthGenMsgs[$key - 1] ); } function getHijriCalendarMonthName( $key ) { - return $this->getMessageFromDB( self::$mHijriCalendarMonthMsgs[$key-1] ); + return $this->getMessageFromDB( self::$mHijriCalendarMonthMsgs[$key - 1] ); } /** @@ -574,36 +587,42 @@ class Language { $minDiff = 0; if ( $data[0] == 'System' || $tz == '' ) { - # Global offset in minutes. - if( isset($wgLocalTZoffset) ) $minDiff = $wgLocalTZoffset; + # Global offset in minutes. + if ( isset( $wgLocalTZoffset ) ) { + $minDiff = $wgLocalTZoffset; + } } else if ( $data[0] == 'Offset' ) { $minDiff = intval( $data[1] ); } else { $data = explode( ':', $tz ); - if( count( $data ) == 2 ) { + if ( count( $data ) == 2 ) { $data[0] = intval( $data[0] ); $data[1] = intval( $data[1] ); $minDiff = abs( $data[0] ) * 60 + $data[1]; - if ( $data[0] < 0 ) $minDiff = -$minDiff; + if ( $data[0] < 0 ) { + $minDiff = -$minDiff; + } } else { $minDiff = intval( $data[0] ) * 60; } } # No difference ? Return time unchanged - if ( 0 == $minDiff ) return $ts; + if ( 0 == $minDiff ) { + return $ts; + } wfSuppressWarnings(); // E_STRICT system time bitching # Generate an adjusted date; take advantage of the fact that mktime # will normalize out-of-range values so we don't have to split $minDiff # into hours and minutes. $t = mktime( ( - (int)substr( $ts, 8, 2) ), # Hours + (int)substr( $ts, 8, 2 ) ), # Hours (int)substr( $ts, 10, 2 ) + $minDiff, # Minutes (int)substr( $ts, 12, 2 ), # Seconds (int)substr( $ts, 4, 2 ), # Month (int)substr( $ts, 6, 2 ), # Day - (int)substr( $ts, 0, 4 ) ); #Year + (int)substr( $ts, 0, 4 ) ); # Year $date = date( 'YmdHis', $t ); wfRestoreWarnings(); @@ -617,9 +636,8 @@ class Language { * escaping format. * * Supported format characters are dDjlNwzWFmMntLoYyaAgGhHiscrU. See the - * PHP manual for definitions. "o" format character is supported since - * PHP 5.1.0, previous versions return literal o. - * There are a number of extensions, which start with "x": + * PHP manual for definitions. There are a number of extensions, which + * start with "x": * * xn Do not translate digits of the next numeric format character * xN Toggle raw digit (xn) flag, stays set until explicitly unset @@ -669,7 +687,6 @@ class Language { * @param $ts String: 14-character timestamp * YYYYMMDDHHMMSS * 01234567890123 - * @todo emulation of "o" format character for PHP pre 5.1.0 * @todo handling of "o" format character for Iranian, Hebrew, Hijri & Thai? */ function sprintfDate( $format, $ts ) { @@ -730,51 +747,73 @@ class Language { $num = intval( substr( $ts, 6, 2 ) ); break; case 'xij': - if ( !$iranian ) $iranian = self::tsToIranian( $ts ); + if ( !$iranian ) { + $iranian = self::tsToIranian( $ts ); + } $num = $iranian[2]; break; case 'xmj': - if ( !$hijri ) $hijri = self::tsToHijri( $ts ); + if ( !$hijri ) { + $hijri = self::tsToHijri( $ts ); + } $num = $hijri[2]; break; case 'xjj': - if ( !$hebrew ) $hebrew = self::tsToHebrew( $ts ); + if ( !$hebrew ) { + $hebrew = self::tsToHebrew( $ts ); + } $num = $hebrew[2]; break; case 'l': - if ( !$unix ) $unix = wfTimestamp( TS_UNIX, $ts ); + if ( !$unix ) { + $unix = wfTimestamp( TS_UNIX, $ts ); + } $s .= $this->getWeekdayName( gmdate( 'w', $unix ) + 1 ); break; case 'N': - if ( !$unix ) $unix = wfTimestamp( TS_UNIX, $ts ); + if ( !$unix ) { + $unix = wfTimestamp( TS_UNIX, $ts ); + } $w = gmdate( 'w', $unix ); $num = $w ? $w : 7; break; case 'w': - if ( !$unix ) $unix = wfTimestamp( TS_UNIX, $ts ); + if ( !$unix ) { + $unix = wfTimestamp( TS_UNIX, $ts ); + } $num = gmdate( 'w', $unix ); break; case 'z': - if ( !$unix ) $unix = wfTimestamp( TS_UNIX, $ts ); + if ( !$unix ) { + $unix = wfTimestamp( TS_UNIX, $ts ); + } $num = gmdate( 'z', $unix ); break; case 'W': - if ( !$unix ) $unix = wfTimestamp( TS_UNIX, $ts ); + if ( !$unix ) { + $unix = wfTimestamp( TS_UNIX, $ts ); + } $num = gmdate( 'W', $unix ); break; case 'F': $s .= $this->getMonthName( substr( $ts, 4, 2 ) ); break; case 'xiF': - if ( !$iranian ) $iranian = self::tsToIranian( $ts ); + if ( !$iranian ) { + $iranian = self::tsToIranian( $ts ); + } $s .= $this->getIranianCalendarMonthName( $iranian[1] ); break; case 'xmF': - if ( !$hijri ) $hijri = self::tsToHijri( $ts ); + if ( !$hijri ) { + $hijri = self::tsToHijri( $ts ); + } $s .= $this->getHijriCalendarMonthName( $hijri[1] ); break; case 'xjF': - if ( !$hebrew ) $hebrew = self::tsToHebrew( $ts ); + if ( !$hebrew ) { + $hebrew = self::tsToHebrew( $ts ); + } $s .= $this->getHebrewCalendarMonthName( $hebrew[1] ); break; case 'm': @@ -787,64 +826,84 @@ class Language { $num = intval( substr( $ts, 4, 2 ) ); break; case 'xin': - if ( !$iranian ) $iranian = self::tsToIranian( $ts ); + if ( !$iranian ) { + $iranian = self::tsToIranian( $ts ); + } $num = $iranian[1]; break; case 'xmn': - if ( !$hijri ) $hijri = self::tsToHijri ( $ts ); + if ( !$hijri ) { + $hijri = self::tsToHijri ( $ts ); + } $num = $hijri[1]; break; case 'xjn': - if ( !$hebrew ) $hebrew = self::tsToHebrew( $ts ); + if ( !$hebrew ) { + $hebrew = self::tsToHebrew( $ts ); + } $num = $hebrew[1]; break; case 't': - if ( !$unix ) $unix = wfTimestamp( TS_UNIX, $ts ); + if ( !$unix ) { + $unix = wfTimestamp( TS_UNIX, $ts ); + } $num = gmdate( 't', $unix ); break; case 'xjt': - if ( !$hebrew ) $hebrew = self::tsToHebrew( $ts ); + if ( !$hebrew ) { + $hebrew = self::tsToHebrew( $ts ); + } $num = $hebrew[3]; break; case 'L': - if ( !$unix ) $unix = wfTimestamp( TS_UNIX, $ts ); + if ( !$unix ) { + $unix = wfTimestamp( TS_UNIX, $ts ); + } $num = gmdate( 'L', $unix ); break; - # 'o' is supported since PHP 5.1.0 - # return literal if not supported - # TODO: emulation for pre 5.1.0 versions case 'o': - if ( !$unix ) $unix = wfTimestamp( TS_UNIX, $ts ); - if ( version_compare(PHP_VERSION, '5.1.0') === 1 ) - $num = date( 'o', $unix ); - else - $s .= 'o'; + if ( !$unix ) { + $unix = wfTimestamp( TS_UNIX, $ts ); + } + $num = date( 'o', $unix ); break; case 'Y': $num = substr( $ts, 0, 4 ); break; case 'xiY': - if ( !$iranian ) $iranian = self::tsToIranian( $ts ); + if ( !$iranian ) { + $iranian = self::tsToIranian( $ts ); + } $num = $iranian[0]; break; case 'xmY': - if ( !$hijri ) $hijri = self::tsToHijri( $ts ); + if ( !$hijri ) { + $hijri = self::tsToHijri( $ts ); + } $num = $hijri[0]; break; case 'xjY': - if ( !$hebrew ) $hebrew = self::tsToHebrew( $ts ); + if ( !$hebrew ) { + $hebrew = self::tsToHebrew( $ts ); + } $num = $hebrew[0]; break; case 'xkY': - if ( !$thai ) $thai = self::tsToYear( $ts, 'thai' ); + if ( !$thai ) { + $thai = self::tsToYear( $ts, 'thai' ); + } $num = $thai[0]; break; case 'xoY': - if ( !$minguo ) $minguo = self::tsToYear( $ts, 'minguo' ); + if ( !$minguo ) { + $minguo = self::tsToYear( $ts, 'minguo' ); + } $num = $minguo[0]; break; case 'xtY': - if ( !$tenno ) $tenno = self::tsToYear( $ts, 'tenno' ); + if ( !$tenno ) { + $tenno = self::tsToYear( $ts, 'tenno' ); + } $num = $tenno[0]; break; case 'y': @@ -877,15 +936,21 @@ class Language { $num = substr( $ts, 12, 2 ); break; case 'c': - if ( !$unix ) $unix = wfTimestamp( TS_UNIX, $ts ); + if ( !$unix ) { + $unix = wfTimestamp( TS_UNIX, $ts ); + } $s .= gmdate( 'c', $unix ); break; case 'r': - if ( !$unix ) $unix = wfTimestamp( TS_UNIX, $ts ); + if ( !$unix ) { + $unix = wfTimestamp( TS_UNIX, $ts ); + } $s .= gmdate( 'r', $unix ); break; case 'U': - if ( !$unix ) $unix = wfTimestamp( TS_UNIX, $ts ); + if ( !$unix ) { + $unix = wfTimestamp( TS_UNIX, $ts ); + } $num = $unix; break; case '\\': @@ -922,13 +987,12 @@ class Language { } elseif ( $roman ) { $s .= self::romanNumeral( $num ); $roman = false; - } elseif( $hebrewNum ) { + } elseif ( $hebrewNum ) { $s .= self::hebrewNumeral( $num ); $hebrewNum = false; } else { $s .= $this->formatNum( $num, true ); } - $num = false; } } return $s; @@ -950,19 +1014,19 @@ class Language { $gd = substr( $ts, 6, 2 ) -1; # Days passed from the beginning (including leap years) - $gDayNo = 365*$gy - + floor(($gy+3) / 4) - - floor(($gy+99) / 100) - + floor(($gy+399) / 400); + $gDayNo = 365 * $gy + + floor( ( $gy + 3 ) / 4 ) + - floor( ( $gy + 99 ) / 100 ) + + floor( ( $gy + 399 ) / 400 ); // Add days of the past months of this year - for( $i = 0; $i < $gm; $i++ ) { + for ( $i = 0; $i < $gm; $i++ ) { $gDayNo += self::$GREG_DAYS[$i]; } // Leap years - if ( $gm > 1 && (($gy%4===0 && $gy%100!==0 || ($gy%400==0)))) { + if ( $gm > 1 && ( ( $gy % 4 === 0 && $gy % 100 !== 0 || ( $gy % 400 == 0 ) ) ) ) { $gDayNo++; } @@ -971,26 +1035,27 @@ class Language { $jDayNo = $gDayNo - 79; - $jNp = floor($jDayNo / 12053); + $jNp = floor( $jDayNo / 12053 ); $jDayNo %= 12053; - $jy = 979 + 33*$jNp + 4*floor($jDayNo/1461); + $jy = 979 + 33 * $jNp + 4 * floor( $jDayNo / 1461 ); $jDayNo %= 1461; if ( $jDayNo >= 366 ) { - $jy += floor(($jDayNo-1)/365); - $jDayNo = floor(($jDayNo-1)%365); + $jy += floor( ( $jDayNo - 1 ) / 365 ); + $jDayNo = floor( ( $jDayNo - 1 ) % 365 ); } for ( $i = 0; $i < 11 && $jDayNo >= self::$IRANIAN_DAYS[$i]; $i++ ) { $jDayNo -= self::$IRANIAN_DAYS[$i]; } - $jm= $i+1; - $jd= $jDayNo+1; + $jm = $i + 1; + $jd = $jDayNo + 1; - return array($jy, $jm, $jd); + return array( $jy, $jm, $jd ); } + /** * Converting Gregorian dates to Hijri dates. * @@ -998,39 +1063,40 @@ class Language { * * @link http://phpnuke.org/modules.php?name=News&file=article&sid=8234&mode=thread&order=0&thold=0 */ - private static function tsToHijri ( $ts ) { + private static function tsToHijri( $ts ) { $year = substr( $ts, 0, 4 ); $month = substr( $ts, 4, 2 ); $day = substr( $ts, 6, 2 ); $zyr = $year; - $zd=$day; - $zm=$month; - $zy=$zyr; - - - - if (($zy>1582)||(($zy==1582)&&($zm>10))||(($zy==1582)&&($zm==10)&&($zd>14))) - { - - - $zjd=(int)((1461*($zy + 4800 + (int)( ($zm-14) /12) ))/4) + (int)((367*($zm-2-12*((int)(($zm-14)/12))))/12)-(int)((3*(int)(( ($zy+4900+(int)(($zm-14)/12))/100)))/4)+$zd-32075; - } - else - { - $zjd = 367*$zy-(int)((7*($zy+5001+(int)(($zm-9)/7)))/4)+(int)((275*$zm)/9)+$zd+1729777; - } + $zd = $day; + $zm = $month; + $zy = $zyr; + + if ( + ( $zy > 1582 ) || ( ( $zy == 1582 ) && ( $zm > 10 ) ) || + ( ( $zy == 1582 ) && ( $zm == 10 ) && ( $zd > 14 ) ) + ) + { + $zjd = (int)( ( 1461 * ( $zy + 4800 + (int)( ( $zm - 14 ) / 12 ) ) ) / 4 ) + + (int)( ( 367 * ( $zm - 2 - 12 * ( (int)( ( $zm - 14 ) / 12 ) ) ) ) / 12 ) - + (int)( ( 3 * (int)( ( ( $zy + 4900 + (int)( ( $zm - 14 ) / 12 ) ) / 100 ) ) ) / 4 ) + + $zd - 32075; + } else { + $zjd = 367 * $zy - (int)( ( 7 * ( $zy + 5001 + (int)( ( $zm - 9 ) / 7 ) ) ) / 4 ) + + (int)( ( 275 * $zm ) / 9 ) + $zd + 1729777; + } - $zl=$zjd-1948440+10632; - $zn=(int)(($zl-1)/10631); - $zl=$zl-10631*$zn+354; - $zj=((int)((10985-$zl)/5316))*((int)((50*$zl)/17719))+((int)($zl/5670))*((int)((43*$zl)/15238)); - $zl=$zl-((int)((30-$zj)/15))*((int)((17719*$zj)/50))-((int)($zj/16))*((int)((15238*$zj)/43))+29; - $zm=(int)((24*$zl)/709); - $zd=$zl-(int)((709*$zm)/24); - $zy=30*$zn+$zj-30; + $zl = $zjd -1948440 + 10632; + $zn = (int)( ( $zl - 1 ) / 10631 ); + $zl = $zl - 10631 * $zn + 354; + $zj = ( (int)( ( 10985 - $zl ) / 5316 ) ) * ( (int)( ( 50 * $zl ) / 17719 ) ) + ( (int)( $zl / 5670 ) ) * ( (int)( ( 43 * $zl ) / 15238 ) ); + $zl = $zl - ( (int)( ( 30 - $zj ) / 15 ) ) * ( (int)( ( 17719 * $zj ) / 50 ) ) - ( (int)( $zj / 16 ) ) * ( (int)( ( 15238 * $zj ) / 43 ) ) + 29; + $zm = (int)( ( 24 * $zl ) / 709 ); + $zd = $zl - (int)( ( 709 * $zm ) / 24 ); + $zy = 30 * $zn + $zj - 30; - return array ($zy, $zm, $zd); + return array( $zy, $zm, $zd ); } /** @@ -1055,7 +1121,7 @@ class Language { # Month number when September = 1, August = 12 $month += 4; - if( $month > 12 ) { + if ( $month > 12 ) { # Next year $month -= 12; $year++; @@ -1064,15 +1130,15 @@ class Language { # Calculate day of year from 1 September $dayOfYear = $day; - for( $i = 1; $i < $month; $i++ ) { - if( $i == 6 ) { + for ( $i = 1; $i < $month; $i++ ) { + if ( $i == 6 ) { # February $dayOfYear += 28; # Check if the year is leap - if( $year % 400 == 0 || ( $year % 4 == 0 && $year % 100 > 0 ) ) { + if ( $year % 400 == 0 || ( $year % 4 == 0 && $year % 100 > 0 ) ) { $dayOfYear++; } - } elseif( $i == 8 || $i == 10 || $i == 1 || $i == 3 ) { + } elseif ( $i == 8 || $i == 10 || $i == 1 || $i == 3 ) { $dayOfYear += 30; } else { $dayOfYear += 31; @@ -1083,7 +1149,7 @@ class Language { $start = self::hebrewYearStart( $hebrewYear ); # Calculate next year's start - if( $dayOfYear <= $start ) { + if ( $dayOfYear <= $start ) { # Day is before the start of the year - it is the previous year # Next year's start $nextStart = $start; @@ -1092,7 +1158,7 @@ class Language { $hebrewYear--; # Add days since previous year's 1 September $dayOfYear += 365; - if( ( $year % 400 == 0 ) || ( $year % 100 != 0 && $year % 4 == 0 ) ) { + if ( ( $year % 400 == 0 ) || ( $year % 100 != 0 && $year % 4 == 0 ) ) { # Leap year $dayOfYear++; } @@ -1111,7 +1177,7 @@ class Language { # Add 12 (or 13 for leap years) days to ignore the difference between # Hebrew and Gregorian year (353 at least vs. 365/6) - now the # difference is only about the year type - if( ( $year % 400 == 0 ) || ( $year % 100 != 0 && $year % 4 == 0 ) ) { + if ( ( $year % 400 == 0 ) || ( $year % 100 != 0 && $year % 4 == 0 ) ) { $diff += 13; } else { $diff += 12; @@ -1131,14 +1197,14 @@ class Language { $hebrewDay = $hebrewDayOfYear; $hebrewMonth = 1; $days = 0; - while( $hebrewMonth <= 12 ) { + while ( $hebrewMonth <= 12 ) { # Calculate days in this month - if( $isLeap && $hebrewMonth == 6 ) { + if ( $isLeap && $hebrewMonth == 6 ) { # Adar in a leap year - if( $isLeap ) { + if ( $isLeap ) { # Leap year - has Adar I, with 30 days, and Adar II, with 29 days $days = 30; - if( $hebrewDay <= $days ) { + if ( $hebrewDay <= $days ) { # Day in Adar I $hebrewMonth = 13; } else { @@ -1146,23 +1212,23 @@ class Language { $hebrewDay -= $days; # Try Adar II $days = 29; - if( $hebrewDay <= $days ) { + if ( $hebrewDay <= $days ) { # Day in Adar II $hebrewMonth = 14; } } } - } elseif( $hebrewMonth == 2 && $yearPattern == 2 ) { + } elseif ( $hebrewMonth == 2 && $yearPattern == 2 ) { # Cheshvan in a complete year (otherwise as the rule below) $days = 30; - } elseif( $hebrewMonth == 3 && $yearPattern == 0 ) { + } elseif ( $hebrewMonth == 3 && $yearPattern == 0 ) { # Kislev in an incomplete year (otherwise as the rule below) $days = 29; } else { # Odd months have 30 days, even have 29 $days = 30 - ( $hebrewMonth - 1 ) % 2; } - if( $hebrewDay <= $days ) { + if ( $hebrewDay <= $days ) { # In the current month break; } else { @@ -1185,21 +1251,21 @@ class Language { $a = intval( ( 12 * ( $year - 1 ) + 17 ) % 19 ); $b = intval( ( $year - 1 ) % 4 ); $m = 32.044093161144 + 1.5542417966212 * $a + $b / 4.0 - 0.0031777940220923 * ( $year - 1 ); - if( $m < 0 ) { + if ( $m < 0 ) { $m--; } $Mar = intval( $m ); - if( $m < 0 ) { + if ( $m < 0 ) { $m++; } $m -= $Mar; - $c = intval( ( $Mar + 3 * ( $year - 1 ) + 5 * $b + 5 ) % 7); - if( $c == 0 && $a > 11 && $m >= 0.89772376543210 ) { + $c = intval( ( $Mar + 3 * ( $year - 1 ) + 5 * $b + 5 ) % 7 ); + if ( $c == 0 && $a > 11 && $m >= 0.89772376543210 ) { $Mar++; - } else if( $c == 1 && $a > 6 && $m >= 0.63287037037037 ) { + } else if ( $c == 1 && $a > 6 && $m >= 0.63287037037037 ) { $Mar += 2; - } else if( $c == 2 || $c == 4 || $c == 6 ) { + } else if ( $c == 2 || $c == 4 || $c == 6 ) { $Mar++; } @@ -1215,57 +1281,74 @@ class Language { * http://en.wikipedia.org/wiki/Minguo_calendar * http://en.wikipedia.org/wiki/Japanese_era_name * - * @param $ts String: 14-character timestamp, calender name - * @return array converted year, month, day + * @param $ts String: 14-character timestamp + * @param $cName String: calender name + * @return Array: converted year, month, day */ private static function tsToYear( $ts, $cName ) { $gy = substr( $ts, 0, 4 ); $gm = substr( $ts, 4, 2 ); $gd = substr( $ts, 6, 2 ); - if (!strcmp($cName,'thai')) { + if ( !strcmp( $cName, 'thai' ) ) { # Thai solar dates # Add 543 years to the Gregorian calendar # Months and days are identical $gy_offset = $gy + 543; - } else if ((!strcmp($cName,'minguo')) || !strcmp($cName,'juche')) { + } else if ( ( !strcmp( $cName, 'minguo' ) ) || !strcmp( $cName, 'juche' ) ) { # Minguo dates # Deduct 1911 years from the Gregorian calendar # Months and days are identical $gy_offset = $gy - 1911; - } else if (!strcmp($cName,'tenno')) { + } else if ( !strcmp( $cName, 'tenno' ) ) { # Nengō dates up to Meiji period # Deduct years from the Gregorian calendar # depending on the nengo periods # Months and days are identical - if (($gy < 1912) || (($gy == 1912) && ($gm < 7)) || (($gy == 1912) && ($gm == 7) && ($gd < 31))) { + if ( ( $gy < 1912 ) || ( ( $gy == 1912 ) && ( $gm < 7 ) ) || ( ( $gy == 1912 ) && ( $gm == 7 ) && ( $gd < 31 ) ) ) { # Meiji period $gy_gannen = $gy - 1868 + 1; $gy_offset = $gy_gannen; - if ($gy_gannen == 1) + if ( $gy_gannen == 1 ) { $gy_offset = '元'; - $gy_offset = '明治'.$gy_offset; - } else if ((($gy == 1912) && ($gm == 7) && ($gd == 31)) || (($gy == 1912) && ($gm >= 8)) || (($gy > 1912) && ($gy < 1926)) || (($gy == 1926) && ($gm < 12)) || (($gy == 1926) && ($gm == 12) && ($gd < 26))) { + } + $gy_offset = '明治' . $gy_offset; + } else if ( + ( ( $gy == 1912 ) && ( $gm == 7 ) && ( $gd == 31 ) ) || + ( ( $gy == 1912 ) && ( $gm >= 8 ) ) || + ( ( $gy > 1912 ) && ( $gy < 1926 ) ) || + ( ( $gy == 1926 ) && ( $gm < 12 ) ) || + ( ( $gy == 1926 ) && ( $gm == 12 ) && ( $gd < 26 ) ) + ) + { # Taishō period $gy_gannen = $gy - 1912 + 1; $gy_offset = $gy_gannen; - if ($gy_gannen == 1) + if ( $gy_gannen == 1 ) { $gy_offset = '元'; - $gy_offset = '大正'.$gy_offset; - } else if ((($gy == 1926) && ($gm == 12) && ($gd >= 26)) || (($gy > 1926) && ($gy < 1989)) || (($gy == 1989) && ($gm == 1) && ($gd < 8))) { + } + $gy_offset = '大正' . $gy_offset; + } else if ( + ( ( $gy == 1926 ) && ( $gm == 12 ) && ( $gd >= 26 ) ) || + ( ( $gy > 1926 ) && ( $gy < 1989 ) ) || + ( ( $gy == 1989 ) && ( $gm == 1 ) && ( $gd < 8 ) ) + ) + { # Shōwa period $gy_gannen = $gy - 1926 + 1; $gy_offset = $gy_gannen; - if ($gy_gannen == 1) + if ( $gy_gannen == 1 ) { $gy_offset = '元'; - $gy_offset = '昭和'.$gy_offset; + } + $gy_offset = '昭和' . $gy_offset; } else { # Heisei period $gy_gannen = $gy - 1989 + 1; $gy_offset = $gy_gannen; - if ($gy_gannen == 1) + if ( $gy_gannen == 1 ) { $gy_offset = '元'; - $gy_offset = '平成'.$gy_offset; + } + $gy_offset = '平成' . $gy_offset; } } else { $gy_offset = $gy; @@ -1293,7 +1376,7 @@ class Language { $s = ''; for ( $pow10 = 1000, $i = 3; $i >= 0; $pow10 /= 10, $i-- ) { if ( $num >= $pow10 ) { - $s .= $table[$i][floor($num / $pow10)]; + $s .= $table[$i][floor( $num / $pow10 )]; } $num = $num % $pow10; } @@ -1324,14 +1407,14 @@ class Language { $num = 0; } else { $s .= $table[$i][intval( ( $num / $pow10 ) )]; - if( $pow10 == 1000 ) { + if ( $pow10 == 1000 ) { $s .= "'"; } } } $num = $num % $pow10; } - if( strlen( $s ) == 2 ) { + if ( strlen( $s ) == 2 ) { $str = $s . "'"; } else { $str = substr( $s, 0, strlen( $s ) - 2 ) . '"'; @@ -1379,19 +1462,18 @@ class Language { function dateFormat( $usePrefs = true ) { global $wgUser; - if( is_bool( $usePrefs ) ) { - if( $usePrefs ) { + if ( is_bool( $usePrefs ) ) { + if ( $usePrefs ) { $datePreference = $wgUser->getDatePreference(); } else { - $options = User::getDefaultOptions(); - $datePreference = (string)$options['date']; + $datePreference = (string)User::getDefaultOption( 'date' ); } } else { $datePreference = (string)$usePrefs; } // return int - if( $datePreference == '' ) { + if ( $datePreference == '' ) { return 'default'; } @@ -1431,6 +1513,7 @@ class Language { * @return string */ function date( $ts, $adj = false, $format = true, $timecorrection = false ) { + $ts = wfTimestamp( TS_MW, $ts ); if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); } @@ -1449,6 +1532,7 @@ class Language { * @return string */ function time( $ts, $adj = false, $format = true, $timecorrection = false ) { + $ts = wfTimestamp( TS_MW, $ts ); if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); } @@ -1467,7 +1551,7 @@ class Language { * validateTimeZone() in Special:Preferences * @return string */ - function timeanddate( $ts, $adj = false, $format = true, $timecorrection = false) { + function timeanddate( $ts, $adj = false, $format = true, $timecorrection = false ) { $ts = wfTimestamp( TS_MW, $ts ); if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); @@ -1477,11 +1561,21 @@ class Language { } function getMessage( $key ) { - return self::$dataCache->getSubitem( $this->mCode, 'messages', $key ); + // Don't change getPreferredVariant() to getCode() / mCode, because: + + // 1. Some language like Chinese has multiple variant languages. Only + // getPreferredVariant() (in LanguageConverter) could return a + // sub-language which would be more suitable for the user. + // 2. To languages without multiple variants, getPreferredVariant() + // (in FakeConverter) functions exactly same as getCode() / mCode, + // it won't break anything. + + // The same below. + return self::$dataCache->getSubitem( $this->getPreferredVariant(), 'messages', $key ); } function getAllMessages() { - return self::$dataCache->getItem( $this->mCode, 'messages' ); + return self::$dataCache->getItem( $this->getPreferredVariant(), 'messages' ); } function iconv( $in, $out, $string ) { @@ -1499,63 +1593,68 @@ class Language { } // callback functions for uc(), lc(), ucwords(), ucwordbreaks() - function ucwordbreaksCallbackAscii($matches){ - return $this->ucfirst($matches[1]); + function ucwordbreaksCallbackAscii( $matches ) { + return $this->ucfirst( $matches[1] ); } - function ucwordbreaksCallbackMB($matches){ - return mb_strtoupper($matches[0]); + function ucwordbreaksCallbackMB( $matches ) { + return mb_strtoupper( $matches[0] ); } - function ucCallback($matches){ + function ucCallback( $matches ) { list( $wikiUpperChars ) = self::getCaseMaps(); return strtr( $matches[1], $wikiUpperChars ); } - function lcCallback($matches){ + function lcCallback( $matches ) { list( , $wikiLowerChars ) = self::getCaseMaps(); return strtr( $matches[1], $wikiLowerChars ); } - function ucwordsCallbackMB($matches){ - return mb_strtoupper($matches[0]); + function ucwordsCallbackMB( $matches ) { + return mb_strtoupper( $matches[0] ); } - function ucwordsCallbackWiki($matches){ + function ucwordsCallbackWiki( $matches ) { list( $wikiUpperChars ) = self::getCaseMaps(); return strtr( $matches[0], $wikiUpperChars ); } + /** + * Make a string's first character uppercase + */ function ucfirst( $str ) { $o = ord( $str ); - if ( $o < 96 ) { + if ( $o < 96 ) { // if already uppercase... return $str; } elseif ( $o < 128 ) { - return ucfirst($str); + return ucfirst( $str ); // use PHP's ucfirst() } else { // fall back to more complex logic in case of multibyte strings - return self::uc($str,true); + return $this->uc( $str, true ); } } + /** + * Convert a string to uppercase + */ function uc( $str, $first = false ) { if ( function_exists( 'mb_strtoupper' ) ) { if ( $first ) { - if ( self::isMultibyte( $str ) ) { + if ( $this->isMultibyte( $str ) ) { return mb_strtoupper( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 ); } else { return ucfirst( $str ); } } else { - return self::isMultibyte( $str ) ? mb_strtoupper( $str ) : strtoupper( $str ); + return $this->isMultibyte( $str ) ? mb_strtoupper( $str ) : strtoupper( $str ); } } else { - if ( self::isMultibyte( $str ) ) { - list( $wikiUpperChars ) = $this->getCaseMaps(); + if ( $this->isMultibyte( $str ) ) { $x = $first ? '^' : ''; return preg_replace_callback( "/$x([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/", - array($this,"ucCallback"), + array( $this, 'ucCallback' ), $str ); } else { @@ -1569,7 +1668,7 @@ class Language { if ( !$o ) { return strval( $str ); } elseif ( $o >= 128 ) { - return self::lc( $str, true ); + return $this->lc( $str, true ); } elseif ( $o > 96 ) { return $str; } else { @@ -1579,85 +1678,91 @@ class Language { } function lc( $str, $first = false ) { - if ( function_exists( 'mb_strtolower' ) ) - if ( $first ) - if ( self::isMultibyte( $str ) ) + if ( function_exists( 'mb_strtolower' ) ) { + if ( $first ) { + if ( $this->isMultibyte( $str ) ) { return mb_strtolower( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 ); - else + } else { return strtolower( substr( $str, 0, 1 ) ) . substr( $str, 1 ); - else - return self::isMultibyte( $str ) ? mb_strtolower( $str ) : strtolower( $str ); - else - if ( self::isMultibyte( $str ) ) { - list( , $wikiLowerChars ) = self::getCaseMaps(); + } + } else { + return $this->isMultibyte( $str ) ? mb_strtolower( $str ) : strtolower( $str ); + } + } else { + if ( $this->isMultibyte( $str ) ) { $x = $first ? '^' : ''; return preg_replace_callback( "/$x([A-Z]|[\\xc0-\\xff][\\x80-\\xbf]*)/", - array($this,"lcCallback"), + array( $this, 'lcCallback' ), $str ); - } else + } else { return $first ? strtolower( substr( $str, 0, 1 ) ) . substr( $str, 1 ) : strtolower( $str ); + } + } } function isMultibyte( $str ) { return (bool)preg_match( '/[\x80-\xff]/', $str ); } - function ucwords($str) { - if ( self::isMultibyte( $str ) ) { - $str = self::lc($str); + function ucwords( $str ) { + if ( $this->isMultibyte( $str ) ) { + $str = $this->lc( $str ); // regexp to find first letter in each word (i.e. after each space) $replaceRegexp = "/^([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)| ([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/"; // function to use to capitalize a single char - if ( function_exists( 'mb_strtoupper' ) ) + if ( function_exists( 'mb_strtoupper' ) ) { return preg_replace_callback( $replaceRegexp, - array($this,"ucwordsCallbackMB"), + array( $this, 'ucwordsCallbackMB' ), $str ); - else + } else { return preg_replace_callback( $replaceRegexp, - array($this,"ucwordsCallbackWiki"), + array( $this, 'ucwordsCallbackWiki' ), $str ); - } - else + } + } else { return ucwords( strtolower( $str ) ); + } } - # capitalize words at word breaks - function ucwordbreaks($str){ - if (self::isMultibyte( $str ) ) { - $str = self::lc($str); + # capitalize words at word breaks + function ucwordbreaks( $str ) { + if ( $this->isMultibyte( $str ) ) { + $str = $this->lc( $str ); // since \b doesn't work for UTF-8, we explicitely define word break chars - $breaks= "[ \-\(\)\}\{\.,\?!]"; + $breaks = "[ \-\(\)\}\{\.,\?!]"; // find first letter after word break $replaceRegexp = "/^([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)|$breaks([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/"; - if ( function_exists( 'mb_strtoupper' ) ) + if ( function_exists( 'mb_strtoupper' ) ) { return preg_replace_callback( $replaceRegexp, - array($this,"ucwordbreaksCallbackMB"), + array( $this, 'ucwordbreaksCallbackMB' ), $str ); - else + } else { return preg_replace_callback( $replaceRegexp, - array($this,"ucwordsCallbackWiki"), + array( $this, 'ucwordsCallbackWiki' ), $str ); - } - else + } + } else { return preg_replace_callback( - '/\b([\w\x80-\xff]+)\b/', - array($this,"ucwordbreaksCallbackAscii"), - $str ); + '/\b([\w\x80-\xff]+)\b/', + array( $this, 'ucwordbreaksCallbackAscii' ), + $str + ); + } } /** @@ -1676,18 +1781,22 @@ class Language { } function checkTitleEncoding( $s ) { - if( is_array( $s ) ) { + if ( is_array( $s ) ) { wfDebugDieBacktrace( 'Given array to checkTitleEncoding.' ); } # Check for non-UTF-8 URLs - $ishigh = preg_match( '/[\x80-\xff]/', $s); - if(!$ishigh) return $s; + $ishigh = preg_match( '/[\x80-\xff]/', $s ); + if ( !$ishigh ) { + return $s; + } $isutf8 = preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' . '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s ); - if( $isutf8 ) return $s; + if ( $isutf8 ) { + return $s; + } - return $this->iconv( $this->fallback8bitEncoding(), "utf-8", $s ); + return $this->iconv( $this->fallback8bitEncoding(), 'utf-8', $s ); } function fallback8bitEncoding() { @@ -1703,15 +1812,15 @@ class Language { function hasWordBreaks() { return true; } - + /** * Some languages such as Chinese require word segmentation, * Specify such segmentation when overridden in derived class. - * + * * @param $string String * @return String */ - function wordSegmentation( $string ) { + function segmentByWord( $string ) { return $string; } @@ -1723,7 +1832,7 @@ class Language { * @return String */ function normalizeForSearch( $string ) { - return $string; + return self::convertDoubleWidth( $string ); } /** @@ -1731,8 +1840,17 @@ class Language { * range: ff00-ff5f ~= 0020-007f */ protected static function convertDoubleWidth( $string ) { - $string = preg_replace( '/\xef\xbc([\x80-\xbf])/e', 'chr((ord("$1") & 0x3f) + 0x20)', $string ); - $string = preg_replace( '/\xef\xbd([\x80-\x99])/e', 'chr((ord("$1") & 0x3f) + 0x60)', $string ); + static $full = null; + static $half = null; + + if ( $full === null ) { + $fullWidth = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + $halfWidth = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + $full = str_split( $fullWidth, 3 ); + $half = str_split( $halfWidth ); + } + + $string = str_replace( $full, $half, $string ); return $string; } @@ -1756,8 +1874,12 @@ class Language { */ function firstChar( $s ) { $matches = array(); - preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' . - '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})/', $s, $matches); + preg_match( + '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' . + '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})/', + $s, + $matches + ); if ( isset( $matches[1] ) ) { if ( strlen( $matches[1] ) != 3 ) { @@ -1766,7 +1888,7 @@ class Language { // Break down Hangul syllables to grab the first jamo $code = utf8ToCodepoint( $matches[1] ); - if ( $code < 0xac00 || 0xd7a4 <= $code) { + if ( $code < 0xac00 || 0xd7a4 <= $code ) { return $matches[1]; } elseif ( $code < 0xb098 ) { return "\xe3\x84\xb1"; @@ -1798,7 +1920,7 @@ class Language { return "\xe3\x85\x8e"; } } else { - return ""; + return ''; } } @@ -1817,8 +1939,7 @@ class Language { # wgInputEncoding, this text will be further converted # to wgOutputEncoding. global $wgEditEncoding; - if( $wgEditEncoding == '' or - $wgEditEncoding == 'UTF-8' ) { + if ( $wgEditEncoding == '' || $wgEditEncoding == 'UTF-8' ) { return $s; } else { return $this->iconv( 'UTF-8', $wgEditEncoding, $s ); @@ -1828,12 +1949,12 @@ class Language { function recodeInput( $s ) { # Take the previous into account. global $wgEditEncoding; - if($wgEditEncoding != "") { + if ( $wgEditEncoding != '' ) { $enc = $wgEditEncoding; } else { $enc = 'UTF-8'; } - if( $enc == 'UTF-8' ) { + if ( $enc == 'UTF-8' ) { return $s; } else { return $this->iconv( $enc, 'UTF-8', $s ); @@ -1848,7 +1969,14 @@ class Language { * This is language-specific for performance reasons only. */ function normalize( $s ) { - return UtfNormal::cleanUp( $s ); + global $wgAllUnicodeFixes; + $s = UtfNormal::cleanUp( $s ); + if ( $wgAllUnicodeFixes ) { + $s = $this->transformUsingPairFile( 'normalize-ar.ser', $s ); + $s = $this->transformUsingPairFile( 'normalize-ml.ser', $s ); + } + + return $s; } /** @@ -1863,7 +1991,7 @@ class Language { if ( !isset( $this->transformData[$file] ) ) { $data = wfGetPrecompiledData( $file ); if ( $data === false ) { - throw new MWException( __METHOD__.": The transformation file $file is missing" ); + throw new MWException( __METHOD__ . ": The transformation file $file is missing" ); } $this->transformData[$file] = new ReplacementArray( $data ); } @@ -1965,7 +2093,7 @@ class Language { } } - if( !is_array( $rawEntry ) ) { + if ( !is_array( $rawEntry ) ) { error_log( "\"$rawEntry\" is not a valid magic thingie for \"$mw->mId\"" ); } else { $mw->mCaseSensitive = $rawEntry[0]; @@ -2047,15 +2175,19 @@ class Language { */ function formatNum( $number, $nocommafy = false ) { global $wgTranslateNumerals; - if (!$nocommafy) { - $number = $this->commafy($number); + if ( !$nocommafy ) { + $number = $this->commafy( $number ); $s = $this->separatorTransformTable(); - if ($s) { $number = strtr($number, $s); } + if ( $s ) { + $number = strtr( $number, $s ); + } } - if ($wgTranslateNumerals) { + if ( $wgTranslateNumerals ) { $s = $this->digitTransformTable(); - if ($s) { $number = strtr($number, $s); } + if ( $s ) { + $number = strtr( $number, $s ); + } } return $number; @@ -2063,12 +2195,16 @@ class Language { function parseFormattedNumber( $number ) { $s = $this->digitTransformTable(); - if ($s) { $number = strtr($number, array_flip($s)); } + if ( $s ) { + $number = strtr( $number, array_flip( $s ) ); + } $s = $this->separatorTransformTable(); - if ($s) { $number = strtr($number, array_flip($s)); } + if ( $s ) { + $number = strtr( $number, array_flip( $s ) ); + } - $number = strtr( $number, array (',' => '') ); + $number = strtr( $number, array( ',' => '' ) ); return $number; } @@ -2078,8 +2214,8 @@ class Language { * @param $_ mixed * @return string */ - function commafy($_) { - return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_))); + function commafy( $_ ) { + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } function digitTransformTable() { @@ -2090,7 +2226,6 @@ class Language { return self::$dataCache->getItem( $this->mCode, 'separatorTransformTable' ); } - /** * Take a list of strings and build a locale-friendly comma-separated * list, using the local comma-separator message. @@ -2102,14 +2237,13 @@ class Language { function listToText( $l ) { $s = ''; $m = count( $l ) - 1; - if( $m == 1 ) { + if ( $m == 1 ) { return $l[0] . $this->getMessageFromDB( 'and' ) . $this->getMessageFromDB( 'word-separator' ) . $l[1]; - } - else { + } else { for ( $i = $m; $i >= 0; $i-- ) { if ( $i == $m ) { $s = $l[$i]; - } else if( $i == $m - 1 ) { + } else if ( $i == $m - 1 ) { $s = $l[$i] . $this->getMessageFromDB( 'and' ) . $this->getMessageFromDB( 'word-separator' ) . $s; } else { $s = $l[$i] . $this->getMessageFromDB( 'comma-separator' ) . $s; @@ -2128,7 +2262,11 @@ class Language { function commaList( $list ) { return implode( $list, - wfMsgExt( 'comma-separator', array( 'parsemag', 'escapenoentities', 'language' => $this ) ) ); + wfMsgExt( + 'comma-separator', + array( 'parsemag', 'escapenoentities', 'language' => $this ) + ) + ); } /** @@ -2140,7 +2278,11 @@ class Language { function semicolonList( $list ) { return implode( $list, - wfMsgExt( 'semicolon-separator', array( 'parsemag', 'escapenoentities', 'language' => $this ) ) ); + wfMsgExt( + 'semicolon-separator', + array( 'parsemag', 'escapenoentities', 'language' => $this ) + ) + ); } /** @@ -2151,7 +2293,11 @@ class Language { function pipeList( $list ) { return implode( $list, - wfMsgExt( 'pipe-separator', array( 'escapenoentities', 'language' => $this ) ) ); + wfMsgExt( + 'pipe-separator', + array( 'escapenoentities', 'language' => $this ) + ) + ); } /** @@ -2171,42 +2317,26 @@ class Language { */ function truncate( $string, $length, $ellipsis = '...' ) { # Use the localized ellipsis character - if( $ellipsis == '...' ) { + if ( $ellipsis == '...' ) { $ellipsis = wfMsgExt( 'ellipsis', array( 'escapenoentities', 'language' => $this ) ); } - - if( $length == 0 ) { + # Check if there is no need to truncate + if ( $length == 0 ) { return $ellipsis; - } - if ( strlen( $string ) <= abs( $length ) ) { + } elseif ( strlen( $string ) <= abs( $length ) ) { return $string; } $stringOriginal = $string; - if( $length > 0 ) { - $string = substr( $string, 0, $length ); - $char = ord( $string[strlen( $string ) - 1] ); - $m = array(); - if ($char >= 0xc0) { - # We got the first byte only of a multibyte char; remove it. - $string = substr( $string, 0, -1 ); - } elseif( $char >= 0x80 && - preg_match( '/^(.*)(?:[\xe0-\xef][\x80-\xbf]|' . - '[\xf0-\xf7][\x80-\xbf]{1,2})$/', $string, $m ) ) { - # We chopped in the middle of a character; remove it - $string = $m[1]; - } + if ( $length > 0 ) { + $string = substr( $string, 0, $length ); // xyz... + $string = $this->removeBadCharLast( $string ); $string = $string . $ellipsis; - } else { - $string = substr( $string, $length ); - $char = ord( $string[0] ); - if( $char >= 0x80 && $char < 0xc0 ) { - # We chopped in the middle of a character; remove the whole thing - $string = preg_replace( '/^[\x80-\xbf]+/', '', $string ); - } + $string = substr( $string, $length ); // ...xyz + $string = $this->removeBadCharFirst( $string ); $string = $ellipsis . $string; } - # Do not truncate if the ellipsis actually make the string longer. Bug 22181 + # Do not truncate if the ellipsis makes the string longer/equal (bug 22181) if ( strlen( $string ) < strlen( $stringOriginal ) ) { return $string; } else { @@ -2215,6 +2345,188 @@ class Language { } /** + * Remove bytes that represent an incomplete Unicode character + * at the end of string (e.g. bytes of the char are missing) + * + * @param $string String + * @return string + */ + protected function removeBadCharLast( $string ) { + $char = ord( $string[strlen( $string ) - 1] ); + $m = array(); + if ( $char >= 0xc0 ) { + # We got the first byte only of a multibyte char; remove it. + $string = substr( $string, 0, -1 ); + } elseif ( $char >= 0x80 && + preg_match( '/^(.*)(?:[\xe0-\xef][\x80-\xbf]|' . + '[\xf0-\xf7][\x80-\xbf]{1,2})$/', $string, $m ) ) + { + # We chopped in the middle of a character; remove it + $string = $m[1]; + } + return $string; + } + + /** + * Remove bytes that represent an incomplete Unicode character + * at the start of string (e.g. bytes of the char are missing) + * + * @param $string String + * @return string + */ + protected function removeBadCharFirst( $string ) { + $char = ord( $string[0] ); + if ( $char >= 0x80 && $char < 0xc0 ) { + # We chopped in the middle of a character; remove the whole thing + $string = preg_replace( '/^[\x80-\xbf]+/', '', $string ); + } + return $string; + } + + /* + * Truncate a string of valid HTML to a specified length in bytes, + * appending an optional string (e.g. for ellipses), and return valid HTML + * + * This is only intended for styled/linked text, such as HTML with + * tags like <span> and <a>, were the tags are self-contained (valid HTML) + * + * Note: tries to fix broken HTML with MWTidy + * + * @param string $text HTML string to truncate + * @param int $length (zero/positive) Maximum length (excluding ellipses) + * @param string $ellipsis String to append to the truncated text + * @returns string + */ + function truncateHtml( $text, $length, $ellipsis = '...' ) { + # Use the localized ellipsis character + if ( $ellipsis == '...' ) { + $ellipsis = wfMsgExt( 'ellipsis', array( 'escapenoentities', 'language' => $this ) ); + } + # Check if there is no need to truncate + if ( $length <= 0 ) { + return $ellipsis; // no text shown, nothing to format + } elseif ( strlen( $text ) <= $length ) { + return $text; // string short enough even *with* HTML + } + $text = MWTidy::tidy( $text ); // fix tags + $displayLen = 0; // innerHTML legth so far + $testingEllipsis = false; // checking if ellipses will make string longer/equal? + $tagType = 0; // 0-open, 1-close + $bracketState = 0; // 1-tag start, 2-tag name, 0-neither + $entityState = 0; // 0-not entity, 1-entity + $tag = $ret = ''; + $openTags = array(); // open tag stack + $textLen = strlen( $text ); + for ( $pos = 0; $pos < $textLen; ++$pos ) { + $ch = $text[$pos]; + $lastCh = $pos ? $text[$pos - 1] : ''; + $ret .= $ch; // add to result string + if ( $ch == '<' ) { + $this->truncate_endBracket( $tag, $tagType, $lastCh, $openTags ); // for bad HTML + $entityState = 0; // for bad HTML + $bracketState = 1; // tag started (checking for backslash) + } elseif ( $ch == '>' ) { + $this->truncate_endBracket( $tag, $tagType, $lastCh, $openTags ); + $entityState = 0; // for bad HTML + $bracketState = 0; // out of brackets + } elseif ( $bracketState == 1 ) { + if ( $ch == '/' ) { + $tagType = 1; // close tag (e.g. "</span>") + } else { + $tagType = 0; // open tag (e.g. "<span>") + $tag .= $ch; + } + $bracketState = 2; // building tag name + } elseif ( $bracketState == 2 ) { + if ( $ch != ' ' ) { + $tag .= $ch; + } else { + // Name found (e.g. "<a href=..."), add on tag attributes... + $pos += $this->truncate_skip( $ret, $text, "<>", $pos + 1 ); + } + } elseif ( $bracketState == 0 ) { + if ( $entityState ) { + if ( $ch == ';' ) { + $entityState = 0; + $displayLen++; // entity is one displayed char + } + } else { + if ( $ch == '&' ) { + $entityState = 1; // entity found, (e.g. " ") + } else { + $displayLen++; // this char is displayed + // Add on the other display text after this... + $skipped = $this->truncate_skip( + $ret, $text, "<>&", $pos + 1, $length - $displayLen ); + $displayLen += $skipped; + $pos += $skipped; + } + } + } + # Consider truncation once the display length has reached the maximim. + # Double-check that we're not in the middle of a bracket/entity... + if ( $displayLen >= $length && $bracketState == 0 && $entityState == 0 ) { + if ( !$testingEllipsis ) { + $testingEllipsis = true; + # Save where we are; we will truncate here unless + # the ellipsis actually makes the string longer. + $pOpenTags = $openTags; // save state + $pRet = $ret; // save state + } elseif ( $displayLen > ( $length + strlen( $ellipsis ) ) ) { + # Ellipsis won't make string longer/equal, the truncation point was OK. + $openTags = $pOpenTags; // reload state + $ret = $this->removeBadCharLast( $pRet ); // reload state, multi-byte char fix + $ret .= $ellipsis; // add ellipsis + break; + } + } + } + if ( $displayLen == 0 ) { + return ''; // no text shown, nothing to format + } + // Close the last tag if left unclosed by bad HTML + $this->truncate_endBracket( $tag, $text[$textLen - 1], $tagType, $openTags ); + while ( count( $openTags ) > 0 ) { + $ret .= '</' . array_pop( $openTags ) . '>'; // close open tags + } + return $ret; + } + + // truncateHtml() helper function + // like strcspn() but adds the skipped chars to $ret + private function truncate_skip( &$ret, $text, $search, $start, $len = -1 ) { + $skipCount = 0; + if ( $start < strlen( $text ) ) { + $skipCount = strcspn( $text, $search, $start, $len ); + $ret .= substr( $text, $start, $skipCount ); + } + return $skipCount; + } + + /* + * truncateHtml() helper function + * (a) push or pop $tag from $openTags as needed + * (b) clear $tag value + * @param String &$tag Current HTML tag name we are looking at + * @param int $tagType (0-open tag, 1-close tag) + * @param char $lastCh Character before the '>' that ended this tag + * @param array &$openTags Open tag stack (not accounting for $tag) + */ + private function truncate_endBracket( &$tag, $tagType, $lastCh, &$openTags ) { + $tag = ltrim( $tag ); + if ( $tag != '' ) { + if ( $tagType == 0 && $lastCh != '/' ) { + $openTags[] = $tag; // tag opened (didn't close itself) + } else if ( $tagType == 1 ) { + if ( $openTags && $tag == $openTags[count( $openTags ) - 1] ) { + array_pop( $openTags ); // tag closed + } + } + $tag = ''; + } + } + + /** * Grammatical transformations, needed for inflected languages * Invoked by putting {{grammar:case|word}} in a message * @@ -2224,7 +2536,7 @@ class Language { */ function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms[$this->getCode()][$case][$word]) ) { + if ( isset( $wgGrammarForms[$this->getCode()][$case][$word] ) ) { return $wgGrammarForms[$this->getCode()][$case][$word]; } return $word; @@ -2239,11 +2551,17 @@ class Language { * These details may be overriden per language. */ function gender( $gender, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { + return ''; + } $forms = $this->preConvertPlural( $forms, 2 ); - if ( $gender === 'male' ) return $forms[0]; - if ( $gender === 'female' ) return $forms[1]; - return isset($forms[2]) ? $forms[2] : $forms[0]; + if ( $gender === 'male' ) { + return $forms[0]; + } + if ( $gender === 'female' ) { + return $forms[1]; + } + return isset( $forms[2] ) ? $forms[2] : $forms[0]; } /** @@ -2262,7 +2580,9 @@ class Language { * @return string Correct form of plural for $count in this language */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { + return ''; + } $forms = $this->preConvertPlural( $forms, 2 ); return ( $count == 1 ) ? $forms[0] : $forms[1]; @@ -2277,31 +2597,31 @@ class Language { * @return array Padded array of forms or an exception if not an array */ protected function preConvertPlural( /* Array */ $forms, $count ) { - while ( count($forms) < $count ) { - $forms[] = $forms[count($forms)-1]; + while ( count( $forms ) < $count ) { + $forms[] = $forms[count( $forms ) - 1]; } return $forms; } /** - * For translaing of expiry times + * For translating of expiry times * @param $str String: the validated block time in English * @return Somehow translated block time * @see LanguageFi.php for example implementation */ function translateBlockExpiry( $str ) { - $scBlockExpiryOptions = $this->getMessageFromDB( 'ipboptions' ); - if ( $scBlockExpiryOptions == '-') { + if ( $scBlockExpiryOptions == '-' ) { return $str; } - foreach (explode(',', $scBlockExpiryOptions) as $option) { - if ( strpos($option, ":") === false ) + foreach ( explode( ',', $scBlockExpiryOptions ) as $option ) { + if ( strpos( $option, ':' ) === false ) { continue; - list($show, $value) = explode(":", $option); - if ( strcmp ( $str, $value) == 0 ) { + } + list( $show, $value ) = explode( ':', $option ); + if ( strcmp( $str, $value ) == 0 ) { return htmlspecialchars( trim( $show ) ); } } @@ -2331,8 +2651,8 @@ class Language { } # convert text to all supported variants - function autoConvertToAllVariants($text) { - return $this->mConverter->autoConvertToAllVariants($text); + function autoConvertToAllVariants( $text ) { + return $this->mConverter->autoConvertToAllVariants( $text ); } # convert text to different variants of a language. @@ -2346,16 +2666,15 @@ class Language { } # Check if this is a language with variants - function hasVariants(){ - return sizeof($this->getVariants())>1; + function hasVariants() { + return sizeof( $this->getVariants() ) > 1; } # Put custom tags (e.g. -{ }-) around math to prevent conversion - function armourMath($text){ - return $this->mConverter->armourMath($text); + function armourMath( $text ) { + return $this->mConverter->armourMath( $text ); } - /** * Perform output conversion on a string, and encode for safe HTML output. * @param $text String text to be converted @@ -2372,7 +2691,7 @@ class Language { } /** - * get the list of variants supported by this langauge + * Get the list of variants supported by this langauge * see sample implementation in LanguageZh.php * * @return array an array of language codes @@ -2381,20 +2700,27 @@ class Language { return $this->mConverter->getVariants(); } - - function getPreferredVariant( $fromUser = true, $fromHeader = false ) { - return $this->mConverter->getPreferredVariant( $fromUser, $fromHeader ); + function getPreferredVariant() { + return $this->mConverter->getPreferredVariant(); + } + + function getDefaultVariant() { + return $this->mConverter->getDefaultVariant(); + } + + function getURLVariant() { + return $this->mConverter->getURLVariant(); } /** - * if a language supports multiple variants, it is + * If a language supports multiple variants, it is * possible that non-existing link in one variant * actually exists in another variant. this function * tries to find it. See e.g. LanguageZh.php * * @param $link String: the name of the link * @param $nt Mixed: the title object of the link - * @param boolean $ignoreOtherCond: to disable other conditions when + * @param $ignoreOtherCond Boolean: to disable other conditions when * we need to transclude a template or update a category's link * @return null the input parameters may be modified upon return */ @@ -2406,12 +2732,13 @@ class Language { * If a language supports multiple variants, converts text * into an array of all possible variants of the text: * 'variant' => text in that variant + * + * @deprecated Use autoConvertToAllVariants() */ - function convertLinkToAllVariants($text){ - return $this->mConverter->convertLinkToAllVariants($text); + function convertLinkToAllVariants( $text ) { + return $this->mConverter->convertLinkToAllVariants( $text ); } - /** * returns language specific options used by User::getPageRenderHash() * for example, the preferred language variant @@ -2423,7 +2750,7 @@ class Language { } /** - * for languages that support multiple variants, the title of an + * For languages that support multiple variants, the title of an * article may be displayed differently in different variants. this * function returns the apporiate title defined in the body of the article. * @@ -2441,7 +2768,7 @@ class Language { * @param $noParse * @return string the tagged text */ - function markNoConversion( $text, $noParse=false ) { + function markNoConversion( $text, $noParse = false ) { return $this->mConverter->markNoConversion( $text, $noParse ); } @@ -2543,7 +2870,9 @@ class Language { } function fixVariableInNamespace( $talk ) { - if ( strpos( $talk, '$1' ) === false ) return $talk; + if ( strpos( $talk, '$1' ) === false ) { + return $talk; + } global $wgMetaNamespace; $talk = str_replace( '$1', $wgMetaNamespace, $talk ); @@ -2579,20 +2908,34 @@ class Language { } function formatTimePeriod( $seconds ) { - if ( $seconds < 10 ) { - return $this->formatNum( sprintf( "%.1f", $seconds ) ) . wfMsg( 'seconds-abbrev' ); - } elseif ( $seconds < 60 ) { - return $this->formatNum( round( $seconds ) ) . wfMsg( 'seconds-abbrev' ); - } elseif ( $seconds < 3600 ) { - return $this->formatNum( floor( $seconds / 60 ) ) . wfMsg( 'minutes-abbrev' ) . - $this->formatNum( round( fmod( $seconds, 60 ) ) ) . wfMsg( 'seconds-abbrev' ); + if ( round( $seconds * 10 ) < 100 ) { + return $this->formatNum( sprintf( "%.1f", round( $seconds * 10 ) / 10 ) ) . $this->getMessageFromDB( 'seconds-abbrev' ); + } elseif ( round( $seconds ) < 60 ) { + return $this->formatNum( round( $seconds ) ) . $this->getMessageFromDB( 'seconds-abbrev' ); + } elseif ( round( $seconds ) < 3600 ) { + $minutes = floor( $seconds / 60 ); + $secondsPart = round( fmod( $seconds, 60 ) ); + if ( $secondsPart == 60 ) { + $secondsPart = 0; + $minutes++; + } + return $this->formatNum( $minutes ) . $this->getMessageFromDB( 'minutes-abbrev' ) . ' ' . + $this->formatNum( $secondsPart ) . $this->getMessageFromDB( 'seconds-abbrev' ); } else { $hours = floor( $seconds / 3600 ); $minutes = floor( ( $seconds - $hours * 3600 ) / 60 ); $secondsPart = round( $seconds - $hours * 3600 - $minutes * 60 ); - return $this->formatNum( $hours ) . wfMsg( 'hours-abbrev' ) . - $this->formatNum( $minutes ) . wfMsg( 'minutes-abbrev' ) . - $this->formatNum( $secondsPart ) . wfMsg( 'seconds-abbrev' ); + if ( $secondsPart == 60 ) { + $secondsPart = 0; + $minutes++; + } + if ( $minutes == 60 ) { + $minutes = 0; + $hours++; + } + return $this->formatNum( $hours ) . $this->getMessageFromDB( 'hours-abbrev' ) . ' ' . + $this->formatNum( $minutes ) . $this->getMessageFromDB( 'minutes-abbrev' ) . ' ' . + $this->formatNum( $secondsPart ) . $this->getMessageFromDB( 'seconds-abbrev' ); } } @@ -2621,13 +2964,13 @@ class Language { function formatSize( $size ) { // For small sizes no decimal places necessary $round = 0; - if( $size > 1024 ) { + if ( $size > 1024 ) { $size = $size / 1024; - if( $size > 1024 ) { + if ( $size > 1024 ) { $size = $size / 1024; // For MB and bigger two decimal places are smarter $round = 2; - if( $size > 1024 ) { + if ( $size > 1024 ) { $size = $size / 1024; $msg = 'size-gigabytes'; } else { diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php index d362c559..f5b5492d 100644 --- a/languages/LanguageConverter.php +++ b/languages/LanguageConverter.php @@ -1,11 +1,24 @@ <?php - /** * Contains the LanguageConverter class and ConverterRule class - * @ingroup Language * - * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License + * 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 */ /** @@ -51,21 +64,14 @@ class LanguageConverter { $variantfallbacks = array(), $flags = array(), $manualLevel = array() ) { + global $wgDisabledVariants, $wgLanguageNames; $this->mLangObj = $langobj; $this->mMainLanguageCode = $maincode; - - global $wgDisabledVariants; - $this->mVariants = array(); - foreach ( $variants as $variant ) { - if ( !in_array( $variant, $wgDisabledVariants ) ) { - $this->mVariants[] = $variant; - } - } + $this->mVariants = array_diff( $variants, $wgDisabledVariants ); $this->mVariantFallbacks = $variantfallbacks; - global $wgLanguageNames; $this->mVariantNames = $wgLanguageNames; $this->mCacheKey = wfMemcKey( 'conversiontables', $maincode ); - $f = array( + $defaultflags = array( // 'S' show converted text // '+' add rules for alltext // 'E' the gave flags is error @@ -76,10 +82,10 @@ class LanguageConverter { 'D' => 'D', // convert description (subclass implement) '-' => '-', // remove convert (not implement) 'H' => 'H', // add rule for convert code - // (but no display in placed code ) + // (but no display in placed code ) 'N' => 'N' // current variant name ); - $this->mFlags = array_merge( $f, $flags ); + $this->mFlags = array_merge( $defaultflags, $flags ); foreach ( $this->mVariants as $v ) { if ( array_key_exists( $v, $manualLevel ) ) { $this->mManualLevel[$v] = $manualLevel[$v]; @@ -91,9 +97,12 @@ class LanguageConverter { } /** - * @public + * Get all valid variants. + * Call this instead of using $this->mVariants directly. + * + * @return Array: contains all valid variants */ - function getVariants() { + public function getVariants() { return $this->mVariants; } @@ -104,43 +113,39 @@ class LanguageConverter { * when zh-sg is preferred but not defined, we will pick zh-hans * in this case. Right now this is only used by zh. * - * @param string $v The language code of the variant - * @return string array The code of the fallback language or false if there - * is no fallback - * @public + * @param $variant String: the language code of the variant + * @return String: The code of the fallback language or the + * main code if there is no fallback */ - function getVariantFallbacks( $v ) { - if ( isset( $this->mVariantFallbacks[$v] ) ) { - return $this->mVariantFallbacks[$v]; + public function getVariantFallbacks( $variant ) { + if ( isset( $this->mVariantFallbacks[$variant] ) ) { + return $this->mVariantFallbacks[$variant]; } return $this->mMainLanguageCode; } /** * Get the title produced by the conversion rule. - * @returns string + * @return String: The converted title text */ - function getConvRuleTitle() { + public function getConvRuleTitle() { return $this->mConvRuleTitle; } /** - * Get preferred language variants. - * @param boolean $fromUser Get it from $wgUser's preferences - * @param boolean $fromHeader Get it from Accept-Language - * @return string the preferred language code - * @public + * Get preferred language variant. + * @return String: the preferred language code */ - function getPreferredVariant( $fromUser = true, $fromHeader = false ) { - global $wgDefaultLanguageVariant; + public function getPreferredVariant() { + global $wgDefaultLanguageVariant, $wgUser; $req = $this->getURLVariant(); - if ( $fromUser && !$req ) { + if ( $wgUser->isLoggedIn() && !$req ) { $req = $this->getUserVariant(); } - if ( $fromHeader && !$req ) { + elseif ( !$req ) { $req = $this->getHeaderVariant(); } @@ -159,13 +164,34 @@ class LanguageConverter { } /** + * Get default variant. + * This function would not be affected by user's settings or headers + * @return String: the default variant code + */ + public function getDefaultVariant() { + global $wgDefaultLanguageVariant; + + $req = $this->getURLVariant(); + + if ( $wgDefaultLanguageVariant && !$req ) { + $req = $this->validateVariant( $wgDefaultLanguageVariant ); + } + + if ( $req ) { + return $req; + } + return $this->mMainLanguageCode; + } + + /** * Validate the variant - * @param string $v the variant to validate - * @returns mixed returns the variant if it is valid, null otherwise + * @param $variant String: the variant to validate + * @return Mixed: returns the variant if it is valid, null otherwise */ - function validateVariant( $v = null ) { - if ( $v !== null && in_array( $v, $this->mVariants ) ) { - return $v; + protected function validateVariant( $variant = null ) { + if ( $variant !== null && + in_array( $variant, $this->mVariants ) ) { + return $variant; } return null; } @@ -173,11 +199,10 @@ class LanguageConverter { /** * Get the variant specified in the URL * - * @returns mixed variant if one found, false otherwise. + * @return Mixed: variant if one found, false otherwise. */ - function getURLVariant() { + public function getURLVariant() { global $wgRequest; - $ret = null; if ( $this->mURLVariant ) { return $this->mURLVariant; @@ -196,11 +221,10 @@ class LanguageConverter { /** * Determine if the user has a variant set. * - * @returns mixed variant if one found, false otherwise. + * @return Mixed: variant if one found, false otherwise. */ - function getUserVariant() { + protected function getUserVariant() { global $wgUser; - $ret = null; // memoizing this function wreaks havoc on parserTest.php /* if ( $this->mUserVariant ) { */ @@ -222,15 +246,13 @@ class LanguageConverter { return $this->mUserVariant = $this->validateVariant( $ret ); } - /** * Determine the language variant from the Accept-Language header. * - * @returns mixed variant if one found, false otherwise. + * @return Mixed: variant if one found, false otherwise. */ - function getHeaderVariant() { + protected function getHeaderVariant() { global $wgRequest; - $ret = null; if ( $this->mHeaderVariant ) { return $this->mHeaderVariant; @@ -238,30 +260,13 @@ class LanguageConverter { // see if some supported language variant is set in the // http header. - - $acceptLanguage = $wgRequest->getHeader( 'Accept-Language' ); - if ( !$acceptLanguage ) { + $languages = array_keys( $wgRequest->getAcceptLang() ); + if ( empty( $languages ) ) { return null; } - // explode by comma - $result = StringUtils::explode( ',', strtolower( $acceptLanguage ) ); - $languages = array(); - - foreach ( $result as $elem ) { - // if $elem likes 'zh-cn;q=0.9' - if ( ( $posi = strpos( $elem, ';' ) ) !== false ) { - // get the real language code likes 'zh-cn' - $languages[] = substr( $elem, 0, $posi ); - } else { - $languages[] = $elem; - } - } - $fallback_languages = array(); foreach ( $languages as $language ) { - // strip whitespace - $language = trim( $language ); $this->mHeaderVariant = $this->validateVariant( $language ); if ( $this->mHeaderVariant ) { break; @@ -295,45 +300,24 @@ class LanguageConverter { } /** - * Caption convert, base on preg_replace_callback. - * - * To convert text in "title" or "alt", like '<img alt="text" ... ' - * or '<span title="text" ... ' - * - * @return string like ' alt="yyyy"' or ' title="yyyy"' - * @private - */ - function captionConvert( $matches ) { - $toVariant = $this->getPreferredVariant(); - $title = $matches[1]; - $text = $matches[2]; - // we convert captions except URL - if ( !strpos( $text, '://' ) ) { - $text = $this->translate( $text, $toVariant ); - } - return " $title=\"$text\""; - } - - /** * Dictionary-based conversion. + * This function would not parse the conversion rules. + * If you want to parse rules, try to use convert() or + * convertTo(). * - * @param string $text the text to be converted - * @param string $toVariant the target language code - * @return string the converted text - * @private + * @param $text String: the text to be converted + * @param $toVariant String: the target language code + * @return String: the converted text */ - function autoConvert( $text, $toVariant = false ) { - $fname = 'LanguageConverter::autoConvert'; - - wfProfileIn( $fname ); + public function autoConvert( $text, $toVariant = false ) { + wfProfileIn( __METHOD__ ); - if ( !$this->mTablesLoaded ) { - $this->loadTables(); - } + $this->loadTables(); if ( !$toVariant ) { $toVariant = $this->getPreferredVariant(); if ( !$toVariant ) { + wfProfileOut( __METHOD__ ); return $text; } } @@ -362,61 +346,92 @@ class LanguageConverter { $reg = '/' . $codefix . $scriptfix . $prefix . '<[^>]+>|&[a-zA-Z#][a-z0-9]+;' . $marker . $htmlfix . '/s'; + $startPos = 0; + $sourceBlob = ''; + $literalBlob = ''; - $matches = preg_split( $reg, $text, - 1, PREG_SPLIT_OFFSET_CAPTURE ); - - $m = array_shift( $matches ); - - $ret = $this->translate( $m[0], $toVariant ); - $mstart = $m[1] + strlen( $m[0] ); - - // enable convertsion of '<img alt="xxxx" ... ' - // or '<span title="xxxx" ... ' - $captionpattern = '/\s(title|alt)\s*=\s*"([\s\S]*?)"/'; - - $trtext = ''; - $trtextmark = "\0"; - $notrtext = array(); - foreach ( $matches as $m ) { - $mark = substr( $text, $mstart, $m[1] - $mstart ); - $mark = preg_replace_callback( $captionpattern, - array( &$this, 'captionConvert' ), - $mark ); - // Let's convert the trtext only once, - // it would give us more performance improvement - $notrtext[] = $mark; - $trtext .= $m[0] . $trtextmark; - $mstart = $m[1] + strlen( $m[0] ); - } - $notrtext[] = ''; - $trtext = $this->translate( $trtext, $toVariant ); - $trtext = StringUtils::explode( $trtextmark, $trtext ); - foreach ( $trtext as $t ) { - $ret .= array_shift( $notrtext ); - $ret .= $t; - } - wfProfileOut( $fname ); - return $ret; + // Guard against delimiter nulls in the input + $text = str_replace( "\000", '', $text ); + + while ( $startPos < strlen( $text ) ) { + if ( preg_match( $reg, $text, $markupMatches, PREG_OFFSET_CAPTURE, $startPos ) ) { + $elementPos = $markupMatches[0][1]; + $element = $markupMatches[0][0]; + } else { + $elementPos = strlen( $text ); + $element = ''; + } + + // Queue the part before the markup for translation in a batch + $sourceBlob .= substr( $text, $startPos, $elementPos - $startPos ) . "\000"; + + // Advance to the next position + $startPos = $elementPos + strlen( $element ); + + // Translate any alt or title attributes inside the matched element + if ( $element !== '' && preg_match( '/^(<[^>\s]*)\s([^>]*)(.*)$/', $element, + $elementMatches ) ) + { + $attrs = Sanitizer::decodeTagAttributes( $elementMatches[2] ); + $changed = false; + foreach ( array( 'title', 'alt' ) as $attrName ) { + if ( !isset( $attrs[$attrName] ) ) { + continue; + } + $attr = $attrs[$attrName]; + // Don't convert URLs + if ( !strpos( $attr, '://' ) ) { + $attr = $this->translate( $attr, $toVariant ); + } + + // Remove HTML tags to avoid disrupting the layout + $attr = preg_replace( '/<[^>]+>/', '', $attr ); + if ( $attr !== $attrs[$attrName] ) { + $attrs[$attrName] = $attr; + $changed = true; + } + } + if ( $changed ) { + $element = $elementMatches[1] . Html::expandAttributes( $attrs ) . + $elementMatches[3]; + } + } + $literalBlob .= $element . "\000"; + } + + // Do the main translation batch + $translatedBlob = $this->translate( $sourceBlob, $toVariant ); + + // Put the output back together + $translatedIter = StringUtils::explode( "\000", $translatedBlob ); + $literalIter = StringUtils::explode( "\000", $literalBlob ); + $output = ''; + while ( $translatedIter->valid() && $literalIter->valid() ) { + $output .= $translatedIter->current(); + $output .= $literalIter->current(); + $translatedIter->next(); + $literalIter->next(); + } + + wfProfileOut( __METHOD__ ); + return $output; } /** * Translate a string to a variant. - * Doesn't process markup or do any of that other stuff, for that use - * convert(). + * Doesn't parse rules or do any of that other stuff, for that use + * convert() or convertTo(). * - * @param string $text Text to convert - * @param string $variant Variant language code - * @return string Translated text - * @private + * @param $text String: text to convert + * @param $variant String: variant language code + * @return String: translated text */ - function translate( $text, $variant ) { + public function translate( $text, $variant ) { wfProfileIn( __METHOD__ ); // If $text is empty or only includes spaces, do nothing // Otherwise translate it if ( trim( $text ) ) { - if ( !$this->mTablesLoaded ) { - $this->loadTables(); - } + $this->loadTables(); $text = $this->mTables[$variant]->replace( $text ); } wfProfileOut( __METHOD__ ); @@ -424,82 +439,56 @@ class LanguageConverter { } /** - * Convert text to all supported variants. + * Call translate() to convert text to all valid variants. * - * @param string $text the text to be converted - * @return array of string - * @public + * @param $text String: the text to be converted + * @return Array: variant => converted text */ - function autoConvertToAllVariants( $text ) { - $fname = 'LanguageConverter::autoConvertToAllVariants'; - wfProfileIn( $fname ); - if ( !$this->mTablesLoaded ) { - $this->loadTables(); - } + public function autoConvertToAllVariants( $text ) { + wfProfileIn( __METHOD__ ); + $this->loadTables(); $ret = array(); foreach ( $this->mVariants as $variant ) { $ret[$variant] = $this->translate( $text, $variant ); } - wfProfileOut( $fname ); + wfProfileOut( __METHOD__ ); return $ret; } /** - * Convert link text to all supported variants. + * Convert link text to all valid variants. + * In the first, this function only convert text outside the + * "-{" "}-" markups. Since the "{" and "}" are not allowed in + * titles, the text will get all converted always. + * So I removed this feature and deprecated the function. * - * @param string $text the text to be converted - * @return array of string - * @public + * @param $text String: the text to be converted + * @return Array: variant => converted text + * @deprecated Use autoConvertToAllVariants() instead */ - function convertLinkToAllVariants( $text ) { - if ( !$this->mTablesLoaded ) { - $this->loadTables(); - } - - $ret = array(); - $tarray = StringUtils::explode( '-{', $text ); - $first = true; - - foreach ( $tarray as $txt ) { - if ( $first ) { - $first = false; - foreach ( $this->mVariants as $variant ) { - $ret[$variant] = $this->translate( $txt, $variant ); - } - continue; - } - - $marked = explode( '}-', $txt, 2 ); - - foreach ( $this->mVariants as $variant ) { - $ret[$variant] .= '-{' . $marked[0] . '}-'; - if ( array_key_exists( 1, $marked ) ) { - $ret[$variant] .= $this->translate( $marked[1], $variant ); - } - } - - } - - return $ret; + public function convertLinkToAllVariants( $text ) { + return $this->autoConvertToAllVariants( $text ); } /** - * Prepare manual conversion table. - * @private + * Apply manual conversion rules. + * + * @param $convRule Object: Object of ConverterRule */ - function applyManualConv( $convRule ) { + protected function applyManualConv( $convRule ) { // Use syntax -{T|zh-cn:TitleCN; zh-tw:TitleTw}- to custom // title conversion. - // Bug 24072: mConvRuleTitle won't work if the title conversion - // rule was followed by other manual conversion rule(s). + // Bug 24072: $mConvRuleTitle was overwritten by other manual + // rule(s) not for title, this breaks the title conversion. $newConvRuleTitle = $convRule->getTitle(); - if( $newConvRuleTitle ) { + if ( $newConvRuleTitle ) { + // So I add an empty check for getTitle() $this->mConvRuleTitle = $newConvRuleTitle; } - // apply manual conversion table to global table + // merge/remove manual conversion rules to/from global table $convTable = $convRule->getConvTable(); $action = $convRule->getRulesAction(); foreach ( $convTable as $variant => $pair ) { @@ -523,42 +512,22 @@ class LanguageConverter { } /** - * Convert text to different variants of a language. The automatic - * conversion is done in autoConvert(). Here we parse the text - * marked with -{}-, which specifies special conversions of the - * text that can not be accomplished in autoConvert(). + * Auto convert a Title object to a readable string in the + * preferred variant. * - * Syntax of the markup: - * -{code1:text1;code2:text2;...}- or - * -{flags|code1:text1;code2:text2;...}- or - * -{text}- in which case no conversion should take place for text - * - * @param $text String: text to be converted - * @return String: converted text - */ - public function convert( $text ) { - global $wgDisableLangConversion; - if ( $wgDisableLangConversion ) return $text; - - $variant = $this->getPreferredVariant(); - - return $this->recursiveConvertTopLevel( $text, $variant ); - } - - /** - * Convert a Title object to a readable string in the preferred variant + *@param $title Object: a object of Title + *@return String: converted title text */ public function convertTitle( $title ) { $variant = $this->getPreferredVariant(); $index = $title->getNamespace(); - if ( $index === NS_MAIN || $index === NS_SPECIAL ) { + if ( $index === NS_MAIN ) { $text = ''; } else { // first let's check if a message has given us a converted name $nsConvKey = 'conversion-ns' . $index; - $nsLocalText = wfMsgForContentNoTrans( $nsConvKey ); - if ( !wfEmptyMsg( $nsConvKey, $nsLocalText ) ) { - $text = $nsLocalText; + if ( !wfEmptyMsg( $nsConvKey ) ) { + $text = wfMsgForContentNoTrans( $nsConvKey ); } else { // the message does not exist, try retrieve it from the current // variant's namespace names. @@ -568,22 +537,61 @@ class LanguageConverter { $text .= ':'; } $text .= $title->getText(); - $text = $this->autoConvert( $text, $variant ); + $text = $this->translate( $text, $variant ); return $text; } + /** + * Convert text to different variants of a language. The automatic + * conversion is done in autoConvert(). Here we parse the text + * marked with -{}-, which specifies special conversions of the + * text that can not be accomplished in autoConvert(). + * + * Syntax of the markup: + * -{code1:text1;code2:text2;...}- or + * -{flags|code1:text1;code2:text2;...}- or + * -{text}- in which case no conversion should take place for text + * + * @param $text String: text to be converted + * @return String: converted text + */ + public function convert( $text ) { + $variant = $this->getPreferredVariant(); + return $this->convertTo( $text, $variant ); + } + + /** + * Same as convert() except a extra parameter to custom variant. + * + * @param $text String: text to be converted + * @param $variant String: the target variant code + * @return String: converted text + */ + public function convertTo( $text, $variant ) { + global $wgDisableLangConversion; + if ( $wgDisableLangConversion ) return $text; + return $this->recursiveConvertTopLevel( $text, $variant ); + } + + /** + * Recursively convert text on the outside. Allow to use nested + * markups to custom rules. + * + * @param $text String: text to be converted + * @param $variant String: the target variant code + * @param $depth Integer: depth of recursion + * @return String: converted text + */ protected function recursiveConvertTopLevel( $text, $variant, $depth = 0 ) { $startPos = 0; $out = ''; $length = strlen( $text ); while ( $startPos < $length ) { - $m = false; $pos = strpos( $text, '-{', $startPos ); - + if ( $pos === false ) { // No more markup, append final segment $out .= $this->autoConvert( substr( $text, $startPos ), $variant ); - $startPos = $length; return $out; } @@ -601,10 +609,18 @@ class LanguageConverter { return $out; } + /** + * Recursively convert text on the inside. + * + * @param $text String: text to be converted + * @param $variant String: the target variant code + * @param $depth Integer: depth of recursion + * @return String: converted text + */ protected function recursiveConvertRule( $text, $variant, &$startPos, $depth = 0 ) { // Quick sanity check (no function calls) if ( $text[$startPos] !== '-' || $text[$startPos + 1] !== '{' ) { - throw new MWException( __METHOD__.': invalid input string' ); + throw new MWException( __METHOD__ . ': invalid input string' ); } $startPos += 2; @@ -637,7 +653,7 @@ class LanguageConverter { $inner .= '-{'; if ( !$warningDone ) { $inner .= '<span class="error">' . - wfMsgForContent( 'language-converter-depth-warning', + wfMsgForContent( 'language-converter-depth-warning', $this->mMaxDepth ) . '</span>'; $warningDone = true; @@ -656,7 +672,7 @@ class LanguageConverter { $this->applyManualConv( $rule ); return $rule->getDisplay(); default: - throw new MWException( __METHOD__.': invalid regex match' ); + throw new MWException( __METHOD__ . ': invalid regex match' ); } } @@ -674,14 +690,13 @@ class LanguageConverter { * actually exists in another variant. This function * tries to find it. See e.g. LanguageZh.php * - * @param string $link the name of the link - * @param mixed $nt the title object of the link - * @param boolean $ignoreOtherCond: to disable other conditions when - * we need to transclude a template or update a category's link - * @return null the input parameters may be modified upon return - * @public + * @param $link String: the name of the link + * @param $nt Mixed: the title object of the link + * @param $ignoreOtherCond Boolean: to disable other conditions when + * we need to transclude a template or update a category's link + * @return Null, the input parameters may be modified upon return */ - function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) { + public function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) { # If the article has already existed, there is no need to # check it again, otherwise it may cause a fault. if ( is_object( $nt ) && $nt->exists() ) { @@ -714,7 +729,7 @@ class LanguageConverter { } $variants = $this->autoConvertToAllVariants( $link ); - if ( $variants == false ) { // give up + if ( !$variants ) { // give up return; } @@ -742,12 +757,10 @@ class LanguageConverter { } } - /** + /** * Returns language specific hash options. - * - * @public */ - function getExtraHashOptions() { + public function getExtraHashOptions() { $variant = $this->getPreferredVariant(); return '!' . $variant ; } @@ -768,10 +781,10 @@ class LanguageConverter { * @private */ function loadTables( $fromcache = true ) { - global $wgMemc; if ( $this->mTablesLoaded ) { return; } + global $wgMemc; wfProfileIn( __METHOD__ ); $this->mTablesLoaded = true; $this->mTables = false; @@ -801,13 +814,13 @@ class LanguageConverter { wfProfileOut( __METHOD__ ); } - /** + /** * Hook for post processig after conversion tables are loaded. * */ function postLoadTables() { } - /** + /** * Reload the conversion tables. * * @private @@ -853,6 +866,11 @@ class LanguageConverter { if ( strpos( $code, '/' ) === false ) { $txt = $wgMessageCache->get( 'Conversiontable', true, $code ); + if ( $txt === false ) { + # FIXME: this method doesn't seem to be expecting + # this possible outcome... + $txt = '<Conversiontable>'; + } } else { $title = Title::makeTitleSafe( NS_MEDIAWIKI, "Conversiontable/$code" ); @@ -888,7 +906,6 @@ class LanguageConverter { } } - // parse the mappings in this page $blocks = StringUtils::explode( '-{', $txt ); $ret = array(); @@ -914,7 +931,6 @@ class LanguageConverter { } $parsed[$key] = true; - // recursively parse the subpages if ( $recursive ) { foreach ( $sublinks as $link ) { @@ -925,7 +941,7 @@ class LanguageConverter { if ( $this->mUcfirst ) { foreach ( $ret as $k => $v ) { - $ret[Language::ucfirst( $k )] = Language::ucfirst( $v ); + $ret[$this->mLangObj->ucfirst( $k )] = $this->mLangObj->ucfirst( $v ); } } return $ret; @@ -935,11 +951,11 @@ class LanguageConverter { * Enclose a string with the "no conversion" tag. This is used by * various functions in the Parser. * - * @param string $text text to be tagged for no conversion - * @return string the tagged text - * @public + * @param $text String: text to be tagged for no conversion + * @param $noParse Unused (?) + * @return String: the tagged text */ - function markNoConversion( $text, $noParse = false ) { + public function markNoConversion( $text, $noParse = false ) { # don't mark if already marked if ( strpos( $text, '-{' ) || strpos( $text, '}-' ) ) { return $text; @@ -980,15 +996,13 @@ class LanguageConverter { /** * Armour rendered math against conversion. - * Wrap math into rawoutput -{R| math }- syntax. - * @public + * Escape special chars in parsed math text.(in most cases are img elements) */ - function armourMath( $text ) { - // we need to convert '-{' and '}-' to '-{' and '}-' - // to avoid a unwanted '}-' appeared after the math-image. + public function armourMath( $text ) { + // convert '-{' and '}-' to '-{' and '}-' to prevent + // any unwanted markup appearing in the math image tag. $text = strtr( $text, array( '-{' => '-{', '}-' => '}-' ) ); - $ret = "-{R|$text}-"; - return $ret; + return $text; } /** @@ -1000,7 +1014,7 @@ class LanguageConverter { // text should be splited by ";" only if a valid variant // name exist after the markup, for example: // -{zh-hans:<span style="font-size:120%;">xxx</span>;zh-hant:\ - // <span style="font-size:120%;">yyy</span>;}- + // <span style="font-size:120%;">yyy</span>;}- // we should split it as: // array( // [0] => 'zh-hans:<span style="font-size:120%;">xxx</span>' @@ -1139,7 +1153,6 @@ class ConverterRule { */ function parseRules() { $rules = $this->mRules; - $flags = $this->mFlags; $bidtable = array(); $unidtable = array(); $variants = $this->mConverter->mVariants; @@ -1161,7 +1174,7 @@ class ConverterRule { $bidtable[$v] = $to; } elseif ( count( $u ) == 2 ) { $from = trim( $u[0] ); - $v = trim( $u[1] ); + $v = trim( $u[1] ); if ( array_key_exists( $v, $unidtable ) && !is_array( $unidtable[$v] ) && $to @@ -1287,7 +1300,7 @@ class ConverterRule { } /*for unidirectional array fill to convert tables */ if ( ( $manLevel[$v] == 'bidirectional' || $manLevel[$v] == 'unidirectional' ) - && isset( $unidtable[$v] ) ) + && isset( $unidtable[$v] ) ) { if ( isset( $this->mConvTable[$v] ) ) { $this->mConvTable[$v] = array_merge( $this->mConvTable[$v], $unidtable[$v] ); @@ -1307,7 +1320,6 @@ class ConverterRule { $variant = $this->mConverter->getPreferredVariant(); } - $variants = $this->mConverter->mVariants; $this->parseFlags(); $flags = $this->mFlags; diff --git a/languages/Names.php b/languages/Names.php index 79759c95..84067219 100644 --- a/languages/Names.php +++ b/languages/Names.php @@ -19,6 +19,7 @@ 'ar' => 'العربية', # Arabic 'arc' => 'ܐܪܡܝܐ', # Aramaic 'arn' => 'Mapudungun', # Mapuche, Mapudungu, Araucanian (Araucano) + 'ary' => 'Maġribi', # Moroccan Spoken Arabic 'arz' => 'مصرى', # Egyptian Spoken Arabic 'as' => 'অসমীয়া', # Assamese 'ast' => 'Asturianu', # Asturian @@ -26,17 +27,18 @@ 'avk' => 'Kotava', # Kotava 'ay' => 'Aymar aru', # Aymara 'az' => 'Azərbaycanca', # Azerbaijani - 'ba' => 'Башҡорт', # Bashkir + 'ba' => 'Башҡортса', # Bashkir 'bar' => 'Boarisch', # Bavarian (Austro-Bavarian and South Tyrolean) - 'bat-smg' => 'Žemaitėška', # Samogitian + 'bat-smg' => 'Žemaitėška', # Samogitian (deprecated code, 'sgs' in ISO 693-3 since 2010-06-30 ) 'bcc' => 'بلوچی مکرانی', # Southern Balochi 'bcl' => 'Bikol Central', # Bikol: Central Bicolano language 'be' => 'Беларуская', # Belarusian normative - 'be-tarask' => 'Беларуская (тарашкевіца)', # Belarusian in Taraskievica orthography - 'be-x-old' => 'Беларуская (тарашкевіца)', # Belarusian in Taraskievica orthography; compat link + 'be-tarask' => "\xE2\x80\xAAБеларуская (тарашкевіца)\xE2\x80\xAC", # Belarusian in Taraskievica orthography + 'be-x-old' => "\xE2\x80\xAAБеларуская (тарашкевіца)\xE2\x80\xAC", # Belarusian in Taraskievica orthography; compat link 'bg' => 'Български', # Bulgarian 'bh' => 'भोजपुरी', # Bhojpuri 'bi' => 'Bislama', # Bislama + 'bjn' => 'Bahasa Banjar', # Banjarese 'bm' => 'Bamanankan', # Bambara 'bn' => 'বাংলা', # Bengali 'bo' => 'བོད་ཡིག', # Tibetan @@ -55,13 +57,11 @@ 'cho' => 'Choctaw', # Choctaw 'chr' => 'ᏣᎳᎩ', # Cherokee 'chy' => 'Tsetsêhestâhese', # Cheyenne - 'ckb' => 'Soranî / کوردی', # Sorani - 'ckb-latn' => "\xE2\x80\xAASoranî (latînî)\xE2\x80\xAC", # Central Kurdish Latin script - 'ckb-arab' => "\xE2\x80\xABکوردی (عەرەبی)\xE2\x80\xAC", # Central Kurdish Arabic script + 'ckb' => 'کوردی', # Sorani 'co' => 'Corsu', # Corsican 'cps' => 'Capiceño', # Capiznon 'cr' => 'Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ', # Cree - 'crh' => 'Qırımtatarca', # Crimean Tatar + 'crh' => 'Qırımtatarca', # Crimean Tatar (multiple scripts - defaults to Latin) 'crh-latn' => "\xE2\x80\xAAQırımtatarca (Latin)\xE2\x80\xAC", # Crimean Tatar (Latin) 'crh-cyrl' => "\xE2\x80\xAAКъырымтатарджа (Кирилл)\xE2\x80\xAC", # Crimean Tatar (Cyrillic) 'cs' => 'Česky', # Czech @@ -73,9 +73,8 @@ 'de' => 'Deutsch', # German ("Du") 'de-at' => 'Österreichisches Deutsch', # Austrian German 'de-ch' => 'Schweizer Hochdeutsch', # Swiss Standard German - 'de-formal' => 'Deutsch (Sie-Form)', # German - formal address ("Sie") + 'de-formal' => "\xE2\x80\xAADeutsch (Sie-Form)\xE2\x80\xAC", # German - formal address ("Sie") 'diq' => 'Zazaki', # Zazaki - 'dk' => 'Dansk (deprecated:da)', # Unused code currently falls back to Danish, 'da' is correct for the language 'dsb' => 'Dolnoserbski', # Lower Sorbian 'dv' => 'ދިވެހިބަސް', # Dhivehi 'dz' => 'ཇོང་ཁ', # Bhutani @@ -98,14 +97,14 @@ 'fr' => 'Français', # French 'frc' => 'Français cadien', # Cajun French 'frp' => 'Arpetan', # Franco-Provençal/Arpitan - 'frr' => 'Frasch', # North Frisian + 'frr' => 'Nordfriisk', # North Frisian 'fur' => 'Furlan', # Friulian 'fy' => 'Frysk', # Frisian 'ga' => 'Gaeilge', # Irish 'gag' => 'Gagauz', # Gagauz - 'gan' => '贛語', # Gan - 'gan-hans' => '赣语(简体)', # Gan (Simplified Han) - 'gan-hant' => '贛語(繁體)', # Gan (Traditional Han) + 'gan' => '贛語', # Gan (multiple scripts - defaults to Traditional) + 'gan-hans' => "\xE2\x80\xAA赣语(简体)\xE2\x80\xAC", # Gan (Simplified Han) + 'gan-hant' => "\xE2\x80\xAA贛語(繁體)\xE2\x80\xAC", # Gan (Traditional Han) 'gd' => 'Gàidhlig', # Scots Gaelic 'gl' => 'Galego', # Galician 'glk' => 'گیلکی', # Gilaki @@ -120,8 +119,7 @@ 'haw' => 'Hawai`i', # Hawaiian 'he' => 'עברית', # Hebrew 'hi' => 'हिन्दी', # Hindi - 'hif' => 'Fiji Hindi', # Fijian Hindi (falls back to hif-latn) - 'hif-deva' => 'फ़ीजी हिन्दी', # Fiji Hindi (devangari) + 'hif' => 'Fiji Hindi', # Fijian Hindi (multiple scripts - defaults to Latin) 'hif-latn' => 'Fiji Hindi', # Fiji Hindi (latin) 'hil' => 'Ilonggo', # Hiligaynon 'ho' => 'Hiri Motu', # Hiri Motu @@ -152,11 +150,13 @@ 'ka' => 'ქართული', # Georgian 'kaa' => 'Qaraqalpaqsha', # Karakalpak 'kab' => 'Taqbaylit', # Kabyle - 'kg' => 'Kongo', # Kongo, (FIXME!) should probaly be KiKongo or KiKoongo + 'kbd' => 'Къэбэрдеибзэ / Qabardjajəbza', # Kabardian (multiple scripts - defaults to Cyrillic) + 'kbd-cyrl' => 'къэбэрдеибзэ', # Kabardian (Cyrillic) + 'kg' => 'Kongo', # Kongo, (FIXME!) should probaly be KiKongo or KiKoongo 'ki' => 'Gĩkũyũ', # Gikuyu 'kiu' => 'Kırmancki', # Kirmanjki - 'kj' => 'Kwanyama', # Kwanyama - 'kk' => 'Қазақша', # Kazakh + 'kj' => 'Kwanyama', # Kwanyama + 'kk' => 'Қазақша', # Kazakh (multiple scripts - defaults to Cyrillic) 'kk-arab' => "\xE2\x80\xABقازاقشا (تٴوتە)\xE2\x80\xAC", # Kazakh Arabic 'kk-cyrl' => "\xE2\x80\xAAҚазақша (кирил)\xE2\x80\xAC", # Kazakh Cyrillic 'kk-latn' => "\xE2\x80\xAAQazaqşa (latın)\xE2\x80\xAC", # Kazakh Latin @@ -174,12 +174,12 @@ 'kri' => 'Krio', # Krio 'krj' => 'Kinaray-a', # Kinaray-a 'ks' => 'कश्मीरी - (كشميري)', # Kashmiri - 'ksh' => 'Ripoarisch', # Ripuarian - 'ku' => 'Kurdî', # Kurdish - 'ku-latn' => "\xE2\x80\xAAKurdî (latînî)\xE2\x80\xAC", # Northern Kurdish Latin script - 'ku-arab' => "\xE2\x80\xABكوردي (عەرەبی)\xE2\x80\xAC", # Northern Kurdish Arabic script - 'kv' => 'Коми', # Komi-Zyrian, cyrillic is common script but also written in latin script - 'kw' => 'Kernewek', # Cornish + 'ksh' => 'Ripoarisch', # Ripuarian + 'ku' => 'Kurdî', # Kurdish (multiple scripts - defaults to Latin) + 'ku-latn' => "\xE2\x80\xAAKurdî (latînî)\xE2\x80\xAC", # Northern Kurdish (Latin script) + 'ku-arab' => "\xE2\x80\xABكوردي (عەرەبی)\xE2\x80\xAC", # Northern Kurdish (Arabic script) (falls back to ckb) + 'kv' => 'Коми', # Komi-Zyrian (Cyrillic is common script but also written in Latin script) + 'kw' => 'Kernowek', # Cornish 'ky' => 'Кыргызча', # Kirghiz 'la' => 'Latina', # Latin 'lad' => 'Ladino', # Ladino @@ -200,12 +200,13 @@ 'lzh' => '文言', # Literary Chinese -- (bug 8217) lzh instead of zh-classical, http://www.sil.org/iso639-3/codes.asp?order=639_3&letter=l 'lzz' => 'Lazuri', # Laz 'mai' => 'मैथिली', # Maithili - 'map-bms' => 'Basa Banyumasan', # Banyumasan + 'map-bms' => 'Basa Banyumasan', # Banyumasan 'mdf' => 'Мокшень', # Moksha 'mg' => 'Malagasy', # Malagasy 'mh' => 'Ebon', # Marshallese 'mhr' => 'Олык Марий', # Eastern Mari 'mi' => 'Māori', # Maori + 'min' => 'Baso Minangkabau', # Minangkabau 'mk' => 'Македонски', # Macedonian 'ml' => 'മലയാളം', # Malayalam 'mn' => 'Монгол', # Halh Mongolian (Cyrillic) (ISO 639-3: khk) @@ -231,6 +232,7 @@ 'ng' => 'Oshiwambo', # Ndonga 'niu' => 'Niuē', # Niuean 'nl' => 'Nederlands', # Dutch + 'nl-informal' => "\xE2\x80\xAANederlands (informeel)\xE2\x80\xAC", # Dutch (informal address ("je")) 'nn' => "\xE2\x80\xAANorsk (nynorsk)\xE2\x80\xAC", # Norwegian (Nynorsk) 'no' => "\xE2\x80\xAANorsk (bokmål)\xE2\x80\xAC", # Norwegian 'nov' => 'Novial', # Novial @@ -242,14 +244,14 @@ 'om' => 'Oromoo', # Oromo 'or' => 'ଓଡ଼ିଆ', # Oriya 'os' => 'Иронау', # Ossetic - 'pa' => 'ਪੰਜਾਬੀ', # Eastern Punjabi (pan) + 'pa' => 'ਪੰਜਾਬੀ', # Eastern Punjabi (Gurmukhi script) (pan) 'pag' => 'Pangasinan', # Pangasinan 'pam' => 'Kapampangan', # Pampanga 'pap' => 'Papiamentu', # Papiamentu 'pcd' => 'Picard', # Picard 'pdc' => 'Deitsch', # Pennsylvania German 'pdt' => 'Plautdietsch', # Plautdietsch/Mennonite Low German - 'pfl' => 'Pfälzisch', # Palatinate German + 'pfl' => 'Pälzisch', # Palatinate German 'pi' => 'पािऴ', # Pali 'pih' => 'Norfuk / Pitkern', # Norfuk/Pitcairn/Norfolk 'pl' => 'Polski', # Polish @@ -270,10 +272,10 @@ 'roa-rup' => 'Armãneashce', # Aromanian 'roa-tara' => 'Tarandíne', # Tarantino 'ru' => 'Русский', # Russian - 'rue' => 'русиньскый язык', # Rusyn - 'ruq' => 'Vlăheşte', # Megleno-Romanian (falls back to ruq-latn) + 'rue' => 'Русиньскый', # Rusyn + 'ruq' => 'Vlăheşte', # Megleno-Romanian (multiple scripts - defaults to Latin) 'ruq-cyrl' => 'Влахесте', # Megleno-Romanian (Cyrillic script) - #'ruq-grek' => 'Βλαεστε', # Megleno-Romanian (Greek script) + # 'ruq-grek' => 'Βλαεστε', # Megleno-Romanian (Greek script) 'ruq-latn' => 'Vlăheşte', # Megleno-Romanian (Latin script) 'rw' => 'Kinyarwanda', # Kinyarwanda, should possibly be Kinyarwandi 'sa' => 'संस्कृत', # Sanskrit @@ -286,6 +288,7 @@ 'se' => 'Sámegiella', # Northern Sami 'sei' => 'Cmique Itom', # Seri 'sg' => 'Sängö', # Sango/Sangho + 'sgs' => 'Žemaitėška', # Samogitian 'sh' => 'Srpskohrvatski / Српскохрватски', # Serbocroatian 'shi' => 'Tašlḥiyt', # Tachelhit 'si' => 'සිංහල', # Sinhalese @@ -298,9 +301,9 @@ 'sn' => 'chiShona', # Shona 'so' => 'Soomaaliga', # Somali 'sq' => 'Shqip', # Albanian - 'sr' => 'Српски / Srpski', # Serbian - 'sr-ec' => 'Српски (ћирилица)', # Serbian Cyrillic ekavian - 'sr-el' => 'Srpski (latinica)', # Serbian Latin ekavian + 'sr' => 'Српски / Srpski', # Serbian (multiple scripts - defaults to Cyrillic) + 'sr-ec' => "\xE2\x80\xAAСрпски (ћирилица)\xE2\x80\xAC", # Serbian Cyrillic ekavian + 'sr-el' => "\xE2\x80\xAASrpski (latinica)\xE2\x80\xAC", # Serbian Latin ekavian 'srn' => 'Sranantongo', # Sranan Tongo 'ss' => 'SiSwati', # Swati 'st' => 'Sesotho', # Southern Sotho @@ -328,16 +331,16 @@ 'tr' => 'Türkçe', # Turkish 'ts' => 'Xitsonga', # Tsonga 'tt' => 'Татарча/Tatarça', # Tatar (multiple scripts - defaults to Cyrillic) - 'tt-cyrl' => 'Татарча', # Tatar (Cyrillic script) + 'tt-cyrl' => 'Татарча', # Tatar (Cyrillic script) (default) 'tt-latn' => 'Tatarça', # Tatar (Latin script) 'tum' => 'chiTumbuka', # Tumbuka 'tw' => 'Twi', # Twi, (FIXME!) 'ty' => 'Reo Mā`ohi', # Tahitian 'tyv' => 'Тыва дыл', # Tyvan 'udm' => 'Удмурт', # Udmurt - 'ug' => 'Uyghurche / ئۇيغۇرچە', # Uyghur (multiple scripts - defaults to Latin) - 'ug-arab' => 'ئۇيغۇرچە', # Uyghur (Arabic script) - 'ug-latn' => 'Uyghurche', # Uyghur (Latin script - default) + 'ug' => 'ئۇيغۇرچە / Uyghurche', # Uyghur (multiple scripts - defaults to Arabic) + 'ug-arab' => 'ئۇيغۇرچە', # Uyghur (Arabic script) (default) + 'ug-latn' => 'Uyghurche', # Uyghur (Latin script) 'uk' => 'Українська', # Ukrainian 'ur' => 'اردو', # Urdu 'uz' => 'O\'zbek', # Uzbek @@ -365,8 +368,8 @@ 'zh' => '中文', # (Zhōng Wén) - Chinese 'zh-classical' => '文言', # Classical Chinese/Literary Chinese -- (see bug 8217) 'zh-cn' => "\xE2\x80\xAA中文(中国大陆)\xE2\x80\xAC", # Chinese (PRC) - 'zh-hans' => "\xE2\x80\xAA中文(简体)\xE2\x80\xAC", # Chinese written using the Simplified Chinese script - 'zh-hant' => "\xE2\x80\xAA中文(繁體)\xE2\x80\xAC", # Chinese written using the Traditional Chinese script + 'zh-hans' => "\xE2\x80\xAA中文(简体)\xE2\x80\xAC", # Mandarin Chinese (Simplified Chinese script) (cmn-hans) + 'zh-hant' => "\xE2\x80\xAA中文(繁體)\xE2\x80\xAC", # Mandarin Chinese (Traditional Chinese script) (cmn-hant) 'zh-hk' => "\xE2\x80\xAA中文(香港)\xE2\x80\xAC", # Chinese (Hong Kong) 'zh-min-nan' => 'Bân-lâm-gú', # Min-nan -- (see bug 8217) 'zh-mo' => "\xE2\x80\xAA中文(澳門)\xE2\x80\xAC", # Chinese (Macau) diff --git a/languages/classes/LanguageAm.php b/languages/classes/LanguageAm.php index cf31c709..77374d3c 100644 --- a/languages/classes/LanguageAm.php +++ b/languages/classes/LanguageAm.php @@ -1,5 +1,6 @@ <?php /** + * Amharic (አማርኛ) * * @ingroup Language */ @@ -8,9 +9,9 @@ class LanguageAm extends Language { * Use singular form for zero */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); - return ($count <= 1) ? $forms[0] : $forms[1]; + return ( $count <= 1 ) ? $forms[0] : $forms[1]; } } diff --git a/languages/classes/LanguageAr.php b/languages/classes/LanguageAr.php index 70a53f86..77c46025 100644 --- a/languages/classes/LanguageAr.php +++ b/languages/classes/LanguageAr.php @@ -7,18 +7,18 @@ */ class LanguageAr extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 6 ); if ( $count == 0 ) { $index = 0; } elseif ( $count == 1 ) { $index = 1; - } elseif( $count == 2 ) { + } elseif ( $count == 2 ) { $index = 2; - } elseif( $count % 100 >= 3 && $count % 100 <= 10 ) { + } elseif ( $count % 100 >= 3 && $count % 100 <= 10 ) { $index = 3; - } elseif( $count % 100 >= 11 && $count % 100 <= 99 ) { + } elseif ( $count % 100 >= 11 && $count % 100 <= 99 ) { $index = 4; } else { $index = 5; @@ -27,10 +27,10 @@ class LanguageAr extends Language { } /** - * Temporary hack for bug 9413: replace Arabic presentation forms with their - * standard equivalents. + * Temporary hack for bug 9413: replace Arabic presentation forms with their + * standard equivalents. * - * FIXME: This is language-specific for now only to avoid the negative + * FIXME: This is language-specific for now only to avoid the negative * performance impact of enabling it for all languages. */ function normalize( $s ) { diff --git a/languages/classes/LanguageBat_smg.php b/languages/classes/LanguageBat_smg.php index 8d3450ac..5b6c92a6 100644 --- a/languages/classes/LanguageBat_smg.php +++ b/languages/classes/LanguageBat_smg.php @@ -8,15 +8,15 @@ class LanguageBat_smg extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 4 ); $count = abs( $count ); - if ( $count === 0 || ($count%100 === 0 || ($count%100 >= 10 && $count%100 < 20)) ) { + if ( $count === 0 || ( $count % 100 === 0 || ( $count % 100 >= 10 && $count % 100 < 20 ) ) ) { return $forms[2]; - } elseif ( $count%10 === 1 ) { + } elseif ( $count % 10 === 1 ) { return $forms[0]; - } elseif ( $count%10 === 2 ) { + } elseif ( $count % 10 === 2 ) { return $forms[1]; } else { return $forms[3]; diff --git a/languages/classes/LanguageBe.php b/languages/classes/LanguageBe.php index b86a5f30..0b147333 100644 --- a/languages/classes/LanguageBe.php +++ b/languages/classes/LanguageBe.php @@ -15,15 +15,15 @@ class LanguageBe extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } // FIXME: CLDR defines 4 plural forms instead of 3 // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html $forms = $this->preConvertPlural( $forms, 3 ); - if ($count > 10 && floor(($count % 100) / 10) == 1) { + if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) { return $forms[2]; } else { - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[0]; case 2: case 3: diff --git a/languages/classes/LanguageBe_tarask.php b/languages/classes/LanguageBe_tarask.php index 96ad9467..b29d8770 100644 --- a/languages/classes/LanguageBe_tarask.php +++ b/languages/classes/LanguageBe_tarask.php @@ -4,7 +4,7 @@ * @ingroup Language * * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com> - * @link http://be.wikipedia.org/wiki/Talk:LanguageBe.php + * @link http://be-x-old.wikipedia.org/wiki/Project_talk:LanguageBe_tarask.php * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License * @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License */ @@ -19,19 +19,19 @@ class LanguageBe_tarask extends Language { */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } - //if no number with word, then use $form[0] for singular and $form[1] for plural or zero - if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; + // if no number with word, then use $form[0] for singular and $form[1] for plural or zero + if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; // FIXME: CLDR defines 4 plural forms instead of 3 // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html $forms = $this->preConvertPlural( $forms, 3 ); - if ($count > 10 && floor(($count % 100) / 10) == 1) { + if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) { return $forms[2]; } else { - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[0]; case 2: case 3: @@ -40,4 +40,37 @@ class LanguageBe_tarask extends Language { } } } + + /* + * The Belarusian language uses apostrophe sign, + * but the characters used for this could be both U+0027 and U+2019. + * This function unifies apostrophe sign in search index values + * to enable seach using both apostrophe signs. + */ + function normalizeForSearch( $string ) { + wfProfileIn( __METHOD__ ); + + # MySQL fulltext index doesn't grok utf-8, so we + # need to fold cases and convert to hex + + # Replacing apostrophe sign U+2019 with U+0027 + $s = preg_replace( '/\xe2\x80\x99/', '\'', $string ); + + $s = parent::normalizeForSearch( $s ); + + wfProfileOut( __METHOD__ ); + return $s; + } + + /* + * Four-digit number should be without group commas (spaces) + * So "1 234 567", "12 345" but "1234" + */ + function commafy( $_ ) { + if ( preg_match( '/^-?\d{1,4}(\.\d*)?$/', $_ ) ) { + return $_; + } else { + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); + } + } } diff --git a/languages/classes/LanguageBg.php b/languages/classes/LanguageBg.php index bb10675a..d6d34090 100644 --- a/languages/classes/LanguageBg.php +++ b/languages/classes/LanguageBg.php @@ -9,9 +9,9 @@ class LanguageBg extends Language { * ISO number formatting: 123 456 789,99. * Avoid tripple grouping by numbers with whole part up to 4 digits. */ - function commafy($_) { - if (!preg_match('/^\d{1,4}$/',$_)) { - return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_))); + function commafy( $_ ) { + if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } else { return $_; } diff --git a/languages/classes/LanguageBh.php b/languages/classes/LanguageBh.php index 80119ec7..3272e2f3 100644 --- a/languages/classes/LanguageBh.php +++ b/languages/classes/LanguageBh.php @@ -1,5 +1,6 @@ <?php /** + * Bihari (भोजपुरी) * * @ingroup Language */ @@ -8,9 +9,9 @@ class LanguageBh extends Language { * Use singular form for zero */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); - return ($count <= 1) ? $forms[0] : $forms[1]; + return ( $count <= 1 ) ? $forms[0] : $forms[1]; } } diff --git a/languages/classes/LanguageBs.php b/languages/classes/LanguageBs.php index df522f83..6432109d 100644 --- a/languages/classes/LanguageBs.php +++ b/languages/classes/LanguageBs.php @@ -7,15 +7,15 @@ class LanguageBs extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 3 ); // FIXME: CLDR defines 4 plural forms instead of 3. Plural for decimals is missing. // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html - if ($count > 10 && floor(($count % 100) / 10) == 1) { + if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) { return $forms[2]; } else { - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[0]; case 2: case 3: @@ -32,7 +32,7 @@ class LanguageBs extends Language { */ function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms['bs'][$case][$word]) ) { + if ( isset( $wgGrammarForms['bs'][$case][$word] ) ) { return $wgGrammarForms['bs'][$case][$word]; } switch ( $case ) { diff --git a/languages/classes/LanguageCs.php b/languages/classes/LanguageCs.php index ca1669b9..935aed4e 100644 --- a/languages/classes/LanguageCs.php +++ b/languages/classes/LanguageCs.php @@ -12,7 +12,7 @@ class LanguageCs extends Language { # {{plural:count|form1|form0,2+}} for single form plurals # in a message function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 3 ); switch ( $count ) { diff --git a/languages/classes/LanguageCu.php b/languages/classes/LanguageCu.php index e4ef7b02..1aecbca5 100644 --- a/languages/classes/LanguageCu.php +++ b/languages/classes/LanguageCu.php @@ -9,36 +9,36 @@ class LanguageCu extends Language { # Invoked with {{grammar:case|word}} function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms['сu'][$case][$word]) ) { + if ( isset( $wgGrammarForms['сu'][$case][$word] ) ) { return $wgGrammarForms['сu'][$case][$word]; } # These rules are not perfect, but they are currently only used for site names so it doesn't # matter if they are wrong sometimes. Just add a special case for your site name if necessary. - #join and array_slice instead mb_substr + # join and array_slice instead mb_substr $ar = array(); preg_match_all( '/./us', $word, $ar ); - if (!preg_match("/[a-zA-Z_]/us", $word)) + if ( !preg_match( "/[a-zA-Z_]/us", $word ) ) switch ( $case ) { - case 'genitive': #родительный падеж - if ((join('',array_slice($ar[0],-4))=='вики') || (join('',array_slice($ar[0],-4))=='Вики')) - {} - elseif (join('',array_slice($ar[0],-2))=='ї') - $word = join('',array_slice($ar[0],0,-2)).'їѩ'; + case 'genitive': # родительный падеж + if ( ( join( '', array_slice( $ar[0], -4 ) ) == 'вики' ) || ( join( '', array_slice( $ar[0], -4 ) ) == 'Вики' ) ) + { } + elseif ( join( '', array_slice( $ar[0], -2 ) ) == 'ї' ) + $word = join( '', array_slice( $ar[0], 0, -2 ) ) . 'їѩ'; break; - case 'accusative': #винительный падеж - #stub + case 'accusative': # винительный падеж + # stub break; } return $word; } function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 4 ); - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[0]; case 2: return $forms[1]; case 3: diff --git a/languages/classes/LanguageCy.php b/languages/classes/LanguageCy.php index 9a395393..d7727de2 100644 --- a/languages/classes/LanguageCy.php +++ b/languages/classes/LanguageCy.php @@ -7,7 +7,7 @@ */ class LanguageCy extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } // FIXME: CLDR defines 4 plural forms; very different, actually. // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#cy diff --git a/languages/classes/LanguageDsb.php b/languages/classes/LanguageDsb.php index 4ea1b893..1c97c8ad 100644 --- a/languages/classes/LanguageDsb.php +++ b/languages/classes/LanguageDsb.php @@ -27,7 +27,7 @@ class LanguageDsb extends Language { } function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 4 ); switch ( abs( $count ) % 100 ) { diff --git a/languages/classes/LanguageEo.php b/languages/classes/LanguageEo.php index 822a43f7..7ec447e7 100644 --- a/languages/classes/LanguageEo.php +++ b/languages/classes/LanguageEo.php @@ -3,63 +3,103 @@ /** Esperanto (Esperanto) * * @ingroup Language + * @author Brion Vibber <brion@pobox.com> */ class LanguageEo extends Language { + /** + * Wrapper for charset conversions. + * + * In most languages, this calls through to standard system iconv(), but + * for Esperanto we're also adding a special pseudo-charset to convert + * accented characters to/from the ASCII-friendly "X" surrogate coding: + * + * cx = ĉ cxx = cx + * gx = ĝ gxx = gx + * hx = ĥ hxx = hx + * jx = ĵ jxx = jx + * sx = ŝ sxx = sx + * ux = ŭ uxx = ux + * xx = x + * + * http://en.wikipedia.org/wiki/Esperanto_orthography#X-system + * http://eo.wikipedia.org/wiki/X-sistemo + * + * X-conversion is applied, in either direction, between "utf-8" and "x" charsets; + * this comes into effect when input is run through $wgRequest->getText() and the + * $wgEditEncoding is set to 'x'. + * + * In the long run, this should be moved out of here and into the client-side + * editor behavior; the original server-side translation system dates to 2002-2003 + * when many browsers with really bad Unicode support were still in use. + * + * @param string $in input character set + * @param string $out output character set + * @param string $string text to be converted + * @return string + */ function iconv( $in, $out, $string ) { - # Por multaj lingvoj, ĉi tiu nur voku la sisteman funkcion iconv() - # Ni ankaŭ konvertu X-sistemajn surogotajn - if( strcasecmp( $in, 'x' ) == 0 and strcasecmp( $out, 'utf-8' ) == 0) { - $xu = array ( - 'xx' => 'x' , 'xX' => 'x' , - 'Xx' => 'X' , 'XX' => 'X' , - "Cx" => "\xc4\x88" , "CX" => "\xc4\x88" , - "cx" => "\xc4\x89" , "cX" => "\xc4\x89" , - "Gx" => "\xc4\x9c" , "GX" => "\xc4\x9c" , - "gx" => "\xc4\x9d" , "gX" => "\xc4\x9d" , - "Hx" => "\xc4\xa4" , "HX" => "\xc4\xa4" , - "hx" => "\xc4\xa5" , "hX" => "\xc4\xa5" , - "Jx" => "\xc4\xb4" , "JX" => "\xc4\xb4" , - "jx" => "\xc4\xb5" , "jX" => "\xc4\xb5" , - "Sx" => "\xc5\x9c" , "SX" => "\xc5\x9c" , - "sx" => "\xc5\x9d" , "sX" => "\xc5\x9d" , - "Ux" => "\xc5\xac" , "UX" => "\xc5\xac" , - "ux" => "\xc5\xad" , "uX" => "\xc5\xad" - ) ; - return preg_replace ( '/([cghjsu]x?)((?:xx)*)(?!x)/ei', - 'strtr( "$1", $xu ) . strtr( "$2", $xu )', $string ); - } else if( strcasecmp( $in, 'UTF-8' ) == 0 and strcasecmp( $out, 'x' ) == 0 ) { - $ux = array ( - 'x' => 'xx' , 'X' => 'Xx' , - "\xc4\x88" => "Cx" , "\xc4\x89" => "cx" , - "\xc4\x9c" => "Gx" , "\xc4\x9d" => "gx" , - "\xc4\xa4" => "Hx" , "\xc4\xa5" => "hx" , - "\xc4\xb4" => "Jx" , "\xc4\xb5" => "jx" , - "\xc5\x9c" => "Sx" , "\xc5\x9d" => "sx" , - "\xc5\xac" => "Ux" , "\xc5\xad" => "ux" - ) ; + if ( strcasecmp( $in, 'x' ) == 0 && strcasecmp( $out, 'utf-8' ) == 0 ) { + return preg_replace_callback ( + '/([cghjsu]x?)((?:xx)*)(?!x)/i', + array( $this, 'strrtxuCallback' ), $string ); + } else if ( strcasecmp( $in, 'UTF-8' ) == 0 && strcasecmp( $out, 'x' ) == 0 ) { # Double Xs only if they follow cxapelutaj literoj. - return preg_replace( '/((?:[cghjsu]|\xc4[\x88\x89\x9c\x9d\xa4\xa5\xb4\xb5]'. - '|\xc5[\x9c\x9d\xac\xad])x*)/ei', 'strtr( "$1", $ux )', $string ); + return preg_replace_callback( + '/((?:[cghjsu]|\xc4[\x88\x89\x9c\x9d\xa4\xa5\xb4\xb5]|\xc5[\x9c\x9d\xac\xad])x*)/i', + array( $this, 'strrtuxCallback' ), $string ); } return parent::iconv( $in, $out, $string ); } + function strrtuxCallback( $matches ) { + static $ux = array ( + 'x' => 'xx' , 'X' => 'Xx' , + "\xc4\x88" => "Cx" , "\xc4\x89" => "cx" , + "\xc4\x9c" => "Gx" , "\xc4\x9d" => "gx" , + "\xc4\xa4" => "Hx" , "\xc4\xa5" => "hx" , + "\xc4\xb4" => "Jx" , "\xc4\xb5" => "jx" , + "\xc5\x9c" => "Sx" , "\xc5\x9d" => "sx" , + "\xc5\xac" => "Ux" , "\xc5\xad" => "ux" + ); + return strtr( $matches[1], $ux ); + } + + function strrtxuCallback( $matches ) { + static $xu = array ( + 'xx' => 'x' , 'xX' => 'x' , + 'Xx' => 'X' , 'XX' => 'X' , + "Cx" => "\xc4\x88" , "CX" => "\xc4\x88" , + "cx" => "\xc4\x89" , "cX" => "\xc4\x89" , + "Gx" => "\xc4\x9c" , "GX" => "\xc4\x9c" , + "gx" => "\xc4\x9d" , "gX" => "\xc4\x9d" , + "Hx" => "\xc4\xa4" , "HX" => "\xc4\xa4" , + "hx" => "\xc4\xa5" , "hX" => "\xc4\xa5" , + "Jx" => "\xc4\xb4" , "JX" => "\xc4\xb4" , + "jx" => "\xc4\xb5" , "jX" => "\xc4\xb5" , + "Sx" => "\xc5\x9c" , "SX" => "\xc5\x9c" , + "sx" => "\xc5\x9d" , "sX" => "\xc5\x9d" , + "Ux" => "\xc5\xac" , "UX" => "\xc5\xac" , + "ux" => "\xc5\xad" , "uX" => "\xc5\xad" + ); + return strtr( $matches[1], $xu ) . strtr( $matches[2], $xu ); + } + function checkTitleEncoding( $s ) { # Check for X-system backwards-compatibility URLs - $ishigh = preg_match( '/[\x80-\xff]/', $s); + $ishigh = preg_match( '/[\x80-\xff]/', $s ); $isutf = preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' . '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s ); - if($ishigh and !$isutf) { + if ( $ishigh and !$isutf ) { # Assume Latin1 $s = utf8_encode( $s ); } else { - if( preg_match( '/(\xc4[\x88\x89\x9c\x9d\xa4\xa5\xb4\xb5]'. + if ( preg_match( '/(\xc4[\x88\x89\x9c\x9d\xa4\xa5\xb4\xb5]' . '|\xc5[\x9c\x9d\xac\xad])/', $s ) ) return $s; } - //if( preg_match( '/[cghjsu]x/i', $s ) ) + // if( preg_match( '/[cghjsu]x/i', $s ) ) // return $this->iconv( 'x', 'utf-8', $s ); return $s; } diff --git a/languages/classes/LanguageEt.php b/languages/classes/LanguageEt.php index c6729d99..226c2d73 100644 --- a/languages/classes/LanguageEt.php +++ b/languages/classes/LanguageEt.php @@ -9,9 +9,9 @@ class LanguageEt extends Language { /** * Avoid grouping whole numbers between 0 to 9999 */ - function commafy($_) { - if (!preg_match('/^\d{1,4}$/',$_)) { - return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_))); + function commafy( $_ ) { + if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } else { return $_; } diff --git a/languages/classes/LanguageFi.php b/languages/classes/LanguageFi.php index d1348f03..e3d922c4 100644 --- a/languages/classes/LanguageFi.php +++ b/languages/classes/LanguageFi.php @@ -12,7 +12,7 @@ class LanguageFi extends Language { # Invoked with {{GRAMMAR:case|word}} function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms['fi'][$case][$word]) ) { + if ( isset( $wgGrammarForms['fi'][$case][$word] ) ) { return $wgGrammarForms['fi'][$case][$word]; } @@ -38,18 +38,18 @@ class LanguageFi extends Language { $word .= 'n'; break; case 'elative': - $word .= ($aou ? 'sta' : 'stä'); + $word .= ( $aou ? 'sta' : 'stä' ); break; case 'partitive': - $word .= ($aou ? 'a' : 'ä'); + $word .= ( $aou ? 'a' : 'ä' ); break; case 'illative': # Double the last letter and add 'n' # mb_substr has a compatibility function in GlobalFunctions.php - $word = $word . mb_substr($word, -1) . 'n'; + $word = $word . mb_substr( $word, -1 ) . 'n'; break; case 'inessive': - $word .= ($aou ? 'ssa' : 'ssä'); + $word .= ( $aou ? 'ssa' : 'ssä' ); break; } return $word; @@ -113,15 +113,15 @@ class LanguageFi extends Language { ); $final = ''; - $tokens = explode ( ' ', $str); - foreach( $tokens as $item ) { - if ( !is_numeric($item) ) { - if ( count ( explode( '-', $item ) ) == 3 && strlen($item) == 10 ) { + $tokens = explode ( ' ', $str ); + foreach ( $tokens as $item ) { + if ( !is_numeric( $item ) ) { + if ( count ( explode( '-', $item ) ) == 3 && strlen( $item ) == 10 ) { list( $yyyy, $mm, $dd ) = explode( '-', $item ); - $final .= ' ' . $this->date( "{$yyyy}{$mm}{$dd}00000000"); + $final .= ' ' . $this->date( "{$yyyy}{$mm}{$dd}000000" ); continue; } - if( isset( $weekds[$item] ) ) { + if ( isset( $weekds[$item] ) ) { $final .= ' ' . $weekds[$item]; continue; } diff --git a/languages/classes/LanguageFr.php b/languages/classes/LanguageFr.php index 7341bb86..dec1204c 100644 --- a/languages/classes/LanguageFr.php +++ b/languages/classes/LanguageFr.php @@ -9,9 +9,9 @@ class LanguageFr extends Language { * Use singular form for zero (see bug 7309) */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); - return ($count <= 1) ? $forms[0] : $forms[1]; + return ( $count <= 1 ) ? $forms[0] : $forms[1]; } } diff --git a/languages/classes/LanguageGa.php b/languages/classes/LanguageGa.php index 344fdc84..a55e5f30 100644 --- a/languages/classes/LanguageGa.php +++ b/languages/classes/LanguageGa.php @@ -9,13 +9,13 @@ class LanguageGa extends Language { # Invoked with {{GRAMMAR:transformation|word}} function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms['ga'][$case][$word]) ) { + if ( isset( $wgGrammarForms['ga'][$case][$word] ) ) { return $wgGrammarForms['ga'][$case][$word]; } switch ( $case ) { case 'ainmlae': - switch ($word) { + switch ( $word ) { case 'an Domhnach': $word = 'Dé Domhnaigh'; break; case 'an Luan': @@ -36,14 +36,14 @@ class LanguageGa extends Language { } function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } // plural forms per http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ga $forms = $this->preConvertPlural( $forms, 3 ); if ( $count == 1 ) { $index = 0; - } elseif( $count == 2 ) { + } elseif ( $count == 2 ) { $index = 1; } else { $index = 2; diff --git a/languages/classes/LanguageGan.php b/languages/classes/LanguageGan.php index 54202e48..da5e1d22 100644 --- a/languages/classes/LanguageGan.php +++ b/languages/classes/LanguageGan.php @@ -1,35 +1,35 @@ <?php -require_once( dirname(__FILE__).'/../LanguageConverter.php' ); -require_once( dirname(__FILE__).'/LanguageZh.php' ); +require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' ); +require_once( dirname( __FILE__ ) . '/LanguageZh.php' ); /** * @ingroup Language */ class GanConverter extends LanguageConverter { - function __construct($langobj, $maincode, - $variants=array(), - $variantfallbacks=array(), + function __construct( $langobj, $maincode, + $variants = array(), + $variantfallbacks = array(), $flags = array(), $manualLevel = array() ) { $this->mDescCodeSep = ':'; $this->mDescVarSep = ';'; - parent::__construct($langobj, $maincode, + parent::__construct( $langobj, $maincode, $variants, $variantfallbacks, $flags, - $manualLevel); + $manualLevel ); $names = array( 'gan' => '原文', 'gan-hans' => '简体', 'gan-hant' => '繁體', ); - $this->mVariantNames = array_merge($this->mVariantNames,$names); + $this->mVariantNames = array_merge( $this->mVariantNames, $names ); } function loadDefaultTables() { - require( dirname(__FILE__)."/../../includes/ZhConversion.php" ); + require( dirname( __FILE__ ) . "/../../includes/ZhConversion.php" ); $this->mTables = array( 'gan-hans' => new ReplacementArray( $zh2Hans ), 'gan-hant' => new ReplacementArray( $zh2Hant ), @@ -41,7 +41,7 @@ class GanConverter extends LanguageConverter { to mark anything. $noParse is there for compatibility with LanguageConvert::markNoConversion */ - function markNoConversion($text, $noParse = false) { + function markNoConversion( $text, $noParse = false ) { return $text; } @@ -62,20 +62,20 @@ class LanguageGan extends LanguageZh { global $wgHooks; parent::__construct(); - $variants = array('gan','gan-hans','gan-hant'); + $variants = array( 'gan', 'gan-hans', 'gan-hant' ); $variantfallbacks = array( - 'gan' => array('gan-hans','gan-hant'), - 'gan-hans' => array('gan'), - 'gan-hant' => array('gan'), + 'gan' => array( 'gan-hans', 'gan-hant' ), + 'gan-hans' => array( 'gan' ), + 'gan-hant' => array( 'gan' ), ); - $ml=array( + $ml = array( 'gan' => 'disable', ); $this->mConverter = new GanConverter( $this, 'gan', $variants, $variantfallbacks, array(), - $ml); + $ml ); $wgHooks['ArticleSaveComplete'][] = $this->mConverter; } @@ -84,13 +84,13 @@ class LanguageGan extends LanguageZh { function segmentForDiff( $text ) { return preg_replace( "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", - "' ' .\"$1\"", $text); + "' ' .\"$1\"", $text ); } function unsegmentForDiff( $text ) { return preg_replace( "/ ([\\xc0-\\xff][\\x80-\\xbf]*)/e", - "\"$1\"", $text); + "\"$1\"", $text ); } // word segmentation @@ -103,7 +103,7 @@ class LanguageGan extends LanguageZh { $terms = implode( '|', $termsArray ); $terms = self::convertDoubleWidth( $terms ); $terms = implode( '|', $this->mConverter->autoConvertToAllVariants( $terms ) ); - $ret = array_unique( explode('|', $terms) ); + $ret = array_unique( explode( '|', $terms ) ); return $ret; } } diff --git a/languages/classes/LanguageGd.php b/languages/classes/LanguageGd.php index 6c307f60..1b1b278e 100644 --- a/languages/classes/LanguageGd.php +++ b/languages/classes/LanguageGd.php @@ -18,7 +18,7 @@ class LanguageGd extends Language { * */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 4 ); $count = abs( $count ); diff --git a/languages/classes/LanguageGv.php b/languages/classes/LanguageGv.php index 5683826d..6e25e21c 100644 --- a/languages/classes/LanguageGv.php +++ b/languages/classes/LanguageGv.php @@ -9,14 +9,14 @@ class LanguageGv extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 4 ); - if ($count > 0 && ($count % 20) === 0 ) { + if ( $count > 0 && ( $count % 20 ) === 0 ) { return $forms[0]; } else { - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[1]; case 2: return $forms[2]; default: return $forms[3]; diff --git a/languages/classes/LanguageHe.php b/languages/classes/LanguageHe.php index d8256cb8..95beca79 100644 --- a/languages/classes/LanguageHe.php +++ b/languages/classes/LanguageHe.php @@ -8,62 +8,58 @@ * @author Rotem Liss */ class LanguageHe extends Language { + /** * Convert grammar forms of words. * * Available cases: * "prefixed" (or "תחילית") - when the word has a prefix * - * @param string the word to convert - * @param string the case + * @param $word String: the word to convert + * @param $case String: the case */ public function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms['he'][$case][$word]) ) { + if ( isset( $wgGrammarForms['he'][$case][$word] ) ) { return $wgGrammarForms['he'][$case][$word]; } - + switch ( $case ) { case 'prefixed': case 'תחילית': # Duplicate the "Waw" if prefixed if ( substr( $word, 0, 2 ) == "ו" && substr( $word, 0, 4 ) != "וו" ) { - $word = "ו".$word; + $word = "ו" . $word; } - + # Remove the "He" if prefixed if ( substr( $word, 0, 2 ) == "ה" ) { $word = substr( $word, 2 ); } - + # Add a hyphen if non-Hebrew letters if ( substr( $word, 0, 2 ) < "א" || substr( $word, 0, 2 ) > "ת" ) { - $word = "־".$word; + $word = "־" . $word; } } - + return $word; } - + /** * Gets a number and uses the suited form of the word. * - * @param integer the number of items - * @param string the first form (singular) - * @param string the second form (plural) - * @param string the third form (2 items, plural is used if not applicable and not specified - * @param not used (for compatibility with ancestor) - * @param not used (for compatibility with ancestor) - * - * @return string of the suited form of word + * @param $count Integer: the number of items + * @param $forms Array with 3 items: the three plural forms + * @return String: the suited form of word */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 3 ); if ( $count == '1' ) { return $forms[0]; - } elseif ( $count == '2' && isset($forms[2]) ) { + } elseif ( $count == '2' && isset( $forms[2] ) ) { return $forms[2]; } else { return $forms[1]; diff --git a/languages/classes/LanguageHi.php b/languages/classes/LanguageHi.php index 705c73bc..fc9d0de8 100644 --- a/languages/classes/LanguageHi.php +++ b/languages/classes/LanguageHi.php @@ -1,5 +1,6 @@ <?php /** + * Hindi (हिन्दी) * * @ingroup Language */ @@ -8,9 +9,9 @@ class LanguageHi extends Language { * Use singular form for zero */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); - return ($count <= 1) ? $forms[0] : $forms[1]; + return ( $count <= 1 ) ? $forms[0] : $forms[1]; } } diff --git a/languages/classes/LanguageHr.php b/languages/classes/LanguageHr.php index d8e84876..888029be 100644 --- a/languages/classes/LanguageHr.php +++ b/languages/classes/LanguageHr.php @@ -7,15 +7,15 @@ class LanguageHr extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } // FIXME: CLDR defines 4 plural forms instead of 3. Plural for for decimals is missing. // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html $forms = $this->preConvertPlural( $forms, 3 ); - if ($count > 10 && floor(($count % 100) / 10) == 1) { + if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) { return $forms[2]; } else { - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[0]; case 2: case 3: diff --git a/languages/classes/LanguageHsb.php b/languages/classes/LanguageHsb.php index f1418782..1b83f5ab 100644 --- a/languages/classes/LanguageHsb.php +++ b/languages/classes/LanguageHsb.php @@ -28,7 +28,7 @@ class LanguageHsb extends Language { } function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 4 ); switch ( abs( $count ) % 100 ) { diff --git a/languages/classes/LanguageHu.php b/languages/classes/LanguageHu.php index 7845bdbb..44ce330c 100644 --- a/languages/classes/LanguageHu.php +++ b/languages/classes/LanguageHu.php @@ -7,7 +7,7 @@ class LanguageHu extends Language { function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms[$this->getCode()][$case][$word]) ) { + if ( isset( $wgGrammarForms[$this->getCode()][$case][$word] ) ) { return $wgGrammarForms[$this->getCode()][$case][$word]; } diff --git a/languages/classes/LanguageHy.php b/languages/classes/LanguageHy.php index 73777def..527a55f5 100644 --- a/languages/classes/LanguageHy.php +++ b/languages/classes/LanguageHy.php @@ -10,58 +10,58 @@ class LanguageHy extends Language { # Invoked with {{grammar:case|word}} function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms['hy'][$case][$word]) ) { + if ( isset( $wgGrammarForms['hy'][$case][$word] ) ) { return $wgGrammarForms['hy'][$case][$word]; } # These rules are not perfect, but they are currently only used for site names so it doesn't # matter if they are wrong sometimes. Just add a special case for your site name if necessary. - #join and array_slice instead mb_substr + # join and array_slice instead mb_substr $ar = array(); preg_match_all( '/./us', $word, $ar ); - if (!preg_match("/[a-zA-Z_]/us", $word)) + if ( !preg_match( "/[a-zA-Z_]/us", $word ) ) switch ( $case ) { - case 'genitive': #սեռական հոլով - if (join('',array_slice($ar[0],-1))=='ա') - $word = join('',array_slice($ar[0],0,-1)).'այի'; - elseif (join('',array_slice($ar[0],-1))=='ո') - $word=join('',array_slice($ar[0],0,-1)).'ոյի'; - elseif (join('',array_slice($ar[0],-4))=='գիրք') - $word=join('',array_slice($ar[0],0,-4)).'գրքի'; + case 'genitive': # սեռական հոլով + if ( join( '', array_slice( $ar[0], -1 ) ) == 'ա' ) + $word = join( '', array_slice( $ar[0], 0, -1 ) ) . 'այի'; + elseif ( join( '', array_slice( $ar[0], -1 ) ) == 'ո' ) + $word = join( '', array_slice( $ar[0], 0, -1 ) ) . 'ոյի'; + elseif ( join( '', array_slice( $ar[0], -4 ) ) == 'գիրք' ) + $word = join( '', array_slice( $ar[0], 0, -4 ) ) . 'գրքի'; else - $word.='ի'; + $word .= 'ի'; break; - case 'dative': #Տրական հոլով - #stub + case 'dative': # Տրական հոլով + # stub break; - case 'accusative': #Հայցական հոլով - #stub + case 'accusative': # Հայցական հոլով + # stub break; case 'instrumental': # - #stub + # stub break; case 'prepositional': # - #stub + # stub break; } return $word; } function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); - return (abs($count) <= 1) ? $forms[0] : $forms[1]; + return ( abs( $count ) <= 1 ) ? $forms[0] : $forms[1]; } /* * Armenian numeric format is "12 345,67" but "1234,56" */ - function commafy($_) { - if (!preg_match('/^\d{1,4}$/',$_)) { - return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_))); + function commafy( $_ ) { + if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } else { return $_; } diff --git a/languages/classes/LanguageJa.php b/languages/classes/LanguageJa.php index 4a24260b..c5a992d5 100644 --- a/languages/classes/LanguageJa.php +++ b/languages/classes/LanguageJa.php @@ -6,7 +6,7 @@ * @ingroup Language */ class LanguageJa extends Language { - function wordSegmentation( $string ) { + function segmentByWord( $string ) { // Strip known punctuation ? // $s = preg_replace( '/\xe3\x80[\x80-\xbf]/', '', $s ); # U3000-303f @@ -23,14 +23,6 @@ class LanguageJa extends Language { return $s; } - function normalizeForSearch( $string ) { - // Double-width roman characters - $s = self::convertDoubleWidth( $string ); - - # Do general case folding and UTF-8 armoring - return parent::normalizeForSearch( $s ); - } - # Italic is not appropriate for Japanese script # Unfortunately most browsers do not recognise this, and render <em> as italic function emphasize( $text ) { diff --git a/languages/classes/LanguageKaa.php b/languages/classes/LanguageKaa.php index f9f61dbd..4c6710ed 100644 --- a/languages/classes/LanguageKaa.php +++ b/languages/classes/LanguageKaa.php @@ -51,7 +51,7 @@ class LanguageKaa extends Language { */ function commafy( $_ ) { if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev($_) ) ); + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } else { return $_; } diff --git a/languages/classes/LanguageKk.deps.php b/languages/classes/LanguageKk.deps.php index aa7361bb..0a2a8afb 100644 --- a/languages/classes/LanguageKk.deps.php +++ b/languages/classes/LanguageKk.deps.php @@ -5,5 +5,5 @@ // changed on a subsequent page view. // see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html -require_once( dirname(__FILE__).'/../LanguageConverter.php' ); -require_once( dirname(__FILE__).'/LanguageKk_cyrl.php' ); +require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' ); +require_once( dirname( __FILE__ ) . '/LanguageKk_cyrl.php' ); diff --git a/languages/classes/LanguageKk.php b/languages/classes/LanguageKk.php index 318b82a8..e3caacc8 100644 --- a/languages/classes/LanguageKk.php +++ b/languages/classes/LanguageKk.php @@ -1,15 +1,15 @@ <?php -require_once( dirname(__FILE__).'/../LanguageConverter.php' ); -require_once( dirname(__FILE__).'/LanguageKk_cyrl.php' ); +require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' ); +require_once( dirname( __FILE__ ) . '/LanguageKk_cyrl.php' ); define( 'KK_C_UC', 'АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҰҮФХҺЦЧШЩЪЫІЬЭЮЯ' ); # Kazakh Cyrillic uppercase define( 'KK_C_LC', 'аәбвгғдеёжзийкқлмнңоөпрстуұүфхһцчшщъыіьэюя' ); # Kazakh Cyrillic lowercase define( 'KK_L_UC', 'AÄBCÇDEÉFGĞHIİÏJKLMNÑOÖPQRSŞTUÜVWXYÝZ' ); # Kazakh Latin uppercase define( 'KK_L_LC', 'aäbcçdeéfgğhıiïjklmnñoöpqrsştuüvwxyýz' ); # Kazakh Latin lowercase -//define( 'KK_A', 'ٴابپتجحدرزسشعفقكلمنڭەوۇۋۆىيچھ' ); # Kazakh Arabic +// define( 'KK_A', 'ٴابپتجحدرزسشعفقكلمنڭەوۇۋۆىيچھ' ); # Kazakh Arabic define( 'H_HAMZA', 'ٴ' ); # U+0674 ARABIC LETTER HIGH HAMZA -//define( 'ZWNJ', '' ); # U+200C ZERO WIDTH NON-JOINER +// define( 'ZWNJ', '' ); # U+200C ZERO WIDTH NON-JOINER /** Kazakh (Қазақша) * converter routines @@ -18,10 +18,10 @@ define( 'H_HAMZA', 'ٴ' ); # U+0674 ARABIC LETTER HIGH HAMZA */ class KkConverter extends LanguageConverter { - function __construct($langobj, $maincode, - $variants=array(), - $variantfallbacks=array(), - $flags = array()) { + function __construct( $langobj, $maincode, + $variants = array(), + $variantfallbacks = array(), + $flags = array() ) { parent::__construct( $langobj, $maincode, $variants, $variantfallbacks, $flags ); @@ -46,9 +46,9 @@ class KkConverter extends LanguageConverter { 'kk-cyrl' => new ReplacementArray( $kk2Cyrl ), 'kk-latn' => new ReplacementArray( $kk2Latn ), 'kk-arab' => new ReplacementArray( $kk2Arab ), - 'kk-kz' => new ReplacementArray( array_merge($kk2Cyrl, $kk2KZ) ), - 'kk-tr' => new ReplacementArray( array_merge($kk2Latn, $kk2TR) ), - 'kk-cn' => new ReplacementArray( array_merge($kk2Arab, $kk2CN) ), + 'kk-kz' => new ReplacementArray( array_merge( $kk2Cyrl, $kk2KZ ) ), + 'kk-tr' => new ReplacementArray( array_merge( $kk2Latn, $kk2TR ) ), + 'kk-cn' => new ReplacementArray( array_merge( $kk2Arab, $kk2CN ) ), 'kk' => new ReplacementArray() ); } @@ -62,24 +62,24 @@ class KkConverter extends LanguageConverter { function loadRegs() { $this->mCyrl2Latn = array( - ## Punctuation + # # Punctuation '/№/u' => 'No.', - ## Е after vowels + # # Е after vowels '/([АӘЕЁИОӨҰҮЭЮЯЪЬ])Е/u' => '$1YE', '/([АӘЕЁИОӨҰҮЭЮЯЪЬ])е/ui' => '$1ye', - ## leading ЁЮЯЩ - '/^Ё(['.KK_C_UC.']|$)/u' => 'YO$1', '/^Ё(['.KK_C_LC.']|$)/u' => 'Yo$1', - '/^Ю(['.KK_C_UC.']|$)/u' => 'YU$1', '/^Ю(['.KK_C_LC.']|$)/u' => 'Yu$1', - '/^Я(['.KK_C_UC.']|$)/u' => 'YA$1', '/^Я(['.KK_C_LC.']|$)/u' => 'Ya$1', - '/^Щ(['.KK_C_UC.']|$)/u' => 'ŞÇ$1', '/^Щ(['.KK_C_LC.']|$)/u' => 'Şç$1', - ## other ЁЮЯ + # # leading ЁЮЯЩ + '/^Ё([' . KK_C_UC . ']|$)/u' => 'YO$1', '/^Ё([' . KK_C_LC . ']|$)/u' => 'Yo$1', + '/^Ю([' . KK_C_UC . ']|$)/u' => 'YU$1', '/^Ю([' . KK_C_LC . ']|$)/u' => 'Yu$1', + '/^Я([' . KK_C_UC . ']|$)/u' => 'YA$1', '/^Я([' . KK_C_LC . ']|$)/u' => 'Ya$1', + '/^Щ([' . KK_C_UC . ']|$)/u' => 'ŞÇ$1', '/^Щ([' . KK_C_LC . ']|$)/u' => 'Şç$1', + # # other ЁЮЯ '/Ё/u' => 'YO', '/ё/u' => 'yo', '/Ю/u' => 'YU', '/ю/u' => 'yu', '/Я/u' => 'YA', '/я/u' => 'ya', '/Щ/u' => 'ŞÇ', '/щ/u' => 'şç', - ## soft and hard signs + # # soft and hard signs '/[ъЪ]/u' => 'ʺ', '/[ьЬ]/u' => 'ʹ', - ## other characters + # # other characters '/А/u' => 'A', '/а/u' => 'a', '/Ә/u' => 'Ä', '/ә/u' => 'ä', '/Б/u' => 'B', '/б/u' => 'b', '/В/u' => 'V', '/в/u' => 'v', '/Г/u' => 'G', '/г/u' => 'g', '/Ғ/u' => 'Ğ', '/ғ/u' => 'ğ', @@ -101,24 +101,24 @@ class KkConverter extends LanguageConverter { ); $this->mLatn2Cyrl = array( - ## Punctuation + # # Punctuation '/#|No\./' => '№', - ## Şç - '/ŞÇʹ/u'=> 'ЩЬ', '/Şçʹ/u'=> 'Щь', '/Şçʹ/u'=> 'Щь', + # # Şç + '/ŞÇʹ/u' => 'ЩЬ', '/Şçʹ/u' => 'Щь', '/Şçʹ/u' => 'Щь', '/Ş[Çç]/u' => 'Щ', '/şç/u' => 'щ', - ## soft and hard signs - '/(['.KK_L_UC.'])ʺ(['.KK_L_UC.'])/u' => '$1Ъ$2', - '/ʺ(['.KK_L_LC.'])/u' => 'ъ$1', - '/(['.KK_L_UC.'])ʹ(['.KK_L_UC.'])/u' => '$1Ь$2', - '/ʹ(['.KK_L_LC.'])/u' => 'ь$1', + # # soft and hard signs + '/([' . KK_L_UC . '])ʺ([' . KK_L_UC . '])/u' => '$1Ъ$2', + '/ʺ([' . KK_L_LC . '])/u' => 'ъ$1', + '/([' . KK_L_UC . '])ʹ([' . KK_L_UC . '])/u' => '$1Ь$2', + '/ʹ([' . KK_L_LC . '])/u' => 'ь$1', '/ʺ/u' => 'ъ', '/ʹ/u' => 'ь', - ## Ye Yo Yu Ya. + # # Ye Yo Yu Ya. '/Y[Ee]/u' => 'Е', '/ye/u' => 'е', '/Y[Oo]/u' => 'Ё', '/yo/u' => 'ё', '/Y[UWuw]/u' => 'Ю', '/y[uw]/u' => 'ю', '/Y[Aa]/u' => 'Я', '/ya/u' => 'я', - ## other characters + # # other characters '/A/u' => 'А', '/a/u' => 'а', '/Ä/u' => 'Ә', '/ä/u' => 'ә', '/B/u' => 'Б', '/b/u' => 'б', '/C/u' => 'Ц', '/c/u' => 'ц', '/Ç/u' => 'Ч', '/ç/u' => 'ч', '/D/u' => 'Д', '/d/u' => 'д', @@ -140,14 +140,14 @@ class KkConverter extends LanguageConverter { ); $this->mCyLa2Arab = array( - ## Punctuation -> Arabic + # # Punctuation -> Arabic '/#|№|No\./u' => '', # ؀ '/\,/' => '،', # ، '/;/' => '؛', # ؛ '/\?/' => '؟', # ؟ '/%/' => '٪', # ٪ '/\*/' => '٭', # ٭ - ## Digits -> Arabic + # # Digits -> Arabic '/0/' => '۰', # ۰ '/1/' => '۱', # ۱ '/2/' => '۲', # ۲ @@ -158,7 +158,7 @@ class KkConverter extends LanguageConverter { '/7/' => '۷', # ۷ '/8/' => '۸', # ۸ '/9/' => '۹', # ۹ - ## Cyrillic -> Arabic + # # Cyrillic -> Arabic '/Аллаһ/ui' => 'ﷲ', '/([АӘЕЁИОӨҰҮЭЮЯЪЬ])е/ui' => '$1يە', '/[еэ]/ui' => 'ە', '/[ъь]/ui' => '', @@ -166,14 +166,14 @@ class KkConverter extends LanguageConverter { '/[и]/ui' => 'ىي', '/ё/ui' => 'يو', '/ю/ui' => 'يۋ', '/я/ui' => 'يا', '/[й]/ui' => 'ي', '/ц/ui' => 'تس', '/щ/ui' => 'شش', '/һ/ui' => 'ح', '/ч/ui' => 'تش', - #'/һ/ui' => 'ھ', '/ч/ui' => 'چ', + # '/һ/ui' => 'ھ', '/ч/ui' => 'چ', '/б/ui' => 'ب', '/в/ui' => 'ۆ', '/г/ui' => 'گ', '/ғ/ui' => 'ع', '/д/ui' => 'د', '/ж/ui' => 'ج', '/з/ui' => 'ز', '/к/ui' => 'ك', '/қ/ui' => 'ق', '/л/ui' => 'ل', '/м/ui' => 'م', '/н/ui' => 'ن', '/ң/ui' => 'ڭ', '/п/ui' => 'پ', '/р/ui' => 'ر', '/с/ui' => 'س', '/т/ui' => 'ت', '/у/ui' => 'ۋ', '/ф/ui' => 'ف', '/х/ui' => 'ح', '/ш/ui' => 'ش', - ## Latin -> Arabic // commented for now... + # # Latin -> Arabic // commented for now... /*'/Allah/ui' => 'ﷲ', '/[eé]/ui' => 'ە', '/[yý]/ui' => 'ي', '/[ʺʹ]/ui' => '', '/[aä]/ui' => 'ا', '/[oö]/ui' => 'و', '/[uü]/ui' => 'ۇ', @@ -195,13 +195,13 @@ class KkConverter extends LanguageConverter { update: delete all rule parsing because it's not used currently, and just produces a couple of bugs */ - function parseManualRule($rule, $flags=array()) { - if(in_array('T',$flags)){ - return parent::parseManualRule($rule, $flags); + function parseManualRule( $rule, $flags = array() ) { + if ( in_array( 'T', $flags ) ) { + return parent::parseManualRule( $rule, $flags ); } // otherwise ignore all formatting - foreach($this->mVariants as $v) { + foreach ( $this->mVariants as $v ) { $carray[$v] = $rule; } @@ -216,116 +216,115 @@ class KkConverter extends LanguageConverter { */ function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) { // check for user namespace - if(is_object($nt)){ + if ( is_object( $nt ) ) { $ns = $nt->getNamespace(); - if($ns==NS_USER || $ns==NS_USER_TALK) + if ( $ns == NS_USER || $ns == NS_USER_TALK ) return; } - $oldlink=$link; + $oldlink = $link; parent::findVariantLink( $link, $nt, $ignoreOtherCond ); - if( $this->getPreferredVariant()==$this->mMainLanguageCode ) - $link=$oldlink; + if ( $this->getPreferredVariant() == $this->mMainLanguageCode ) + $link = $oldlink; } /* * An ugly function wrapper for parsing Image titles * (to prevent image name conversion) */ - function autoConvert($text, $toVariant=false) { + function autoConvert( $text, $toVariant = false ) { global $wgTitle; - if(is_object($wgTitle) && $wgTitle->getNameSpace()==NS_FILE){ + if ( is_object( $wgTitle ) && $wgTitle->getNameSpace() == NS_FILE ) { $imagename = $wgTitle->getNsText(); - if(preg_match("/^$imagename:/",$text)) return $text; + if ( preg_match( "/^$imagename:/", $text ) ) return $text; } - return parent::autoConvert($text,$toVariant); + return parent::autoConvert( $text, $toVariant ); } /** * It translates text into variant */ - function translate( $text, $toVariant ){ - global $wgContLanguageCode; + function translate( $text, $toVariant ) { + global $wgLanguageCode; $text = parent::translate( $text, $toVariant ); - $letters = ''; switch( $toVariant ) { case 'kk-cyrl': case 'kk-kz': $letters = KK_L_UC . KK_L_LC . 'ʺʹ#0123456789'; - $wgContLanguageCode = 'kk'; + $wgLanguageCode = 'kk'; break; case 'kk-latn': case 'kk-tr': $letters = KK_C_UC . KK_C_LC . '№0123456789'; - $wgContLanguageCode = 'kk-Latn'; + $wgLanguageCode = 'kk-Latn'; break; case 'kk-arab': case 'kk-cn': - $letters = KK_C_UC.KK_C_LC./*KK_L_UC.KK_L_LC.'ʺʹ'.*/',;\?%\*№0123456789'; - $wgContLanguageCode = 'kk-Arab'; + $letters = KK_C_UC . KK_C_LC . /*KK_L_UC.KK_L_LC.'ʺʹ'.*/',;\?%\*№0123456789'; + $wgLanguageCode = 'kk-Arab'; break; default: - $wgContLanguageCode = 'kk'; + $wgLanguageCode = 'kk'; return $text; } // disable conversion variables like $1, $2... $varsfix = '\$[0-9]'; - $matches = preg_split( '/' . $varsfix . '[^' . $letters . ']+/u', $text, -1, PREG_SPLIT_OFFSET_CAPTURE); + $matches = preg_split( '/' . $varsfix . '[^' . $letters . ']+/u', $text, -1, PREG_SPLIT_OFFSET_CAPTURE ); $mstart = 0; $ret = ''; - foreach( $matches as $m ) { - $ret .= substr( $text, $mstart, $m[1]-$mstart ); + foreach ( $matches as $m ) { + $ret .= substr( $text, $mstart, $m[1] -$mstart ); $ret .= $this->regsConverter( $m[0], $toVariant ); - $mstart = $m[1] + strlen($m[0]); + $mstart = $m[1] + strlen( $m[0] ); } return $ret; } function regsConverter( $text, $toVariant ) { - if ($text == '') return $text; + if ( $text == '' ) { + return $text; + } - $pat = array(); - $rep = array(); switch( $toVariant ) { case 'kk-arab': case 'kk-cn': - $letters = KK_C_LC.KK_C_UC/*.KK_L_LC.KK_L_UC*/; + $letters = KK_C_LC . KK_C_UC/*.KK_L_LC.KK_L_UC*/; $front = 'әөүіӘӨҮІ'/*.'äöüiÄÖÜİ'*/; $excludes = 'еэгғкқЕЭГҒКҚ'/*.'eégğkqEÉGĞKQ'*/; // split text to words - $matches = preg_split( '/[\b\s\-\.:]+/', $text, -1, PREG_SPLIT_OFFSET_CAPTURE); + $matches = preg_split( '/[\b\s\-\.:]+/', $text, -1, PREG_SPLIT_OFFSET_CAPTURE ); $mstart = 0; $ret = ''; - foreach( $matches as $m ) { + foreach ( $matches as $m ) { $ret .= substr( $text, $mstart, $m[1] - $mstart ); // is matched the word to front vowels? // exclude a words matched to е, э, г, к, к, қ, // them should be without hamza - if ( preg_match('/['.$front.']/u', $m[0]) && !preg_match('/['.$excludes.']/u', $m[0]) ) { - $ret .= preg_replace('/['.$letters.']+/u', H_HAMZA.'$0', $m[0]); + if ( preg_match( '/[' . $front . ']/u', $m[0] ) && !preg_match( '/[' . $excludes . ']/u', $m[0] ) ) { + $ret .= preg_replace( '/[' . $letters . ']+/u', H_HAMZA . '$0', $m[0] ); } else { $ret .= $m[0]; } - $mstart = $m[1] + strlen($m[0]); + $mstart = $m[1] + strlen( $m[0] ); } $text =& $ret; - foreach( $this->mCyLa2Arab as $pat => $rep ) { + foreach ( $this->mCyLa2Arab as $pat => $rep ) { $text = preg_replace( $pat, $rep, $text ); } return $text; break; case 'kk-latn': case 'kk-tr': - foreach( $this->mCyrl2Latn as $pat => $rep ) { + foreach ( $this->mCyrl2Latn as $pat => $rep ) { $text = preg_replace( $pat, $rep, $text ); } return $text; break; case 'kk-cyrl': case 'kk-kz': - foreach( $this->mLatn2Cyrl as $pat => $rep ) { + foreach ( $this->mLatn2Cyrl as $pat => $rep ) { $text = preg_replace( $pat, $rep, $text ); } return $text; @@ -339,8 +338,8 @@ class KkConverter extends LanguageConverter { * We want our external link captions to be converted in variants, * so we return the original text instead -{$text}-, except for URLs */ - function markNoConversion( $text, $noParse=false ) { - if( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) ) + function markNoConversion( $text, $noParse = false ) { + if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) ) return parent::markNoConversion( $text ); return $text; } @@ -399,7 +398,7 @@ class LanguageKk extends LanguageKk_cyrl { */ function ucfirst ( $string ) { $variant = $this->getPreferredVariant(); - if ( ($variant == 'kk-latn' || $variant == 'kk-tr') && $string[0] == 'i' ) { + if ( ( $variant == 'kk-latn' || $variant == 'kk-tr' ) && $string[0] == 'i' ) { $string = 'İ' . substr( $string, 1 ); } else { $string = parent::ucfirst( $string ); @@ -413,7 +412,7 @@ class LanguageKk extends LanguageKk_cyrl { */ function lcfirst ( $string ) { $variant = $this->getPreferredVariant(); - if ( ($variant == 'kk-latn' || $variant == 'kk-tr') && $string[0] == 'I' ) { + if ( ( $variant == 'kk-latn' || $variant == 'kk-tr' ) && $string[0] == 'I' ) { $string = 'ı' . substr( $string, 1 ); } else { $string = parent::lcfirst( $string ); diff --git a/languages/classes/LanguageKk_cyrl.php b/languages/classes/LanguageKk_cyrl.php index e0a1b125..78febae1 100644 --- a/languages/classes/LanguageKk_cyrl.php +++ b/languages/classes/LanguageKk_cyrl.php @@ -27,24 +27,24 @@ class LanguageKk_cyrl extends Language { $allVowels = array( "е", "ө", "ү", "і", "ә", "э", "а", "о", "ұ", "ы", "я", "ё", "и" ); // Preceding letters $Nasals = array( "м", "н", "ң" ); - $Sonants = array( "и", "й", "л", "р", "у", "ю"); + $Sonants = array( "и", "й", "л", "р", "у", "ю" ); $Consonants = array( "п", "ф", "к", "қ", "т", "ш", "с", "х", "ц", "ч", "щ", "б", "в", "г", "д" ); $Sibilants = array( "ж", "з" ); - $Sonorants = array( "и", "й", "л", "р", "у", "ю", "м", "н", "ң", "ж", "з"); + $Sonorants = array( "и", "й", "л", "р", "у", "ю", "м", "н", "ң", "ж", "з" ); // Possessives $firstPerson = array( "м", "ң" ); // 1st singular, 2nd unformal $secondPerson = array( "з" ); // 1st plural, 2nd formal $thirdPerson = array( "ы", "і" ); // 3rd - $lastLetter = self::lastLetter( $word, $allVowels ); + $lastLetter = $this->lastLetter( $word, $allVowels ); $wordEnding =& $lastLetter[0]; $wordLastVowel =& $lastLetter[1]; // Now convert the word switch ( $case ) { case "dc1": - case "genitive": #ilik + case "genitive": # ilik if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "тің"; @@ -57,7 +57,7 @@ class LanguageKk_cyrl extends Language { } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "ның"; } - } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants )) { + } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "дің"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { @@ -66,7 +66,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc2": - case "dative": #barıs + case "dative": # barıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ке"; @@ -82,7 +82,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc21": - case "possessive dative": #täweldık + barıs + case "possessive dative": # täweldık + barıs if ( in_array( $wordEnding, $firstPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "е"; @@ -104,7 +104,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc3": - case "accusative": #tabıs + case "accusative": # tabıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ті"; @@ -112,13 +112,13 @@ class LanguageKk_cyrl extends Language { $word = $word . "ты"; } } elseif ( in_array( $wordEnding, $allVowels ) ) { - if ( in_array($wordLastVowel, $frontVowels ) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ні"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "ны"; } - } elseif ( in_array( $wordEnding, $Sonorants) ) { - if ( in_array( $wordLastVowel, $frontVowels) ) { + } elseif ( in_array( $wordEnding, $Sonorants ) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ді"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "ды"; @@ -126,7 +126,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc31": - case "possessive accusative": #täweldık + tabıs + case "possessive accusative": # täweldık + tabıs if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ді"; @@ -138,7 +138,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc4": - case "locative": #jatıs + case "locative": # jatıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "те"; @@ -146,7 +146,7 @@ class LanguageKk_cyrl extends Language { $word = $word . "та"; } } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) { - if ( in_array( $wordLastVowel, $frontVowels) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "де"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "да"; @@ -154,7 +154,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc41": - case "possessive locative": #täweldık + jatıs + case "possessive locative": # täweldık + jatıs if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "де"; @@ -162,7 +162,7 @@ class LanguageKk_cyrl extends Language { $word = $word . "да"; } } elseif ( in_array( $wordEnding, $thirdPerson ) ) { - if ( in_array( $wordLastVowel, $frontVowels) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "нде"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "нда"; @@ -170,20 +170,20 @@ class LanguageKk_cyrl extends Language { } break; case "dc5": - case "ablative": #şığıs + case "ablative": # şığıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "тен"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "тан"; } - } elseif ( in_array($wordEnding, $allVowels ) || in_array($wordEnding, $Sonants ) || in_array($wordEnding, $Sibilants ) ) { + } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ден"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "дан"; } - } elseif ( in_array($wordEnding, $Nasals ) ) { + } elseif ( in_array( $wordEnding, $Nasals ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "нен"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { @@ -192,14 +192,14 @@ class LanguageKk_cyrl extends Language { } break; case "dc51": - case "possessive ablative": #täweldık + şığıs + case "possessive ablative": # täweldık + şığıs if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $thirdPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "нен"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "нан"; } - } elseif ( in_array($wordEnding, $secondPerson ) ) { + } elseif ( in_array( $wordEnding, $secondPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ден"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { @@ -208,7 +208,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc6": - case "comitative": #kömektes + case "comitative": # kömektes if ( in_array( $wordEnding, $Consonants ) ) { $word = $word . "пен"; } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) || in_array( $wordEnding, $Sonants ) ) { @@ -218,7 +218,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc61": - case "possessive comitative": #täweldık + kömektes + case "possessive comitative": # täweldık + kömektes if ( in_array( $wordEnding, $Consonants ) ) { $word = $word . "пенен"; } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) || in_array( $wordEnding, $Sonants ) ) { @@ -227,7 +227,7 @@ class LanguageKk_cyrl extends Language { $word = $word . "бенен"; } break; - default: #dc0 #nominative #ataw + default: # dc0 #nominative #ataw } return $word; } @@ -247,24 +247,24 @@ class LanguageKk_cyrl extends Language { $allVowels = array( "e", "ö", "ü", "i", "ä", "é", "a", "o", "u", "ı" ); // Preceding letters $Nasals = array( "m", "n", "ñ" ); - $Sonants = array( "ï", "y", "ý", "l", "r", "w"); + $Sonants = array( "ï", "y", "ý", "l", "r", "w" ); $Consonants = array( "p", "f", "k", "q", "t", "ş", "s", "x", "c", "ç", "b", "v", "g", "d" ); $Sibilants = array( "j", "z" ); - $Sonorants = array( "ï", "y", "ý", "l", "r", "w", "m", "n", "ñ", "j", "z"); + $Sonorants = array( "ï", "y", "ý", "l", "r", "w", "m", "n", "ñ", "j", "z" ); // Possessives $firstPerson = array( "m", "ñ" ); // 1st singular, 2nd unformal $secondPerson = array( "z" ); // 1st plural, 2nd formal $thirdPerson = array( "ı", "i" ); // 3rd - $lastLetter = self::lastLetter( $word, $allVowels ); + $lastLetter = $this->lastLetter( $word, $allVowels ); $wordEnding =& $lastLetter[0]; $wordLastVowel =& $lastLetter[1]; // Now convert the word switch ( $case ) { case "dc1": - case "genitive": #ilik + case "genitive": # ilik if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "tiñ"; @@ -277,7 +277,7 @@ class LanguageKk_cyrl extends Language { } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "nıñ"; } - } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants )) { + } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "diñ"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { @@ -286,7 +286,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc2": - case "dative": #barıs + case "dative": # barıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ke"; @@ -302,7 +302,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc21": - case "possessive dative": #täweldık + barıs + case "possessive dative": # täweldık + barıs if ( in_array( $wordEnding, $firstPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "e"; @@ -324,7 +324,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc3": - case "accusative": #tabıs + case "accusative": # tabıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ti"; @@ -332,13 +332,13 @@ class LanguageKk_cyrl extends Language { $word = $word . "tı"; } } elseif ( in_array( $wordEnding, $allVowels ) ) { - if ( in_array($wordLastVowel, $frontVowels ) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ni"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "nı"; } - } elseif ( in_array( $wordEnding, $Sonorants) ) { - if ( in_array( $wordLastVowel, $frontVowels) ) { + } elseif ( in_array( $wordEnding, $Sonorants ) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "di"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "dı"; @@ -346,7 +346,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc31": - case "possessive accusative": #täweldık + tabıs + case "possessive accusative": # täweldık + tabıs if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "di"; @@ -358,7 +358,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc4": - case "locative": #jatıs + case "locative": # jatıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "te"; @@ -366,7 +366,7 @@ class LanguageKk_cyrl extends Language { $word = $word . "ta"; } } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) { - if ( in_array( $wordLastVowel, $frontVowels) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "de"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "da"; @@ -374,7 +374,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc41": - case "possessive locative": #täweldık + jatıs + case "possessive locative": # täweldık + jatıs if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "de"; @@ -382,7 +382,7 @@ class LanguageKk_cyrl extends Language { $word = $word . "da"; } } elseif ( in_array( $wordEnding, $thirdPerson ) ) { - if ( in_array( $wordLastVowel, $frontVowels) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "nde"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "nda"; @@ -390,20 +390,20 @@ class LanguageKk_cyrl extends Language { } break; case "dc5": - case "ablative": #şığıs + case "ablative": # şığıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ten"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "tan"; } - } elseif ( in_array($wordEnding, $allVowels ) || in_array($wordEnding, $Sonants ) || in_array($wordEnding, $Sibilants ) ) { + } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "den"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "dan"; } - } elseif ( in_array($wordEnding, $Nasals ) ) { + } elseif ( in_array( $wordEnding, $Nasals ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "nen"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { @@ -412,14 +412,14 @@ class LanguageKk_cyrl extends Language { } break; case "dc51": - case "possessive ablative": #täweldık + şığıs + case "possessive ablative": # täweldık + şığıs if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $thirdPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "nen"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "nan"; } - } elseif ( in_array($wordEnding, $secondPerson ) ) { + } elseif ( in_array( $wordEnding, $secondPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "den"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { @@ -428,7 +428,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc6": - case "comitative": #kömektes + case "comitative": # kömektes if ( in_array( $wordEnding, $Consonants ) ) { $word = $word . "pen"; } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) || in_array( $wordEnding, $Sonants ) ) { @@ -438,7 +438,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc61": - case "possessive comitative": #täweldık + kömektes + case "possessive comitative": # täweldık + kömektes if ( in_array( $wordEnding, $Consonants ) ) { $word = $word . "penen"; } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) || in_array( $wordEnding, $Sonants ) ) { @@ -447,7 +447,7 @@ class LanguageKk_cyrl extends Language { $word = $word . "benen"; } break; - default: #dc0 #nominative #ataw + default: # dc0 #nominative #ataw } return $word; } @@ -467,24 +467,24 @@ class LanguageKk_cyrl extends Language { $allVowels = array( "ە", "ٶ", "ٷ", "ٸ", "ٵ", "ە", "ا", "و", "ۇ", "ى" ); // Preceding letters $Nasals = array( "م", "ن", "ڭ" ); - $Sonants = array( "ي", "ي", "ل", "ر", "ۋ"); + $Sonants = array( "ي", "ي", "ل", "ر", "ۋ" ); $Consonants = array( "پ", "ف", "ك", "ق", "ت", "ش", "س", "ح", "تس", "چ", "ب", "ۆ", "گ", "د" ); $Sibilants = array( "ج", "ز" ); - $Sonorants = array( "ي", "ي", "ل", "ر", "ۋ", "م", "ن", "ڭ", "ج", "ز"); + $Sonorants = array( "ي", "ي", "ل", "ر", "ۋ", "م", "ن", "ڭ", "ج", "ز" ); // Possessives $firstPerson = array( "م", "ڭ" ); // 1st singular, 2nd unformal $secondPerson = array( "ز" ); // 1st plural, 2nd formal $thirdPerson = array( "ى", "ٸ" ); // 3rd - $lastLetter = self::lastLetter( $word, $allVowels ); - $wordEnding =& $lastLetter[0]; - $wordLastVowel =& $lastLetter[1]; + $lastLetter = $this->lastLetter( $word, $allVowels ); + $wordEnding = $lastLetter[0]; + $wordLastVowel = $lastLetter[1]; // Now convert the word switch ( $case ) { case "dc1": - case "genitive": #ilik + case "genitive": # ilik if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "تٸڭ"; @@ -497,7 +497,7 @@ class LanguageKk_cyrl extends Language { } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "نىڭ"; } - } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants )) { + } elseif ( in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "دٸڭ"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { @@ -506,7 +506,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc2": - case "dative": #barıs + case "dative": # barıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "كە"; @@ -522,7 +522,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc21": - case "possessive dative": #täweldık + barıs + case "possessive dative": # täweldık + barıs if ( in_array( $wordEnding, $firstPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ە"; @@ -544,7 +544,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc3": - case "accusative": #tabıs + case "accusative": # tabıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "تٸ"; @@ -552,13 +552,13 @@ class LanguageKk_cyrl extends Language { $word = $word . "تى"; } } elseif ( in_array( $wordEnding, $allVowels ) ) { - if ( in_array($wordLastVowel, $frontVowels ) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "نٸ"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "نى"; } - } elseif ( in_array( $wordEnding, $Sonorants) ) { - if ( in_array( $wordLastVowel, $frontVowels) ) { + } elseif ( in_array( $wordEnding, $Sonorants ) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "دٸ"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "دى"; @@ -566,7 +566,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc31": - case "possessive accusative": #täweldık + tabıs + case "possessive accusative": # täweldık + tabıs if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "دٸ"; @@ -578,7 +578,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc4": - case "locative": #jatıs + case "locative": # jatıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "تە"; @@ -586,7 +586,7 @@ class LanguageKk_cyrl extends Language { $word = $word . "تا"; } } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonorants ) ) { - if ( in_array( $wordLastVowel, $frontVowels) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "دە"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "دا"; @@ -594,7 +594,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc41": - case "possessive locative": #täweldık + jatıs + case "possessive locative": # täweldık + jatıs if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $secondPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "دە"; @@ -602,7 +602,7 @@ class LanguageKk_cyrl extends Language { $word = $word . "دا"; } } elseif ( in_array( $wordEnding, $thirdPerson ) ) { - if ( in_array( $wordLastVowel, $frontVowels) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "ندە"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "ندا"; @@ -610,20 +610,20 @@ class LanguageKk_cyrl extends Language { } break; case "dc5": - case "ablative": #şığıs + case "ablative": # şığıs if ( in_array( $wordEnding, $Consonants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "تەن"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "تان"; } - } elseif ( in_array($wordEnding, $allVowels ) || in_array($wordEnding, $Sonants ) || in_array($wordEnding, $Sibilants ) ) { + } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Sonants ) || in_array( $wordEnding, $Sibilants ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "دەن"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "دان"; } - } elseif ( in_array($wordEnding, $Nasals ) ) { + } elseif ( in_array( $wordEnding, $Nasals ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "نەن"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { @@ -632,14 +632,14 @@ class LanguageKk_cyrl extends Language { } break; case "dc51": - case "possessive ablative": #täweldık + şığıs + case "possessive ablative": # täweldık + şığıs if ( in_array( $wordEnding, $firstPerson ) || in_array( $wordEnding, $thirdPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "نەن"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { $word = $word . "نان"; } - } elseif ( in_array($wordEnding, $secondPerson ) ) { + } elseif ( in_array( $wordEnding, $secondPerson ) ) { if ( in_array( $wordLastVowel, $frontVowels ) ) { $word = $word . "دەن"; } elseif ( in_array( $wordLastVowel, $backVowels ) ) { @@ -648,7 +648,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc6": - case "comitative": #kömektes + case "comitative": # kömektes if ( in_array( $wordEnding, $Consonants ) ) { $word = $word . "پەن"; } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) || in_array( $wordEnding, $Sonants ) ) { @@ -658,7 +658,7 @@ class LanguageKk_cyrl extends Language { } break; case "dc61": - case "possessive comitative": #täweldık + kömektes + case "possessive comitative": # täweldık + kömektes if ( in_array( $wordEnding, $Consonants ) ) { $word = $word . "پەنەن"; } elseif ( in_array( $wordEnding, $allVowels ) || in_array( $wordEnding, $Nasals ) || in_array( $wordEnding, $Sonants ) ) { @@ -667,17 +667,16 @@ class LanguageKk_cyrl extends Language { $word = $word . "بەنەن"; } break; - default: #dc0 #nominative #ataw + default: # dc0 #nominative #ataw } return $word; } function lastLetter( $word, $allVowels ) { $lastLetter = array(); - $ar = array(); // Put the word in a form we can play with since we're using UTF-8 - $ar = preg_split('//u', parent::lc($word), -1, PREG_SPLIT_NO_EMPTY); + $ar = preg_split( '//u', parent::lc( $word ), -1, PREG_SPLIT_NO_EMPTY ); // Here's an array with the order of the letters in the word reversed // so we can find a match quicker *shrug* @@ -712,7 +711,7 @@ class LanguageKk_cyrl extends Language { */ function commafy( $_ ) { if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev($_) ) ); + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } else { return $_; } diff --git a/languages/classes/LanguageKm.php b/languages/classes/LanguageKm.php index 831feb9c..128152f7 100644 --- a/languages/classes/LanguageKm.php +++ b/languages/classes/LanguageKm.php @@ -6,7 +6,7 @@ * @author Niklas Laxström */ class LanguageKm extends Language { - function commafy($_) { + function commafy( $_ ) { /* NO-op for Khmer. Cannot use * $separatorTransformTable = array( ',' => '' ) * That would break when parsing and doing strstr '' => 'foo'; diff --git a/languages/classes/LanguageKsh.php b/languages/classes/LanguageKsh.php index b21cc4d7..6d70b896 100644 --- a/languages/classes/LanguageKsh.php +++ b/languages/classes/LanguageKsh.php @@ -7,6 +7,166 @@ * @author Purodha Blissenbach */ class LanguageKsh extends Language { + static $familygender = array( + // Do not add male wiki families, since that's the default. + // No need add neuter wikis having names ending in -wiki. + 'wikipedia' => 'f', + 'wikiversity' => 'f', + 'wiktionary' => 'n', + 'wikibooks' => 'n', + 'wikiquote' => 'n', + 'wikisource' => 'n', + 'wikitravel' => 'n', + 'wikia' => 'f', + 'translatewiki.net' => 'n', + ); + /** + * Convert from the nominative form of a noun to other cases. + * Invoked with {{GRAMMAR:case|word}} inside messages. + * + * case is a sequence of words, each of which is case insensitive. + * Between words, there must be at least one space character. + * Only the 1st character of each word is considered. + * Word order is irrelevant. + * + * Possible values specifying the grammatical case are: + * 1, Nominative + * 2, Genitive + * 3, Dative + * 4, Accusative, -omitted- + * + * Possible values specifying the article type are: + * Betoont focussed or stressed article + * -omitted- unstressed or unfocussed article + * + * Possible values for for the type of genitive are: + * Sing, Iehr prepositioned genitive = possessive dative + * Vun, Fon, -omitted- postpositioned genitive + * = preposition "vun" with dative + * + * Values of case overrides & prepositions, in the order of preceedence: + * Sing, Iehr possessive dative = prepositioned genitive + * Vun, Fon preposition "vun" with dative + * = postpositioned genitive + * En, em preposition "en" with dative + * + * Values for object gender specifiers of the possessive dative, or + * prepositioned genitive, evaluated with "Sing, Iehr" of above only: + * Male a singular male object follows + * -omitted- a non-male or plural object follows + * + * We currently handle definite articles of the singular only. + * There is a full set of test cases at: + * http://translatewiki.net/wiki/Portal:Ksh#GRAMMAR_Pr%C3%B6%C3%B6fe + * Contents of the leftmost table column can be copied and pasted as + * "case" values. + * + */ + function convertGrammar( $word, $case ) + { + $lord = strtolower($word); + $gender = 'm'; // Nuutnaarel // default + if ( preg_match ( '/wiki$/', $lord ) ) + { + $gender = 'n'; // Dat xyz-wiki + } + if ( isset( self::$familygender[$lord] ) ) + { + $gender = (self::$familygender[$lord]); + } + $case = (' '.strtolower($case)); + if ( preg_match( '/ [is]/', $case ) ) + { + # däm WikiMaatplaz singe, dä Wikipeedija iere, däm Wikiwööterbooch singe + # dem/em WikiMaatplaz singe, de Wikipeedija iere, dem/em Wikiwööterbooch singe + # däm WikiMaatplaz sing, dä Wikipeedija ier, däm Wikiwööterbooch sing + # dem/em WikiMaatplaz sing, de Wikipeedija ier, dem/em Wikiwööterbooch sing + $word = ( preg_match( '/ b/', $case ) + ? ($gender=='f' + ? 'dä' + : 'däm' + ) + : ($gender=='f' + ? 'de' + : 'dem' + ) + ). + ' '.$word.' '. + ( $gender=='f' + ? 'ier' + : 'sing' + ). + ( preg_match( '/ m/', $case ) + ? 'e' + : '' + ); + } + elseif ( preg_match( '/ e/', $case ) ) + { + # en dämm WikiMaatPlaz, en dä Wikipeedija, en dämm Wikiwööterbooch + # em WikiMaatplaz, en de Wikipeedija, em Wikiwööterbooch + if ( preg_match( '/ b/', $case ) ) + { + $word = ('en '.($gender=='f'?'dä':'däm').' '.$word); + } + else + { + $word = (($gender=='f'?'en de':'em').' '.$word); + } + } + elseif ( preg_match( '/ [fv]/', $case ) || preg_match( '/ [2jg]/', $case ) ) + { + # vun däm WikiMaatplaz, vun dä Wikipeedija, vun däm Wikiwööterbooch + # vum WikiMaatplaz, vun de Wikipeedija, vum Wikiwööterbooch + if ( preg_match( '/ b/', $case ) ) + { + $word = ('vun '.($gender=='f'?'dä':'däm').' '.$word); + } + else + { + $word = (($gender=='f'?'vun de':'vum').' '.$word); + } + } + elseif ( preg_match( '/ [3d]/', $case ) ) + { + # dämm WikiMaatPlaz, dä Wikipeedija, dämm Wikiwööterbooch + # dem/em WikiMaatplaz, de Wikipeedija, dem/em Wikiwööterbooch + if ( preg_match( '/ b/', $case ) ) + { + $word = (($gender=='f'?'dää':'dämm').' '.$word); + } + else + { + $word = (($gender=='f'?'de':'dem').' '.$word); + } + } + else + { + # dä WikiMaatPlaz, di Wikipeedija, dat Wikiwööterbooch + # der WikiMaatplaz, de Wikipeedija, et Wikiwööterbooch + if ( preg_match( '/ b/', $case ) ) + { + switch ( $gender ) + { + case 'm' : $lord = 'dä' ; break ; + case 'f' : $lord = 'di' ; break ; + default : $lord = 'dat' ; break ; + } + } + else + { + switch ( $gender ) + { + case 'm' : $lord = 'der' ; break ; + case 'f' : $lord = 'de' ; break ; + default : $lord = 'et' ; break ; + } + } + $word = ($lord.' '.$word); + } + return($word); + } + /** * Avoid grouping whole numbers between 0 to 9999 */ @@ -22,7 +182,7 @@ class LanguageKsh extends Language { * Handle cases of (1, other, 0) or (1, other) */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 3 ); if ( $count == 1 ) { diff --git a/languages/classes/LanguageKu.deps.php b/languages/classes/LanguageKu.deps.php index 43e2916c..a187b778 100644 --- a/languages/classes/LanguageKu.deps.php +++ b/languages/classes/LanguageKu.deps.php @@ -5,5 +5,5 @@ // changed on a subsequent page view. // see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html -require_once( dirname(__FILE__).'/../LanguageConverter.php' ); -require_once( dirname(__FILE__).'/LanguageKu_ku.php' ); +require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' ); +require_once( dirname( __FILE__ ) . '/LanguageKu_ku.php' ); diff --git a/languages/classes/LanguageKu.php b/languages/classes/LanguageKu.php index 5ce68c57..1cc4f017 100644 --- a/languages/classes/LanguageKu.php +++ b/languages/classes/LanguageKu.php @@ -1,9 +1,9 @@ <?php -require_once( dirname(__FILE__).'/../LanguageConverter.php' ); -require_once( dirname(__FILE__).'/LanguageKu_ku.php' ); +require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' ); +require_once( dirname( __FILE__ ) . '/LanguageKu_ku.php' ); -/** Kurdish - * converter routines +/** + * Kurdish converter routines * * @ingroup Language */ @@ -18,8 +18,8 @@ class KuConverter extends LanguageConverter { // و ك=> ku -- ist auch richtig /* Doppel- und Halbvokale */ - 'ڵ' => 'll', #ll - 'ڕ' => 'rr', #rr + 'ڵ' => 'll', # ll + 'ڕ' => 'rr', # rr 'ا' => 'a', # 'ئێ' => 'ê', # initial e 'ە' => 'e', @@ -69,7 +69,7 @@ class KuConverter extends LanguageConverter { # 'rr' => 'ڕ', # selbiges für doppel-r /* Einzelne Großbuchstaben */ - //' C' => 'ج', + // ' C' => 'ج', /* Vowels */ 'a' => 'ا', @@ -140,25 +140,25 @@ class KuConverter extends LanguageConverter { */ function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) { // check for user namespace - if(is_object($nt)){ + if ( is_object( $nt ) ) { $ns = $nt->getNamespace(); - if($ns==NS_USER || $ns==NS_USER_TALK) + if ( $ns == NS_USER || $ns == NS_USER_TALK ) return; } - $oldlink=$link; + $oldlink = $link; parent::findVariantLink( $link, $nt, $ignoreOtherCond ); - if( $this->getPreferredVariant() == $this->mMainLanguageCode ) - $link=$oldlink; + if ( $this->getPreferredVariant() == $this->mMainLanguageCode ) + $link = $oldlink; } /* * We want our external link captions to be converted in variants, * so we return the original text instead -{$text}-, except for URLs */ - function markNoConversion($text, $noParse=false) { - if($noParse || preg_match("/^https?:\/\/|ftp:\/\/|irc:\/\//",$text)) - return parent::markNoConversion($text); + function markNoConversion( $text, $noParse = false ) { + if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) ) + return parent::markNoConversion( $text ); return $text; } @@ -166,24 +166,22 @@ class KuConverter extends LanguageConverter { * An ugly function wrapper for parsing Image titles * (to prevent image name conversion) */ - function autoConvert($text, $toVariant=false) { + function autoConvert( $text, $toVariant = false ) { global $wgTitle; - if(is_object($wgTitle) && $wgTitle->getNameSpace()==NS_FILE){ + if ( is_object( $wgTitle ) && $wgTitle->getNameSpace() == NS_FILE ) { $imagename = $wgTitle->getNsText(); - if(preg_match("/^$imagename:/",$text)) return $text; + if ( preg_match( "/^$imagename:/", $text ) ) return $text; } - return parent::autoConvert($text,$toVariant); + return parent::autoConvert( $text, $toVariant ); } /** * It translates text into variant, specials: * - ommiting roman numbers */ - function translate($text, $toVariant){ - $breaks = '[^\w\x80-\xff]'; - + function translate( $text, $toVariant ) { /* From Kazakh interface, maybe we need it later - * + $breaks = '[^\w\x80-\xff]'; // regexp for roman numbers $roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})'; $roman = ''; @@ -207,7 +205,7 @@ class KuConverter extends LanguageConverter { return $ret; */ - if( !isset( $this->mTables[$toVariant] ) ) { + if ( !isset( $this->mTables[$toVariant] ) ) { throw new MWException( "Broken variant table: " . implode( ',', array_keys( $this->mTables ) ) ); } @@ -216,6 +214,8 @@ class KuConverter extends LanguageConverter { } /** + * Kurdish (Kurdî / كوردی) + * * @ingroup Language */ class LanguageKu extends LanguageKu_ku { diff --git a/languages/classes/LanguageKu_ku.php b/languages/classes/LanguageKu_ku.php index cf2107ec..a9ec64e6 100644 --- a/languages/classes/LanguageKu_ku.php +++ b/languages/classes/LanguageKu_ku.php @@ -12,7 +12,7 @@ class LanguageKu_ku extends Language { function commafy( $_ ) { if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev($_) ) ); + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } else { return $_; } diff --git a/languages/classes/LanguageLa.php b/languages/classes/LanguageLa.php index c26d0e8e..81fc30cf 100644 --- a/languages/classes/LanguageLa.php +++ b/languages/classes/LanguageLa.php @@ -15,7 +15,7 @@ class LanguageLa extends Language { */ function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms['la'][$case][$word]) ) { + if ( isset( $wgGrammarForms['la'][$case][$word] ) ) { return $wgGrammarForms['la'][$case][$word]; } diff --git a/languages/classes/LanguageLn.php b/languages/classes/LanguageLn.php index bcf5f6e3..11d276d8 100644 --- a/languages/classes/LanguageLn.php +++ b/languages/classes/LanguageLn.php @@ -1,5 +1,6 @@ <?php /** + * Lingala (Lingála) * * @ingroup Language */ @@ -10,9 +11,9 @@ class LanguageLn extends Language { */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); - return ($count <= 1) ? $forms[0] : $forms[1]; + return ( $count <= 1 ) ? $forms[0] : $forms[1]; } } diff --git a/languages/classes/LanguageLt.php b/languages/classes/LanguageLt.php index 87519d98..4291e797 100644 --- a/languages/classes/LanguageLt.php +++ b/languages/classes/LanguageLt.php @@ -11,15 +11,15 @@ class LanguageLt extends Language { 3 - penkiolika (15) lapų */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } - //if no number with word, then use $form[0] for singular and $form[1] for plural or zero - if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; + // if no number with word, then use $form[0] for singular and $form[1] for plural or zero + if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; $forms = $this->preConvertPlural( $forms, 3 ); - if ($count%10==1 && $count%100!=11) return $forms[0]; - if ($count%10>=2 && ($count%100<10 || $count%100>=20)) return $forms[1]; + if ( $count % 10 == 1 && $count % 100 != 11 ) return $forms[0]; + if ( $count % 10 >= 2 && ( $count % 100 < 10 || $count % 100 >= 20 ) ) return $forms[1]; return $forms[2]; } } diff --git a/languages/classes/LanguageLv.php b/languages/classes/LanguageLv.php index 84974c37..fea2d21f 100644 --- a/languages/classes/LanguageLv.php +++ b/languages/classes/LanguageLv.php @@ -15,14 +15,12 @@ class LanguageLv extends Language { * * Example: {{plural:{{NUMBEROFARTICLES}}|article|articles}} * - * @param integer $count - * @param string $wordform1 - * @param string $wordform2 - * @param string $wordform3 (not used) - * @return string + * @param $count Integer + * @param $forms Array + * @return String */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } // FIXME: CLDR defines 3 plural forms instead of 2. Form for 0 is missing. // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#lv diff --git a/languages/classes/LanguageMg.php b/languages/classes/LanguageMg.php index 8593a298..54ef408f 100644 --- a/languages/classes/LanguageMg.php +++ b/languages/classes/LanguageMg.php @@ -1,5 +1,6 @@ <?php /** + * Malagasy (Malagasy) * * @ingroup Language */ @@ -8,9 +9,9 @@ class LanguageMg extends Language { * Use singular form for zero */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); - return ($count <= 1) ? $forms[0] : $forms[1]; + return ( $count <= 1 ) ? $forms[0] : $forms[1]; } } diff --git a/languages/classes/LanguageMk.php b/languages/classes/LanguageMk.php index 268365df..9dc8a560 100644 --- a/languages/classes/LanguageMk.php +++ b/languages/classes/LanguageMk.php @@ -1,5 +1,6 @@ <?php /** + * Macedonian (Македонски) * * @ingroup Language */ @@ -9,7 +10,7 @@ class LanguageMk extends Language { * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#mk */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); if ( $count % 10 === 1 && $count % 100 !== 11 ) { diff --git a/languages/classes/LanguageMl.php b/languages/classes/LanguageMl.php index 98b5fc96..3cd30eb2 100644 --- a/languages/classes/LanguageMl.php +++ b/languages/classes/LanguageMl.php @@ -1,14 +1,19 @@ <?php +/** + * Malayalam (മലയാളം) + * + * @ingroup Language + */ class LanguageMl extends Language { /** - * Temporary hack for the issue described at + * Temporary hack for the issue described at * http://permalink.gmane.org/gmane.science.linguistics.wikipedia.technical/46396 - * Convert Unicode 5.0 style Malayalam input to Unicode 5.1. Similar to - * bug 9413. Also fixes miscellaneous problems due to mishandling of ZWJ, + * Convert Unicode 5.0 style Malayalam input to Unicode 5.1. Similar to + * bug 9413. Also fixes miscellaneous problems due to mishandling of ZWJ, * e.g. bug 11162. - * - * FIXME: This is language-specific for now only to avoid the negative + * + * FIXME: This is language-specific for now only to avoid the negative * performance impact of enabling it for all languages. */ function normalize( $s ) { diff --git a/languages/classes/LanguageMo.php b/languages/classes/LanguageMo.php index 83cfafb8..beeb04f8 100644 --- a/languages/classes/LanguageMo.php +++ b/languages/classes/LanguageMo.php @@ -1,5 +1,6 @@ <?php /** + * Moldavian (Молдовеняскэ) * * @ingroup Language */ @@ -7,7 +8,7 @@ class LanguageMo extends Language { function convertPlural( $count, $forms ) { // Plural rules per // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#mo - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 3 ); diff --git a/languages/classes/LanguageMt.php b/languages/classes/LanguageMt.php index fff779ac..fb271bf6 100644 --- a/languages/classes/LanguageMt.php +++ b/languages/classes/LanguageMt.php @@ -9,13 +9,13 @@ class LanguageMt extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 4 ); if ( $count === 1 ) $index = 0; - elseif ( $count === 0 || ( $count%100>1 && $count%100<11) ) $index = 1; - elseif ( $count%100>10 && $count%100<20 ) $index = 2; + elseif ( $count === 0 || ( $count % 100 > 1 && $count % 100 < 11 ) ) $index = 1; + elseif ( $count % 100 > 10 && $count % 100 < 20 ) $index = 2; else $index = 3; return $forms[$index]; } diff --git a/languages/classes/LanguageMy.php b/languages/classes/LanguageMy.php index d76b99e7..4fa5b05e 100644 --- a/languages/classes/LanguageMy.php +++ b/languages/classes/LanguageMy.php @@ -1,14 +1,13 @@ <?php + /** Burmese (Myanmasa) * * @ingroup Language - * @file * * @author Niklas Laxström, 2008 */ - class LanguageMy extends Language { - function commafy($_) { + function commafy( $_ ) { /* NO-op. Cannot use * $separatorTransformTable = array( ',' => '' ) * That would break when parsing and doing strstr '' => 'foo'; diff --git a/languages/classes/LanguageNso.php b/languages/classes/LanguageNso.php index 1b56e76a..9ff89039 100644 --- a/languages/classes/LanguageNso.php +++ b/languages/classes/LanguageNso.php @@ -1,5 +1,6 @@ <?php /** + * Northern Sotho (Sesotho sa Leboa) * * @ingroup Language */ @@ -8,9 +9,9 @@ class LanguageNso extends Language { * Use singular form for zero */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); - return ($count <= 1) ? $forms[0] : $forms[1]; + return ( $count <= 1 ) ? $forms[0] : $forms[1]; } } diff --git a/languages/classes/LanguagePl.php b/languages/classes/LanguagePl.php index bb798913..40477f42 100644 --- a/languages/classes/LanguagePl.php +++ b/languages/classes/LanguagePl.php @@ -6,7 +6,7 @@ */ class LanguagePl extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 3 ); $count = abs( $count ); if ( $count == 1 ) @@ -22,9 +22,9 @@ class LanguagePl extends Language { } } - function commafy($_) { - if (!preg_match('/^\d{1,4}(.\d+)?$/',$_)) { - return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_))); + function commafy( $_ ) { + if ( !preg_match( '/^\-?\d{1,4}(\.\d+)?$/', $_ ) ) { + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } else { return $_; } diff --git a/languages/classes/LanguagePt_br.php b/languages/classes/LanguagePt_br.php deleted file mode 100644 index 49726fe7..00000000 --- a/languages/classes/LanguagePt_br.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -/** Brazilian Portugese (Portuguêsi do Brasil) - * - * @ingroup Language - */ -class LanguagePt_br extends Language { - /** - * Use singular form for zero (see bug 7309) - */ - function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } - $forms = $this->preConvertPlural( $forms, 2 ); - - return ($count <= 1) ? $forms[0] : $forms[1]; - } -} diff --git a/languages/classes/LanguageRo.php b/languages/classes/LanguageRo.php index 928f79fb..89edce11 100644 --- a/languages/classes/LanguageRo.php +++ b/languages/classes/LanguageRo.php @@ -1,5 +1,6 @@ <?php /** + * Romanian (Română) * * @ingroup Language */ @@ -7,7 +8,7 @@ class LanguageRo extends Language { function convertPlural( $count, $forms ) { // Plural rules per // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ro - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 3 ); diff --git a/languages/classes/LanguageRu.php b/languages/classes/LanguageRu.php index bb737e84..8f027048 100644 --- a/languages/classes/LanguageRu.php +++ b/languages/classes/LanguageRu.php @@ -11,45 +11,45 @@ class LanguageRu extends Language { # Invoked with {{grammar:case|word}} function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms['ru'][$case][$word]) ) { + if ( isset( $wgGrammarForms['ru'][$case][$word] ) ) { return $wgGrammarForms['ru'][$case][$word]; } # These rules are not perfect, but they are currently only used for site names so it doesn't # matter if they are wrong sometimes. Just add a special case for your site name if necessary. - #join and array_slice instead mb_substr + # join and array_slice instead mb_substr $ar = array(); preg_match_all( '/./us', $word, $ar ); - if (!preg_match("/[a-zA-Z_]/us", $word)) + if ( !preg_match( "/[a-zA-Z_]/us", $word ) ) switch ( $case ) { - case 'genitive': #родительный падеж - if ((join('',array_slice($ar[0],-4))=='вики') || (join('',array_slice($ar[0],-4))=='Вики')) - {} - elseif (join('',array_slice($ar[0],-1))=='ь') - $word = join('',array_slice($ar[0],0,-1)).'я'; - elseif (join('',array_slice($ar[0],-2))=='ия') - $word=join('',array_slice($ar[0],0,-2)).'ии'; - elseif (join('',array_slice($ar[0],-2))=='ка') - $word=join('',array_slice($ar[0],0,-2)).'ки'; - elseif (join('',array_slice($ar[0],-2))=='ти') - $word=join('',array_slice($ar[0],0,-2)).'тей'; - elseif (join('',array_slice($ar[0],-2))=='ды') - $word=join('',array_slice($ar[0],0,-2)).'дов'; - elseif (join('',array_slice($ar[0],-3))=='ник') - $word=join('',array_slice($ar[0],0,-3)).'ника'; + case 'genitive': # родительный падеж + if ( ( join( '', array_slice( $ar[0], -4 ) ) == 'вики' ) || ( join( '', array_slice( $ar[0], -4 ) ) == 'Вики' ) ) + { } + elseif ( join( '', array_slice( $ar[0], -1 ) ) == 'ь' ) + $word = join( '', array_slice( $ar[0], 0, -1 ) ) . 'я'; + elseif ( join( '', array_slice( $ar[0], -2 ) ) == 'ия' ) + $word = join( '', array_slice( $ar[0], 0, -2 ) ) . 'ии'; + elseif ( join( '', array_slice( $ar[0], -2 ) ) == 'ка' ) + $word = join( '', array_slice( $ar[0], 0, -2 ) ) . 'ки'; + elseif ( join( '', array_slice( $ar[0], -2 ) ) == 'ти' ) + $word = join( '', array_slice( $ar[0], 0, -2 ) ) . 'тей'; + elseif ( join( '', array_slice( $ar[0], -2 ) ) == 'ды' ) + $word = join( '', array_slice( $ar[0], 0, -2 ) ) . 'дов'; + elseif ( join( '', array_slice( $ar[0], -3 ) ) == 'ник' ) + $word = join( '', array_slice( $ar[0], 0, -3 ) ) . 'ника'; break; - case 'dative': #дательный падеж - #stub + case 'dative': # дательный падеж + # stub break; - case 'accusative': #винительный падеж - #stub + case 'accusative': # винительный падеж + # stub break; - case 'instrumental': #творительный падеж - #stub + case 'instrumental': # творительный падеж + # stub break; - case 'prepositional': #предложный падеж - #stub + case 'prepositional': # предложный падеж + # stub break; } return $word; @@ -71,19 +71,19 @@ class LanguageRu extends Language { */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } - //if no number with word, then use $form[0] for singular and $form[1] for plural or zero - if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; + // if no number with word, then use $form[0] for singular and $form[1] for plural or zero + if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; // FIXME: CLDR defines 4 plural forms. Form with decimals missing. // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru $forms = $this->preConvertPlural( $forms, 3 ); - if ($count > 10 && floor(($count % 100) / 10) == 1) { + if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) { return $forms[2]; } else { - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[0]; case 2: case 3: @@ -98,11 +98,11 @@ class LanguageRu extends Language { * See manual of style at http://ru.wikipedia.org/wiki/Википедия:Оформление_статей * So "1 234 567", "12 345" but "1234" */ - function commafy($_) { - if (preg_match('/^-?\d{1,4}(\.\d*)?$/',$_)) { + function commafy( $_ ) { + if ( preg_match( '/^-?\d{1,4}(\.\d*)?$/', $_ ) ) { return $_; } else { - return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_))); + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } } } diff --git a/languages/classes/LanguageSe.php b/languages/classes/LanguageSe.php index aac943d6..3011bc7f 100644 --- a/languages/classes/LanguageSe.php +++ b/languages/classes/LanguageSe.php @@ -1,18 +1,19 @@ <?php /** + * Northern Sami (Sámegiella) * * @ingroup Language */ class LanguageSe extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } // plural forms per http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#se $forms = $this->preConvertPlural( $forms, 3 ); if ( $count == 1 ) { $index = 0; - } elseif( $count == 2 ) { + } elseif ( $count == 2 ) { $index = 1; } else { $index = 2; diff --git a/languages/classes/LanguageSh.php b/languages/classes/LanguageSh.php index 29f06f4f..e62d7ba3 100644 --- a/languages/classes/LanguageSh.php +++ b/languages/classes/LanguageSh.php @@ -1,23 +1,24 @@ <?php /** + * Serbo-Croatian (Srpskohrvatski / Српскохрватски) * * @ingroup Language */ class LanguageSh extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } - //if no number with word, then use $form[0] for singular and $form[1] for plural or zero - if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; + // if no number with word, then use $form[0] for singular and $form[1] for plural or zero + if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; // FIXME: CLDR defines 4 plural forms. Form with decimals missing. // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#sh $forms = $this->preConvertPlural( $forms, 3 ); - if ($count > 10 && floor(($count % 100) / 10) == 1) { + if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) { return $forms[2]; } else { - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[0]; case 2: case 3: diff --git a/languages/classes/LanguageSk.php b/languages/classes/LanguageSk.php index 7ddbcbdb..ea74d1ba 100644 --- a/languages/classes/LanguageSk.php +++ b/languages/classes/LanguageSk.php @@ -6,7 +6,7 @@ */ class LanguageSk extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 3 ); if ( $count == 1 ) { diff --git a/languages/classes/LanguageSl.php b/languages/classes/LanguageSl.php index 734b274c..09138ea5 100644 --- a/languages/classes/LanguageSl.php +++ b/languages/classes/LanguageSl.php @@ -12,7 +12,7 @@ class LanguageSl extends Language { */ function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms['sl'][$case][$word]) ) { + if ( isset( $wgGrammarForms['sl'][$case][$word] ) ) { return $wgGrammarForms['sl'][$case][$word]; } @@ -27,7 +27,7 @@ class LanguageSl extends Language { } function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 5 ); if ( $count % 100 == 1 ) { diff --git a/languages/classes/LanguageSma.php b/languages/classes/LanguageSma.php index 5167fb08..a04c77da 100644 --- a/languages/classes/LanguageSma.php +++ b/languages/classes/LanguageSma.php @@ -1,18 +1,19 @@ <?php /** + * Southern Sami (Åarjelsaemien) * * @ingroup Language */ class LanguageSma extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } // plural forms per http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#sma $forms = $this->preConvertPlural( $forms, 3 ); if ( $count == 1 ) { $index = 1; - } elseif( $count == 2 ) { + } elseif ( $count == 2 ) { $index = 2; } else { $index = 3; diff --git a/languages/classes/LanguageSr.deps.php b/languages/classes/LanguageSr.deps.php index ffdd234b..a3770378 100644 --- a/languages/classes/LanguageSr.deps.php +++ b/languages/classes/LanguageSr.deps.php @@ -5,5 +5,5 @@ // changed on a subsequent page view. // see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html -require_once( dirname(__FILE__).'/LanguageSr_ec.php' ); -require_once( dirname(__FILE__).'/../LanguageConverter.php' ); +require_once( dirname( __FILE__ ) . '/LanguageSr_ec.php' ); +require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' ); diff --git a/languages/classes/LanguageSr.php b/languages/classes/LanguageSr.php index 693660fb..35c90102 100644 --- a/languages/classes/LanguageSr.php +++ b/languages/classes/LanguageSr.php @@ -1,8 +1,8 @@ <?php -require_once( dirname(__FILE__).'/../LanguageConverter.php' ); -require_once( dirname(__FILE__).'/LanguageSr_ec.php' ); -require_once( dirname(__FILE__).'/LanguageSr_el.php' ); +require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' ); +require_once( dirname( __FILE__ ) . '/LanguageSr_ec.php' ); +require_once( dirname( __FILE__ ) . '/LanguageSr_el.php' ); /** * There are two levels of conversion for Serbian: the script level @@ -45,15 +45,15 @@ class SrConverter extends LanguageConverter { 'O' => 'О', 'P' => 'П', 'R' => 'Р', 'S' => 'С', 'Š' => 'Ш', 'T' => 'Т', 'U' => 'У', 'V' => 'В', 'Z' => 'З', 'Ž' => 'Ж', - 'DŽ' => 'Џ', 'd!ž' => 'дж', 'D!ž'=> 'Дж', 'D!Ž'=> 'ДЖ', - 'Lj' => 'Љ', 'l!j' => 'лј', 'L!j'=> 'Лј', 'L!J'=> 'ЛЈ', - 'Nj' => 'Њ', 'n!j' => 'нј', 'N!j'=> 'Нј', 'N!J'=> 'НЈ' + 'DŽ' => 'Џ', 'd!ž' => 'дж', 'D!ž' => 'Дж', 'D!Ž' => 'ДЖ', + 'Lj' => 'Љ', 'l!j' => 'лј', 'L!j' => 'Лј', 'L!J' => 'ЛЈ', + 'Nj' => 'Њ', 'n!j' => 'нј', 'N!j' => 'Нј', 'N!J' => 'НЈ' ); function loadDefaultTables() { $this->mTables = array( 'sr-ec' => new ReplacementArray( $this->mToCyrillics ), - 'sr-el' => new ReplacementArray( $this->mToLatin), + 'sr-el' => new ReplacementArray( $this->mToLatin ), 'sr' => new ReplacementArray() ); } @@ -63,13 +63,13 @@ class SrConverter extends LanguageConverter { update: delete all rule parsing because it's not used currently, and just produces a couple of bugs */ - function parseManualRule($rule, $flags=array()) { - if(in_array('T',$flags)){ - return parent::parseManualRule($rule, $flags); + function parseManualRule( $rule, $flags = array() ) { + if ( in_array( 'T', $flags ) ) { + return parent::parseManualRule( $rule, $flags ); } // otherwise ignore all formatting - foreach($this->mVariants as $v) { + foreach ( $this->mVariants as $v ) { $carray[$v] = $rule; } @@ -84,25 +84,25 @@ class SrConverter extends LanguageConverter { */ function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) { // check for user namespace - if(is_object($nt)){ + if ( is_object( $nt ) ) { $ns = $nt->getNamespace(); - if($ns==NS_USER || $ns==NS_USER_TALK) + if ( $ns == NS_USER || $ns == NS_USER_TALK ) return; } - $oldlink=$link; + $oldlink = $link; parent::findVariantLink( $link, $nt, $ignoreOtherCond ); - if($this->getPreferredVariant()==$this->mMainLanguageCode) - $link=$oldlink; + if ( $this->getPreferredVariant() == $this->mMainLanguageCode ) + $link = $oldlink; } /* * We want our external link captions to be converted in variants, * so we return the original text instead -{$text}-, except for URLs */ - function markNoConversion($text, $noParse=false) { - if($noParse || preg_match("/^https?:\/\/|ftp:\/\/|irc:\/\//",$text)) - return parent::markNoConversion($text); + function markNoConversion( $text, $noParse = false ) { + if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) ) + return parent::markNoConversion( $text ); return $text; } @@ -110,39 +110,39 @@ class SrConverter extends LanguageConverter { * An ugly function wrapper for parsing Image titles * (to prevent image name conversion) */ - function autoConvert($text, $toVariant=false) { + function autoConvert( $text, $toVariant = false ) { global $wgTitle; - if(is_object($wgTitle) && $wgTitle->getNameSpace()==NS_FILE){ + if ( is_object( $wgTitle ) && $wgTitle->getNameSpace() == NS_FILE ) { $imagename = $wgTitle->getNsText(); - if(preg_match("/^$imagename:/",$text)) return $text; + if ( preg_match( "/^$imagename:/", $text ) ) return $text; } - return parent::autoConvert($text,$toVariant); + return parent::autoConvert( $text, $toVariant ); } /** * It translates text into variant, specials: * - ommiting roman numbers */ - function translate($text, $toVariant){ + function translate( $text, $toVariant ) { $breaks = '[^\w\x80-\xff]'; // regexp for roman numbers $roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})'; - $reg = '/^'.$roman.'$|^'.$roman.$breaks.'|'.$breaks.$roman.'$|'.$breaks.$roman.$breaks.'/'; + $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks . $roman . '$|' . $breaks . $roman . $breaks . '/'; - $matches = preg_split($reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE); + $matches = preg_split( $reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE ); - $m = array_shift($matches); - if( !isset( $this->mTables[$toVariant] ) ) { + $m = array_shift( $matches ); + if ( !isset( $this->mTables[$toVariant] ) ) { throw new MWException( "Broken variant table: " . implode( ',', array_keys( $this->mTables ) ) ); } $ret = $this->mTables[$toVariant]->replace( $m[0] ); - $mstart = $m[1]+strlen($m[0]); - foreach($matches as $m) { - $ret .= substr($text, $mstart, $m[1]-$mstart); - $ret .= parent::translate($m[0], $toVariant); - $mstart = $m[1] + strlen($m[0]); + $mstart = $m[1] + strlen( $m[0] ); + foreach ( $matches as $m ) { + $ret .= substr( $text, $mstart, $m[1] -$mstart ); + $ret .= parent::translate( $m[0], $toVariant ); + $mstart = $m[1] + strlen( $m[0] ); } return $ret; @@ -150,6 +150,8 @@ class SrConverter extends LanguageConverter { } /** + * Serbian (Српски / Srpski) + * * @ingroup Language */ class LanguageSr extends LanguageSr_ec { @@ -158,7 +160,7 @@ class LanguageSr extends LanguageSr_ec { parent::__construct(); - $variants = array('sr', 'sr-ec', 'sr-el'); + $variants = array( 'sr', 'sr-ec', 'sr-el' ); $variantfallbacks = array( 'sr' => 'sr-ec', 'sr-ec' => 'sr', @@ -169,24 +171,24 @@ class LanguageSr extends LanguageSr_ec { 'S' => 'S', 'писмо' => 'S', 'pismo' => 'S', 'W' => 'W', 'реч' => 'W', 'reč' => 'W', 'ријеч' => 'W', 'riječ' => 'W' ); - $this->mConverter = new SrConverter($this, 'sr', $variants, $variantfallbacks, $flags); + $this->mConverter = new SrConverter( $this, 'sr', $variants, $variantfallbacks, $flags ); $wgHooks['ArticleSaveComplete'][] = $this->mConverter; } function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } - //if no number with word, then use $form[0] for singular and $form[1] for plural or zero - if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; + // if no number with word, then use $form[0] for singular and $form[1] for plural or zero + if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; // FIXME: CLDR defines 4 plural forms. Form with decimals missing. // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru $forms = $this->preConvertPlural( $forms, 3 ); - if ($count > 10 && floor(($count % 100) / 10) == 1) { + if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) { return $forms[2]; } else { - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[0]; case 2: case 3: diff --git a/languages/classes/LanguageSr_ec.php b/languages/classes/LanguageSr_ec.php index c7300198..ed447e5e 100644 --- a/languages/classes/LanguageSr_ec.php +++ b/languages/classes/LanguageSr_ec.php @@ -1,17 +1,19 @@ <?php /** + * Serbian (cyrillic script) + * * @ingroup Language */ class LanguageSr_ec extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 3 ); - if ($count > 10 && floor(($count % 100) / 10) == 1) { + if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) { return $forms[2]; } else { - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[0]; case 2: case 3: diff --git a/languages/classes/LanguageSr_el.deps.php b/languages/classes/LanguageSr_el.deps.php index cec44dcc..67154c20 100644 --- a/languages/classes/LanguageSr_el.deps.php +++ b/languages/classes/LanguageSr_el.deps.php @@ -5,4 +5,4 @@ // changed on a subsequent page view. // see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html -require_once( dirname(__FILE__).'/LanguageSr_ec.php' ); +require_once( dirname( __FILE__ ) . '/LanguageSr_ec.php' ); diff --git a/languages/classes/LanguageSr_el.php b/languages/classes/LanguageSr_el.php index 6ad55f4d..d43772af 100644 --- a/languages/classes/LanguageSr_el.php +++ b/languages/classes/LanguageSr_el.php @@ -1,17 +1,19 @@ <?php /** + * Serbian (latin script) + * * @ingroup Language */ class LanguageSr_el extends Language { function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 3 ); - if ($count > 10 && floor(($count % 100) / 10) == 1) { + if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) { return $forms[2]; } else { - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[0]; case 2: case 3: diff --git a/languages/classes/LanguageTg.php b/languages/classes/LanguageTg.php index 3a2840db..f73e2ba8 100644 --- a/languages/classes/LanguageTg.php +++ b/languages/classes/LanguageTg.php @@ -1,6 +1,6 @@ <?php -require_once( dirname(__FILE__).'/../LanguageConverter.php' ); +require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' ); /** * Converts Tajiki to latin orthography @@ -93,6 +93,8 @@ class TgConverter extends LanguageConverter { } /** + * Tajik (Тоҷикӣ) + * * @ingroup Language */ class LanguageTg extends Language { diff --git a/languages/classes/LanguageTi.php b/languages/classes/LanguageTi.php index 1974915d..e37116b1 100644 --- a/languages/classes/LanguageTi.php +++ b/languages/classes/LanguageTi.php @@ -1,5 +1,6 @@ <?php /** + * Tigrinya (ትግርኛ) * * @ingroup Language */ @@ -8,9 +9,9 @@ class LanguageTi extends Language { * Use singular form for zero */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); - return ($count <= 1) ? $forms[0] : $forms[1]; + return ( $count <= 1 ) ? $forms[0] : $forms[1]; } } diff --git a/languages/classes/LanguageTl.php b/languages/classes/LanguageTl.php index 23b6ad6f..4495ddcc 100644 --- a/languages/classes/LanguageTl.php +++ b/languages/classes/LanguageTl.php @@ -1,5 +1,6 @@ <?php /** + * Tagalog (Tagalog) * * @ingroup Language */ @@ -8,9 +9,9 @@ class LanguageTl extends Language { * Use singular form for zero */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); - return ($count <= 1) ? $forms[0] : $forms[1]; + return ( $count <= 1 ) ? $forms[0] : $forms[1]; } } diff --git a/languages/classes/LanguageTr.php b/languages/classes/LanguageTr.php index 57b0fd07..245b5b06 100644 --- a/languages/classes/LanguageTr.php +++ b/languages/classes/LanguageTr.php @@ -7,7 +7,7 @@ */ class LanguageTr extends Language { function ucfirst ( $string ) { - if ( !empty($string) && $string[0] == 'i' ) { + if ( !empty( $string ) && $string[0] == 'i' ) { return 'İ' . substr( $string, 1 ); } else { return parent::ucfirst( $string ); diff --git a/languages/classes/LanguageTyv.php b/languages/classes/LanguageTyv.php index d77f7966..9e5b6453 100644 --- a/languages/classes/LanguageTyv.php +++ b/languages/classes/LanguageTyv.php @@ -16,37 +16,37 @@ class LanguageTyv extends Language { */ function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms['tyv'][$case][$word]) ) { + if ( isset( $wgGrammarForms['tyv'][$case][$word] ) ) { return $wgGrammarForms['tyv'][$case][$word]; } - // Set up some constants... - $allVowels = array("е", "и", "э", "ө", "ү", "а", "ё", "о", "у", "ы", "ю", "я", "a", "e", "i", "o", "ö", "u", "ü", "y"); - $frontVowels = array("е", "и", "э", "ө", "ү", "e", "i", "ö", "ü"); - $backVowels = array("а", "ё", "о", "у", "ы", "ю", "я", "a", "o", "u", "y"); - $unroundFrontVowels = array("е", "и", "э", "e", "i"); - $roundFrontVowels = array("ө", "ү", "ö", "ü"); - $unroundBackVowels = array("а", "ы", "я", "a", "y"); - $roundBackVowels = array("ё", "о", "у", "ю", "o", "u"); - $voicedPhonemes = array("д", "б", "з", "ж", "г", "d", "b", "z", "g"); - $unvoicedPhonemes = array("т", "п", "с", "ш", "к", "ч", "х", "t", "p", "s", "k", "x"); - $directiveUnvoicedStems = array("т", "п", "с", "ш", "к", "ч", "х", "л", "м", "н", "ң", "t", "p", "s", "k", "x", "l", "m", "n", "ŋ"); - $directiveVoicedStems = array("д", "б", "з", "ж", "г", "р", "й", "d", "b", "z", "g", "r", "j"); + // Set up some constants... + $allVowels = array( "е", "и", "э", "ө", "ү", "а", "ё", "о", "у", "ы", "ю", "я", "a", "e", "i", "o", "ö", "u", "ü", "y" ); + $frontVowels = array( "е", "и", "э", "ө", "ү", "e", "i", "ö", "ü" ); + $backVowels = array( "а", "ё", "о", "у", "ы", "ю", "я", "a", "o", "u", "y" ); + $unroundFrontVowels = array( "е", "и", "э", "e", "i" ); + $roundFrontVowels = array( "ө", "ү", "ö", "ü" ); + $unroundBackVowels = array( "а", "ы", "я", "a", "y" ); + $roundBackVowels = array( "ё", "о", "у", "ю", "o", "u" ); + $voicedPhonemes = array( "д", "б", "з", "ж", "г", "d", "b", "z", "g" ); + $unvoicedPhonemes = array( "т", "п", "с", "ш", "к", "ч", "х", "t", "p", "s", "k", "x" ); + $directiveUnvoicedStems = array( "т", "п", "с", "ш", "к", "ч", "х", "л", "м", "н", "ң", "t", "p", "s", "k", "x", "l", "m", "n", "ŋ" ); + $directiveVoicedStems = array( "д", "б", "з", "ж", "г", "р", "й", "d", "b", "z", "g", "r", "j" ); -// $allSonants = array("л", "м", "н", "ң", "р", "й"); -// $allNasals = array("м", "н", "ң"); + //$allSonants = array("л", "м", "н", "ң", "р", "й"); + //$allNasals = array("м", "н", "ң"); - // Put the word in a form we can play with since we're using UTF-8 + //Put the word in a form we can play with since we're using UTF-8 preg_match_all( '/./us', $word, $ar ); - - $wordEnding = $ar[0][count($ar[0]) - 1]; //Here's the last letter in the word - $wordReversed = array_reverse($ar[0]); //Here's an array with the order of the letters in the word reversed so we can find a match quicker *shrug* - // Find the last vowel in the word + $wordEnding = $ar[0][count( $ar[0] ) - 1]; // Here's the last letter in the word + $wordReversed = array_reverse( $ar[0] ); // Here's an array with the order of the letters in the word reversed so we can find a match quicker *shrug* + + // Find the last vowel in the word $wordLastVowel = NULL; foreach ( $wordReversed as $xvalue ) { foreach ( $allVowels as $yvalue ) { - if ( strcmp($xvalue, $yvalue) == 0 ) { + if ( strcmp( $xvalue, $yvalue ) == 0 ) { $wordLastVowel = $xvalue; break; } else { @@ -60,160 +60,160 @@ class LanguageTyv extends Language { } } - // Now convert the word + // Now convert the word switch ( $case ) { case "genitive": - if ( in_array($wordEnding, $unvoicedPhonemes) ) { - if ( in_array($wordLastVowel, $roundFrontVowels) ) { - $word = implode("",$ar[0]) . "түң"; - } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) { - $word = implode("",$ar[0]) . "тиң"; - } elseif ( in_array($wordLastVowel, $roundBackVowels) ) { - $word = implode("",$ar[0]) . "туң"; - } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) { - $word = implode("",$ar[0]) . "тың"; + if ( in_array( $wordEnding, $unvoicedPhonemes ) ) { + if ( in_array( $wordLastVowel, $roundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "түң"; + } elseif ( in_array( $wordLastVowel, $unroundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "тиң"; + } elseif ( in_array( $wordLastVowel, $roundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "туң"; + } elseif ( in_array( $wordLastVowel, $unroundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "тың"; } else { } - } elseif ( $wordEnding === "л" || $wordEnding === "l") { - if ( in_array($wordLastVowel, $roundFrontVowels) ) { - $word = implode("",$ar[0]) . "дүң"; - } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) { - $word = implode("",$ar[0]) . "диң"; - } elseif ( in_array($wordLastVowel, $roundBackVowels) ) { - $word = implode("",$ar[0]) . "дуң"; - } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) { - $word = implode("",$ar[0]) . "дың"; + } elseif ( $wordEnding === "л" || $wordEnding === "l" ) { + if ( in_array( $wordLastVowel, $roundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "дүң"; + } elseif ( in_array( $wordLastVowel, $unroundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "диң"; + } elseif ( in_array( $wordLastVowel, $roundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "дуң"; + } elseif ( in_array( $wordLastVowel, $unroundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "дың"; } else { } } else { - if ( in_array($wordLastVowel, $roundFrontVowels) ) { - $word = implode("",$ar[0]) . "нүң"; - } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) { - $word = implode("",$ar[0]) . "ниң"; - } elseif ( in_array($wordLastVowel, $roundBackVowels) ) { - $word = implode("",$ar[0]) . "нуң"; - } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) { - $word = implode("",$ar[0]) . "ның"; + if ( in_array( $wordLastVowel, $roundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "нүң"; + } elseif ( in_array( $wordLastVowel, $unroundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "ниң"; + } elseif ( in_array( $wordLastVowel, $roundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "нуң"; + } elseif ( in_array( $wordLastVowel, $unroundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "ның"; } else { } } break; case "dative": - if ( in_array($wordEnding, $unvoicedPhonemes) ) { - if ( in_array($wordLastVowel, $frontVowels) ) { - $word = implode("",$ar[0]) . "ке"; - } elseif ( in_array($wordLastVowel, $backVowels) ) { - $word = implode("",$ar[0]) . "ка"; + if ( in_array( $wordEnding, $unvoicedPhonemes ) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { + $word = implode( "", $ar[0] ) . "ке"; + } elseif ( in_array( $wordLastVowel, $backVowels ) ) { + $word = implode( "", $ar[0] ) . "ка"; } else { } } else { - if ( in_array($wordLastVowel, $frontVowels) ) { - $word = implode("",$ar[0]) . "ге"; - } elseif ( in_array($wordLastVowel, $backVowels) ) { - $word = implode("",$ar[0]) . "га"; + if ( in_array( $wordLastVowel, $frontVowels ) ) { + $word = implode( "", $ar[0] ) . "ге"; + } elseif ( in_array( $wordLastVowel, $backVowels ) ) { + $word = implode( "", $ar[0] ) . "га"; } else { } } break; case "accusative": - if ( in_array($wordEnding, $unvoicedPhonemes) ) { - if ( in_array($wordLastVowel, $roundFrontVowels) ) { - $word = implode("",$ar[0]) . "тү"; - } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) { - $word = implode("",$ar[0]) . "ти"; - } elseif ( in_array($wordLastVowel, $roundBackVowels) ) { - $word = implode("",$ar[0]) . "ту"; - } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) { - $word = implode("",$ar[0]) . "ты"; + if ( in_array( $wordEnding, $unvoicedPhonemes ) ) { + if ( in_array( $wordLastVowel, $roundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "тү"; + } elseif ( in_array( $wordLastVowel, $unroundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "ти"; + } elseif ( in_array( $wordLastVowel, $roundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "ту"; + } elseif ( in_array( $wordLastVowel, $unroundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "ты"; } else { } - } elseif ( $wordEnding === "л" || $wordEnding === "l") { - if ( in_array($wordLastVowel, $roundFrontVowels) ) { - $word = implode("",$ar[0]) . "дү"; - } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) { - $word = implode("",$ar[0]) . "ди"; - } elseif ( in_array($wordLastVowel, $roundBackVowels) ) { - $word = implode("",$ar[0]) . "ду"; - } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) { - $word = implode("",$ar[0]) . "ды"; + } elseif ( $wordEnding === "л" || $wordEnding === "l" ) { + if ( in_array( $wordLastVowel, $roundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "дү"; + } elseif ( in_array( $wordLastVowel, $unroundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "ди"; + } elseif ( in_array( $wordLastVowel, $roundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "ду"; + } elseif ( in_array( $wordLastVowel, $unroundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "ды"; } else { } } else { - if ( in_array($wordLastVowel, $roundFrontVowels) ) { - $word = implode("",$ar[0]) . "нү"; - } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) { - $word = implode("",$ar[0]) . "ни"; - } elseif ( in_array($wordLastVowel, $roundBackVowels) ) { - $word = implode("",$ar[0]) . "ну"; - } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) { - $word = implode("",$ar[0]) . "ны"; + if ( in_array( $wordLastVowel, $roundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "нү"; + } elseif ( in_array( $wordLastVowel, $unroundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "ни"; + } elseif ( in_array( $wordLastVowel, $roundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "ну"; + } elseif ( in_array( $wordLastVowel, $unroundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "ны"; } else { } } break; case "locative": - if ( in_array($wordEnding, $unvoicedPhonemes) ) { - if ( in_array($wordLastVowel, $frontVowels) ) { - $word = implode("",$ar[0]) . "те"; - } elseif ( in_array($wordLastVowel, $backVowels) ) { - $word = implode("",$ar[0]) . "та"; + if ( in_array( $wordEnding, $unvoicedPhonemes ) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { + $word = implode( "", $ar[0] ) . "те"; + } elseif ( in_array( $wordLastVowel, $backVowels ) ) { + $word = implode( "", $ar[0] ) . "та"; } else { } } else { - if ( in_array($wordLastVowel, $frontVowels) ) { - $word = implode("",$ar[0]) . "де"; - } elseif ( in_array($wordLastVowel, $backVowels) ) { - $word = implode("",$ar[0]) . "да"; + if ( in_array( $wordLastVowel, $frontVowels ) ) { + $word = implode( "", $ar[0] ) . "де"; + } elseif ( in_array( $wordLastVowel, $backVowels ) ) { + $word = implode( "", $ar[0] ) . "да"; } else { } } break; case "ablative": - if ( in_array($wordEnding, $unvoicedPhonemes) ) { - if ( in_array($wordLastVowel, $frontVowels) ) { - $word = implode("",$ar[0]) . "тен"; - } elseif ( in_array($wordLastVowel, $backVowels) ) { - $word = implode("",$ar[0]) . "тан"; + if ( in_array( $wordEnding, $unvoicedPhonemes ) ) { + if ( in_array( $wordLastVowel, $frontVowels ) ) { + $word = implode( "", $ar[0] ) . "тен"; + } elseif ( in_array( $wordLastVowel, $backVowels ) ) { + $word = implode( "", $ar[0] ) . "тан"; } else { } } else { - if ( in_array($wordLastVowel, $frontVowels) ) { - $word = implode("",$ar[0]) . "ден"; - } elseif ( in_array($wordLastVowel, $backVowels) ) { - $word = implode("",$ar[0]) . "дан"; + if ( in_array( $wordLastVowel, $frontVowels ) ) { + $word = implode( "", $ar[0] ) . "ден"; + } elseif ( in_array( $wordLastVowel, $backVowels ) ) { + $word = implode( "", $ar[0] ) . "дан"; } else { } } break; case "directive1": - if ( in_array($wordEnding, $directiveVoicedStems) ) { - $word = implode("",$ar[0]) . "же"; - } elseif ( in_array($wordEnding, $directiveUnvoicedStems) ) { - $word = implode("",$ar[0]) . "че"; + if ( in_array( $wordEnding, $directiveVoicedStems ) ) { + $word = implode( "", $ar[0] ) . "же"; + } elseif ( in_array( $wordEnding, $directiveUnvoicedStems ) ) { + $word = implode( "", $ar[0] ) . "че"; } else { } break; case "directive2": - if ( in_array($wordEnding, $unvoicedPhonemes) ) { - if ( in_array($wordLastVowel, $roundFrontVowels) ) { - $word = implode("",$ar[0]) . "түве"; - } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) { - $word = implode("",$ar[0]) . "тиве"; - } elseif ( in_array($wordLastVowel, $roundBackVowels) ) { - $word = implode("",$ar[0]) . "туве"; - } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) { - $word = implode("",$ar[0]) . "тыве"; + if ( in_array( $wordEnding, $unvoicedPhonemes ) ) { + if ( in_array( $wordLastVowel, $roundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "түве"; + } elseif ( in_array( $wordLastVowel, $unroundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "тиве"; + } elseif ( in_array( $wordLastVowel, $roundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "туве"; + } elseif ( in_array( $wordLastVowel, $unroundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "тыве"; } else { } } else { - if ( in_array($wordLastVowel, $roundFrontVowels) ) { - $word = implode("",$ar[0]) . "дүве"; - } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) { - $word = implode("",$ar[0]) . "диве"; - } elseif ( in_array($wordLastVowel, $roundBackVowels) ) { - $word = implode("",$ar[0]) . "дуве"; - } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) { - $word = implode("",$ar[0]) . "дыве"; + if ( in_array( $wordLastVowel, $roundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "дүве"; + } elseif ( in_array( $wordLastVowel, $unroundFrontVowels ) ) { + $word = implode( "", $ar[0] ) . "диве"; + } elseif ( in_array( $wordLastVowel, $roundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "дуве"; + } elseif ( in_array( $wordLastVowel, $unroundBackVowels ) ) { + $word = implode( "", $ar[0] ) . "дыве"; } else { } } diff --git a/languages/classes/LanguageUk.php b/languages/classes/LanguageUk.php index 4b1dfde5..6c0cf8da 100644 --- a/languages/classes/LanguageUk.php +++ b/languages/classes/LanguageUk.php @@ -9,67 +9,67 @@ class LanguageUk extends Language { # Invoked with {{grammar:case|word}} function convertGrammar( $word, $case ) { global $wgGrammarForms; - if ( isset($wgGrammarForms['uk'][$case][$word]) ) { + if ( isset( $wgGrammarForms['uk'][$case][$word] ) ) { return $wgGrammarForms['uk'][$case][$word]; } # These rules are not perfect, but they are currently only used for site names so it doesn't # matter if they are wrong sometimes. Just add a special case for your site name if necessary. - #join and array_slice instead mb_substr + # join and array_slice instead mb_substr $ar = array(); preg_match_all( '/./us', $word, $ar ); - if (!preg_match("/[a-zA-Z_]/us", $word)) + if ( !preg_match( "/[a-zA-Z_]/us", $word ) ) switch ( $case ) { - case 'genitive': #родовий відмінок - if ((join('',array_slice($ar[0],-4))=='вікі') || (join('',array_slice($ar[0],-4))=='Вікі')) - {} - elseif (join('',array_slice($ar[0],-1))=='ь') - $word = join('',array_slice($ar[0],0,-1)).'я'; - elseif (join('',array_slice($ar[0],-2))=='ія') - $word=join('',array_slice($ar[0],0,-2)).'ії'; - elseif (join('',array_slice($ar[0],-2))=='ка') - $word=join('',array_slice($ar[0],0,-2)).'ки'; - elseif (join('',array_slice($ar[0],-2))=='ти') - $word=join('',array_slice($ar[0],0,-2)).'тей'; - elseif (join('',array_slice($ar[0],-2))=='ди') - $word=join('',array_slice($ar[0],0,-2)).'дів'; - elseif (join('',array_slice($ar[0],-3))=='ник') - $word=join('',array_slice($ar[0],0,-3)).'ника'; + case 'genitive': # родовий відмінок + if ( ( join( '', array_slice( $ar[0], -4 ) ) == 'вікі' ) || ( join( '', array_slice( $ar[0], -4 ) ) == 'Вікі' ) ) + { } + elseif ( join( '', array_slice( $ar[0], -1 ) ) == 'ь' ) + $word = join( '', array_slice( $ar[0], 0, -1 ) ) . 'я'; + elseif ( join( '', array_slice( $ar[0], -2 ) ) == 'ія' ) + $word = join( '', array_slice( $ar[0], 0, -2 ) ) . 'ії'; + elseif ( join( '', array_slice( $ar[0], -2 ) ) == 'ка' ) + $word = join( '', array_slice( $ar[0], 0, -2 ) ) . 'ки'; + elseif ( join( '', array_slice( $ar[0], -2 ) ) == 'ти' ) + $word = join( '', array_slice( $ar[0], 0, -2 ) ) . 'тей'; + elseif ( join( '', array_slice( $ar[0], -2 ) ) == 'ди' ) + $word = join( '', array_slice( $ar[0], 0, -2 ) ) . 'дів'; + elseif ( join( '', array_slice( $ar[0], -3 ) ) == 'ник' ) + $word = join( '', array_slice( $ar[0], 0, -3 ) ) . 'ника'; break; - case 'dative': #давальний відмінок - #stub + case 'dative': # давальний відмінок + # stub break; - case 'accusative': #знахідний відмінок - if ((join('',array_slice($ar[0],-4))=='вікі') || (join('',array_slice($ar[0],-4))=='Вікі')) - {} - elseif (join('',array_slice($ar[0],-2))=='ія') - $word=join('',array_slice($ar[0],0,-2)).'ію'; + case 'accusative': # знахідний відмінок + if ( ( join( '', array_slice( $ar[0], -4 ) ) == 'вікі' ) || ( join( '', array_slice( $ar[0], -4 ) ) == 'Вікі' ) ) + { } + elseif ( join( '', array_slice( $ar[0], -2 ) ) == 'ія' ) + $word = join( '', array_slice( $ar[0], 0, -2 ) ) . 'ію'; break; - case 'instrumental': #орудний відмінок - #stub + case 'instrumental': # орудний відмінок + # stub break; - case 'prepositional': #місцевий відмінок - #stub + case 'prepositional': # місцевий відмінок + # stub break; } return $word; } function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } - //if no number with word, then use $form[0] for singular and $form[1] for plural or zero - if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; + // if no number with word, then use $form[0] for singular and $form[1] for plural or zero + if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1]; // FIXME: CLDR defines 4 plural forms. Form for decimals is missing/ // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#uk $forms = $this->preConvertPlural( $forms, 3 ); - if ($count > 10 && floor(($count % 100) / 10) == 1) { + if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) { return $forms[2]; } else { - switch ($count % 10) { + switch ( $count % 10 ) { case 1: return $forms[0]; case 2: case 3: @@ -82,10 +82,9 @@ class LanguageUk extends Language { /* * Ukrainian numeric format is "12 345,67" but "1234,56" */ - - function commafy($_) { - if (!preg_match('/^\d{1,4}$/',$_)) { - return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_))); + function commafy( $_ ) { + if ( !preg_match( '/^\-?\d{1,4}(\.\d+)?$/', $_ ) ) { + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } else { return $_; } diff --git a/languages/classes/LanguageWa.php b/languages/classes/LanguageWa.php index 4a4296ca..0cb439d0 100644 --- a/languages/classes/LanguageWa.php +++ b/languages/classes/LanguageWa.php @@ -13,18 +13,19 @@ class LanguageWa extends Language { * Use singular form for zero */ function convertPlural( $count, $forms ) { - if ( !count($forms) ) { return ''; } + if ( !count( $forms ) ) { return ''; } $forms = $this->preConvertPlural( $forms, 2 ); - return ($count <= 1) ? $forms[0] : $forms[1]; + return ( $count <= 1 ) ? $forms[0] : $forms[1]; } - ### - ### Dates in Walloon are "1î d' <monthname>" for 1st of the month, - ### "<day> di <monthname>" for months starting by a consoun, and - ### "<day> d' <monthname>" for months starting with a vowel - ### + ## # + ## # Dates in Walloon are "1î d' <monthname>" for 1st of the month, + ## # "<day> di <monthname>" for months starting by a consoun, and + ## # "<day> d' <monthname>" for months starting with a vowel + ## # function date( $ts, $adj = false, $format = true, $tc = false ) { + $ts = wfTimestamp( TS_MW, $ts ); if ( $adj ) { $ts = $this->userAdjust( $ts, $tc ); } $datePreference = $this->dateFormat( $format ); @@ -32,13 +33,13 @@ class LanguageWa extends Language { # # we also output this format for YMD (eg: 2001 January 15) if ( $datePreference == 'ISO 8601' ) { - $d = substr($ts, 0, 4). '-' . substr($ts, 4, 2). '-' .substr($ts, 6, 2); + $d = substr( $ts, 0, 4 ) . '-' . substr( $ts, 4, 2 ) . '-' . substr( $ts, 6, 2 ); return $d; } # dd/mm/YYYY format if ( $datePreference == 'walloon short' ) { - $d = substr($ts, 6, 2). '/' . substr($ts, 4, 2). '/' .substr($ts, 0, 4); + $d = substr( $ts, 6, 2 ) . '/' . substr( $ts, 4, 2 ) . '/' . substr( $ts, 0, 4 ); return $d; } @@ -47,17 +48,17 @@ class LanguageWa extends Language { # we output this in all other cases $m = substr( $ts, 4, 2 ); $n = substr( $ts, 6, 2 ); - if ($n == 1) { + if ( $n == 1 ) { $d = "1î d' " . $this->getMonthName( $m ) . " " . substr( $ts, 0, 4 ); - } else if ($n == 2 || $n == 3 || $n == 20 || $n == 22 || $n == 23) { - $d = (0 + $n) . " d' " . $this->getMonthName( $m ) . + } else if ( $n == 2 || $n == 3 || $n == 20 || $n == 22 || $n == 23 ) { + $d = ( 0 + $n ) . " d' " . $this->getMonthName( $m ) . " " . substr( $ts, 0, 4 ); - } else if ($m == 4 || $m == 8 || $m == 10) { - $d = (0 + $n) . " d' " . $this->getMonthName( $m ) . + } else if ( $m == 4 || $m == 8 || $m == 10 ) { + $d = ( 0 + $n ) . " d' " . $this->getMonthName( $m ) . " " . substr( $ts, 0, 4 ); } else { - $d = (0 + $n) . " di " . $this->getMonthName( $m ) . + $d = ( 0 + $n ) . " di " . $this->getMonthName( $m ) . " " . substr( $ts, 0, 4 ); } return $d; diff --git a/languages/classes/LanguageYue.php b/languages/classes/LanguageYue.php index 6581d788..aff3d29e 100644 --- a/languages/classes/LanguageYue.php +++ b/languages/classes/LanguageYue.php @@ -1,5 +1,7 @@ <?php /** + * Cantonese (粵語) + * * @ingroup Language */ class LanguageYue extends Language { @@ -12,12 +14,12 @@ class LanguageYue extends Language { * for now just treat each character as a word. * @todo Fixme: only do this for Han characters... */ - function wordSegmentation( $string ) { + function segmentByWord( $string ) { $reg = "/([\\xc0-\\xff][\\x80-\\xbf]*)/"; $s = self::insertSpace( $string, $reg ); return $s; } - + function normalizeForSearch( $string ) { wfProfileIn( __METHOD__ ); diff --git a/languages/classes/LanguageZh.deps.php b/languages/classes/LanguageZh.deps.php index 542170a0..41874ff8 100644 --- a/languages/classes/LanguageZh.deps.php +++ b/languages/classes/LanguageZh.deps.php @@ -5,5 +5,5 @@ // changed on a subsequent page view. // see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html -require_once( dirname(__FILE__).'/LanguageZh_hans.php' ); -require_once( dirname(__FILE__).'/../LanguageConverter.php' ); +require_once( dirname( __FILE__ ) . '/LanguageZh_hans.php' ); +require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' ); diff --git a/languages/classes/LanguageZh.php b/languages/classes/LanguageZh.php index 0b88dbb2..0055a33b 100644 --- a/languages/classes/LanguageZh.php +++ b/languages/classes/LanguageZh.php @@ -1,25 +1,25 @@ <?php -require_once( dirname(__FILE__).'/../LanguageConverter.php' ); -require_once( dirname(__FILE__).'/LanguageZh_hans.php' ); +require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' ); +require_once( dirname( __FILE__ ) . '/LanguageZh_hans.php' ); /** * @ingroup Language */ class ZhConverter extends LanguageConverter { - function __construct($langobj, $maincode, - $variants=array(), - $variantfallbacks=array(), + function __construct( $langobj, $maincode, + $variants = array(), + $variantfallbacks = array(), $flags = array(), $manualLevel = array() ) { $this->mDescCodeSep = ':'; $this->mDescVarSep = ';'; - parent::__construct($langobj, $maincode, + parent::__construct( $langobj, $maincode, $variants, $variantfallbacks, $flags, - $manualLevel); + $manualLevel ); $names = array( 'zh' => '原文', 'zh-hans' => '简体', @@ -31,20 +31,20 @@ class ZhConverter extends LanguageConverter { 'zh-sg' => '新加坡', 'zh-my' => '大马', ); - $this->mVariantNames = array_merge($this->mVariantNames,$names); + $this->mVariantNames = array_merge( $this->mVariantNames, $names ); } function loadDefaultTables() { - require( dirname(__FILE__)."/../../includes/ZhConversion.php" ); + require( dirname( __FILE__ ) . "/../../includes/ZhConversion.php" ); $this->mTables = array( 'zh-hans' => new ReplacementArray( $zh2Hans ), 'zh-hant' => new ReplacementArray( $zh2Hant ), - 'zh-cn' => new ReplacementArray( array_merge($zh2Hans, $zh2CN) ), - 'zh-hk' => new ReplacementArray( array_merge($zh2Hant, $zh2HK) ), - 'zh-mo' => new ReplacementArray( array_merge($zh2Hant, $zh2HK) ), - 'zh-my' => new ReplacementArray( array_merge($zh2Hans, $zh2SG) ), - 'zh-sg' => new ReplacementArray( array_merge($zh2Hans, $zh2SG) ), - 'zh-tw' => new ReplacementArray( array_merge($zh2Hant, $zh2TW) ), + 'zh-cn' => new ReplacementArray( array_merge( $zh2Hans, $zh2CN ) ), + 'zh-hk' => new ReplacementArray( array_merge( $zh2Hant, $zh2HK ) ), + 'zh-mo' => new ReplacementArray( array_merge( $zh2Hant, $zh2HK ) ), + 'zh-my' => new ReplacementArray( array_merge( $zh2Hans, $zh2SG ) ), + 'zh-sg' => new ReplacementArray( array_merge( $zh2Hans, $zh2SG ) ), + 'zh-tw' => new ReplacementArray( array_merge( $zh2Hant, $zh2TW ) ), 'zh' => new ReplacementArray ); } @@ -62,7 +62,7 @@ class ZhConverter extends LanguageConverter { to mark anything. $noParse is there for compatibility with LanguageConvert::markNoConversion */ - function markNoConversion($text, $noParse = false) { + function markNoConversion( $text, $noParse = false ) { return $text; } @@ -83,20 +83,20 @@ class LanguageZh extends LanguageZh_hans { global $wgHooks; parent::__construct(); - $variants = array('zh','zh-hans','zh-hant','zh-cn','zh-hk','zh-mo','zh-my','zh-sg','zh-tw'); - + $variants = array( 'zh', 'zh-hans', 'zh-hant', 'zh-cn', 'zh-hk', 'zh-mo', 'zh-my', 'zh-sg', 'zh-tw' ); + $variantfallbacks = array( - 'zh' => array('zh-hans','zh-hant','zh-cn','zh-tw','zh-hk','zh-sg','zh-mo','zh-my'), - 'zh-hans' => array('zh-cn','zh-sg','zh-my'), - 'zh-hant' => array('zh-tw','zh-hk','zh-mo'), - 'zh-cn' => array('zh-hans','zh-sg','zh-my'), - 'zh-sg' => array('zh-hans','zh-cn','zh-my'), - 'zh-my' => array('zh-hans','zh-sg','zh-cn'), - 'zh-tw' => array('zh-hant','zh-hk','zh-mo'), - 'zh-hk' => array('zh-hant','zh-mo','zh-tw'), - 'zh-mo' => array('zh-hant','zh-hk','zh-tw'), + 'zh' => array( 'zh-hans', 'zh-hant', 'zh-cn', 'zh-tw', 'zh-hk', 'zh-sg', 'zh-mo', 'zh-my' ), + 'zh-hans' => array( 'zh-cn', 'zh-sg', 'zh-my' ), + 'zh-hant' => array( 'zh-tw', 'zh-hk', 'zh-mo' ), + 'zh-cn' => array( 'zh-hans', 'zh-sg', 'zh-my' ), + 'zh-sg' => array( 'zh-hans', 'zh-cn', 'zh-my' ), + 'zh-my' => array( 'zh-hans', 'zh-sg', 'zh-cn' ), + 'zh-tw' => array( 'zh-hant', 'zh-hk', 'zh-mo' ), + 'zh-hk' => array( 'zh-hant', 'zh-mo', 'zh-tw' ), + 'zh-mo' => array( 'zh-hant', 'zh-hk', 'zh-tw' ), ); - $ml=array( + $ml = array( 'zh' => 'disable', 'zh-hans' => 'unidirectional', 'zh-hant' => 'unidirectional', @@ -105,7 +105,7 @@ class LanguageZh extends LanguageZh_hans { $this->mConverter = new ZhConverter( $this, 'zh', $variants, $variantfallbacks, array(), - $ml); + $ml ); $wgHooks['ArticleSaveComplete'][] = $this->mConverter; } @@ -114,13 +114,13 @@ class LanguageZh extends LanguageZh_hans { function segmentForDiff( $text ) { return preg_replace( "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", - "' ' .\"$1\"", $text); + "' ' .\"$1\"", $text ); } function unsegmentForDiff( $text ) { return preg_replace( "/ ([\\xc0-\\xff][\\x80-\\xbf]*)/e", - "\"$1\"", $text); + "\"$1\"", $text ); } /** @@ -149,7 +149,7 @@ class LanguageZh extends LanguageZh_hans { $terms = implode( '|', $termsArray ); $terms = self::convertDoubleWidth( $terms ); $terms = implode( '|', $this->mConverter->autoConvertToAllVariants( $terms ) ); - $ret = array_unique( explode('|', $terms) ); + $ret = array_unique( explode( '|', $terms ) ); return $ret; } } diff --git a/languages/classes/LanguageZh_hans.php b/languages/classes/LanguageZh_hans.php index 5b03d731..a65162bc 100644 --- a/languages/classes/LanguageZh_hans.php +++ b/languages/classes/LanguageZh_hans.php @@ -1,6 +1,8 @@ <?php /** + * Simplified Chinese + * * @ingroup Language */ class LanguageZh_hans extends Language { @@ -13,21 +15,21 @@ class LanguageZh_hans extends Language { * for now just treat each character as a word. * @todo Fixme: only do this for Han characters... */ - function wordSegmentation( $string ) { + function segmentByWord( $string ) { $reg = "/([\\xc0-\\xff][\\x80-\\xbf]*)/"; $s = self::insertSpace( $string, $reg ); return $s; } - function normalizeForSearch( $string ) { + function normalizeForSearch( $s ) { wfProfileIn( __METHOD__ ); // Double-width roman characters - $s = self::convertDoubleWidth( $string ); - $s = trim( $s ); $s = parent::normalizeForSearch( $s ); + $s = trim( $s ); + $s = $this->segmentByWord( $s ); wfProfileOut( __METHOD__ ); return $s; } -}
\ No newline at end of file +} diff --git a/languages/messages/MessagesAb.php b/languages/messages/MessagesAb.php index 7f9347c9..efb0c01a 100644 --- a/languages/messages/MessagesAb.php +++ b/languages/messages/MessagesAb.php @@ -15,6 +15,67 @@ $fallback = 'ru'; +$namespaceNames = array( + NS_MEDIA => 'Амедиа', + NS_SPECIAL => 'Цастәи', + NS_TALK => 'Ахцәажәара', + NS_USER => 'Алахәыла', + NS_USER_TALK => 'Алахәыла_ахцәажәара', + NS_PROJECT_TALK => '$1_ахцәажәара', + NS_FILE => 'Афаил', + NS_FILE_TALK => 'Афаил_ахцәажәара', + NS_MEDIAWIKI => 'Амедиавики', + NS_MEDIAWIKI_TALK => 'Амедиавики_ахцәажәара', + NS_TEMPLATE => 'Ашаблон', + NS_TEMPLATE_TALK => 'Ашаблон_ахцәажәара', + NS_HELP => 'Ацхыраара', + NS_HELP_TALK => 'Ацхыраара_ахцәажәара', + NS_CATEGORY => 'Акатегориа', + NS_CATEGORY_TALK => 'Акатегориа_ахцәажәара', +); + +$namespaceAliases = array( + 'Иалахә' => NS_USER, + + // Backward compat. Fallbacks from 'ru'. + 'Медиа' => NS_MEDIA, + 'Служебная' => NS_SPECIAL, + 'Обсуждение' => NS_TALK, + 'Участник' => NS_USER, + 'Обсуждение_участника' => NS_USER_TALK, + 'Обсуждение_$1' => NS_PROJECT_TALK, + 'Файл' => NS_FILE, + 'Обсуждение_файла' => NS_FILE_TALK, + 'MediaWiki' => NS_MEDIAWIKI, + 'Обсуждение_MediaWiki' => NS_MEDIAWIKI_TALK, + 'Шаблон' => NS_TEMPLATE, + 'Обсуждение_шаблона' => NS_TEMPLATE_TALK, + 'Справка' => NS_HELP, + 'Обсуждение_справки' => NS_HELP_TALK, + 'Категория' => NS_CATEGORY, + 'Обсуждение_категории' => NS_CATEGORY_TALK +); + +$specialPageAliases = array( + 'Recentchanges' => array( 'АрҽеираҾыцқәа' ), + 'Upload' => array( 'Аҭагалара' ), + 'Newimages' => array( 'АфаилқәаҾыц' ), + 'Randompage' => array( 'Машәырлатәи' ), + 'Newpages' => array( 'АдаҟьақәаҾыц' ), + 'Specialpages' => array( 'ЦастәиАдаҟьақәа' ), + 'Categories' => array( 'Акатегориақәа' ), + 'Mypage' => array( 'Садаҟьа' ), + 'Mytalk' => array( 'Сахцәажәара' ), + 'Mycontributions' => array( 'Архиарақәа' ), + 'Search' => array( 'Аҧшаара' ), +); + +$magicWords = array( + 'language' => array( '0', '#АБЫЗШӘА:', '#ЯЗЫК:', '#LANGUAGE:' ), + 'special' => array( '0', 'цастәи', 'служебная', 'special' ), + 'index' => array( '1', '__АИНДЕКС__', '__ИНДЕКС__', '__INDEX__' ), +); + $messages = array( # Dates 'sunday' => 'амҽыш', @@ -75,21 +136,12 @@ $messages = array( 'qbspecialpages' => 'Цастәи адаҟьақәа', # Vector skin -'vector-action-move' => 'Ахьӡ аҧсахра', -'vector-namespace-category' => 'Акатегориа', -'vector-namespace-help' => 'Ацхыраара адаҟьа', -'vector-namespace-image' => 'Афаил', -'vector-namespace-main' => 'Адаҟьа', -'vector-namespace-project' => 'Апроект', -'vector-namespace-special' => 'Цастәи адаҟьа', -'vector-namespace-talk' => 'Ахцәажәара', -'vector-namespace-template' => 'Ашаблон', -'vector-namespace-user' => 'Алахәыла Адаҟьа', -'vector-view-create' => 'Арҿиара', -'vector-view-edit' => 'Ариашамҭа', -'vector-view-history' => 'Аҭоурых', -'vector-view-view' => 'Аҧхьара', -'vector-view-viewsource' => 'Ахәаҧшра', +'vector-action-move' => 'Ахьӡ аҧсахра', +'vector-view-create' => 'Арҿиара', +'vector-view-edit' => 'Ариашамҭа', +'vector-view-history' => 'Аҭоурых', +'vector-view-view' => 'Аҧхьара', +'vector-view-viewsource' => 'Ахәаҧшра', 'help' => 'Ацхыраара', 'search' => 'Аҧшаара', @@ -171,9 +223,8 @@ $messages = array( 'grouppage-sysop' => '{{ns:project}}:Администраторцәа', # Recent changes -'recentchanges' => 'Арҽеира ҿыцқәа', -'recentchanges-legend-newpage' => '$1 — адаҟьа ҿыц', -'newpageletter' => 'Ҿ', +'recentchanges' => 'Арҽеира ҿыцқәа', +'newpageletter' => 'Ҿ', # Recent changes linked 'recentchangeslinked' => 'Еимадоу ариашарақәа', diff --git a/languages/messages/MessagesAce.php b/languages/messages/MessagesAce.php index 72d16784..5467eeee 100644 --- a/languages/messages/MessagesAce.php +++ b/languages/messages/MessagesAce.php @@ -9,6 +9,7 @@ * * @author Abi Azkia * @author Andri.h + * @author Ezagren * @author Fadli Idris * @author Meno25 * @author Si Gam Acèh @@ -16,6 +17,142 @@ $fallback = 'id'; +$namespaceNames = array( + NS_MEDIA => 'Alat', + NS_SPECIAL => 'Kusuih', + NS_TALK => 'Marit', + NS_USER => 'Ureuëng_Nguy', + NS_USER_TALK => 'Marit_Ureuëng_Nguy', + NS_PROJECT_TALK => 'Marit_$1', + NS_FILE => 'Beureukaih', + NS_FILE_TALK => 'Marit_Beureukaih', + NS_MEDIAWIKI => 'AlatWiki', + NS_MEDIAWIKI_TALK => 'Marit_AlatWiki', + NS_TEMPLATE => 'Pola', + NS_TEMPLATE_TALK => 'Marit_Pola', + NS_HELP => 'Beunantu', + NS_HELP_TALK => 'Marit_Beunantu', + NS_CATEGORY => 'Kawan', + NS_CATEGORY_TALK => 'Marit_Kawan', +); + +$namespaceAliases = array( + 'Istimewa' => NS_SPECIAL, + 'Pembicaraan' => NS_TALK, + 'Pengguna' => NS_USER, + 'Pembicaraan_Pengguna' => NS_USER_TALK, + 'Pembicaraan_$1' => NS_PROJECT_TALK, + 'Berkas' => NS_FILE, + 'Pembicaraan_Berkas' => NS_FILE_TALK, + 'Pembicaraan_MediaWiki' => NS_MEDIAWIKI_TALK, + 'Templat' => NS_TEMPLATE, + 'Pembicaraan_Templat' => NS_TEMPLATE_TALK, + 'Bantuan' => NS_HELP, + 'Pembicaraan_Bantuan' => NS_HELP_TALK, + 'Kategori' => NS_CATEGORY, + 'Pembicaraan_Kategori' => NS_CATEGORY_TALK, + 'Gambar_Pembicaraan' => NS_FILE_TALK, + 'MediaWiki_Pembicaraan' => NS_MEDIAWIKI_TALK, + 'Templat_Pembicaraan' => NS_TEMPLATE_TALK, + 'Bantuan_Pembicaraan' => NS_HELP_TALK, + 'Kategori_Pembicaraan' => NS_CATEGORY_TALK, + 'Gambar' => NS_FILE, + 'Pembicaraan_Gambar' => NS_FILE_TALK, + 'Bicara' => NS_TALK, + 'Bicara_Pengguna' => NS_USER_TALK, +); + +$specialPageAliases = array( + 'DoubleRedirects' => array( 'Peuninah_ganda' ), + 'BrokenRedirects' => array( 'Peuninah_reuloh' ), + 'Disambiguations' => array( 'Hana_jeulaih' ), + 'Userlogin' => array( 'Tamong_log' ), + 'Userlogout' => array( 'Teubiet_log' ), + 'CreateAccount' => array( 'Peugot_nan' ), + 'Preferences' => array( 'Geunalak' ), + 'Watchlist' => array( 'Dapeuta_kalon' ), + 'Recentchanges' => array( 'Neuubah_baro' ), + 'Upload' => array( 'Pasoe' ), + 'Listfiles' => array( 'Dapeuta_beureukaih' ), + 'Newimages' => array( 'Beureukaih_baro' ), + 'Listusers' => array( 'Dapeuta_ureueng_nguy' ), + 'Listgrouprights' => array( 'Dapeuta_khut_(hak)_kawan' ), + 'Statistics' => array( 'Keunira' ), + 'Randompage' => array( 'On_beurangkari' ), + 'Lonelypages' => array( 'On_hana_soe_po' ), + 'Uncategorizedpages' => array( 'On_hana_roh_lam_kawan' ), + 'Uncategorizedcategories' => array( 'Kawan_hana_roh_lam_kawan' ), + 'Uncategorizedimages' => array( 'Beureukaih_hana_roh_lam_kawan' ), + 'Uncategorizedtemplates' => array( 'Templat_hana_roh_lam_kawan' ), + 'Unusedcategories' => array( 'Kawan_soh' ), + 'Unusedimages' => array( 'Beureukaih_hana_teunguy' ), + 'Wantedpages' => array( 'On_nyang_geuh\'eut' ), + 'Wantedcategories' => array( 'Kawan_nyang_geuh\'eut' ), + 'Wantedfiles' => array( 'Beureukaih_nyang_geuh\'eut' ), + 'Wantedtemplates' => array( 'Templat_nyang_geuh\'eut' ), + 'Mostlinked' => array( 'On_nyang_paleng_le_geunguy' ), + 'Mostlinkedcategories' => array( 'Kawan_nyang_paleng_le_geunguy' ), + 'Mostlinkedtemplates' => array( 'Templat_nyang_paleng_le_geunguy' ), + 'Mostimages' => array( 'Beureukaih_nyang_paleng_le_geunguy' ), + 'Mostcategories' => array( 'Kawan_paleng_le' ), + 'Mostrevisions' => array( 'Neuubah_paleng_le' ), + 'Fewestrevisions' => array( 'Neuubah_paleng_dit' ), + 'Shortpages' => array( 'On_paneuek' ), + 'Longpages' => array( 'On_panyang' ), + 'Newpages' => array( 'On_baro' ), + 'Ancientpages' => array( 'Teunuleh_trep' ), + 'Deadendpages' => array( 'On_mate' ), + 'Protectedpages' => array( 'On_nyang_geupeulindong' ), + 'Protectedtitles' => array( 'Nan_nyang_geupeulindong' ), + 'Allpages' => array( 'Dapeuta_on' ), + 'Prefixindex' => array( 'Dapeuta_neuaway' ), + 'Ipblocklist' => array( 'Dapeuta_neutheun' ), + 'Specialpages' => array( 'On_khusoih' ), + 'Contributions' => array( 'Peuneugot_ureueng_nguy' ), + 'Emailuser' => array( 'Surat-e_ureueng_nguy' ), + 'Confirmemail' => array( 'Peunyo_surat-e' ), + 'Whatlinkshere' => array( 'Hubong_gisa' ), + 'Recentchangeslinked' => array( 'Neuubah_meuhubong' ), + 'Movepage' => array( 'Peupinah_on' ), + 'Blockme' => array( 'Theun_lon' ), + 'Booksources' => array( 'Ne_kitab' ), + 'Categories' => array( 'Dapeuta_kawan' ), + 'Export' => array( 'Peuteubiet' ), + 'Version' => array( 'Seunalen' ), + 'Allmessages' => array( 'MandumPeusan' ), + 'Log' => array( 'Ceunatat' ), + 'Blockip' => array( 'Theun_ureueng_nguy' ), + 'Undelete' => array( 'Peubateue_sampoh' ), + 'Import' => array( 'Peutamong' ), + 'Lockdb' => array( 'Gunci_basis_data' ), + 'Unlockdb' => array( 'Peuhah_gunci_basis_data' ), + 'Userrights' => array( 'Khut_(hak)_ureueng_nguy' ), + 'MIMEsearch' => array( 'Mita_MIME' ), + 'FileDuplicateSearch' => array( 'Mita_beureukaih_saban' ), + 'Unwatchedpages' => array( 'On_hana_soe_kalon' ), + 'Listredirects' => array( 'Dapeuta_peuninah' ), + 'Revisiondelete' => array( 'Sampoh_peugot_ulang' ), + 'Unusedtemplates' => array( 'Templat_hana_soe_nguy' ), + 'Randomredirect' => array( 'Peuninah_beurangkari' ), + 'Mypage' => array( 'On_lon' ), + 'Mytalk' => array( 'Peugah_haba_lon' ), + 'Mycontributions' => array( 'Atra_lon_peugot' ), + 'Listadmins' => array( 'Dapeuta_ureueng_uroh' ), + 'Listbots' => array( 'Dapeuta_bot' ), + 'Popularpages' => array( 'On_meuceuhu' ), + 'Search' => array( 'Mita' ), + 'Resetpass' => array( 'Gantoe_lageuem_rahsia' ), + 'Withoutinterwiki' => array( 'Hana_interwiki' ), + 'MergeHistory' => array( 'Riwayat_peusapat' ), + 'Filepath' => array( 'Neuduek_beureukaih' ), + 'Invalidateemail' => array( 'Peubateue_peusah_surat-e' ), + 'Blankpage' => array( 'On_soh' ), + 'LinkSearch' => array( 'Mita_hubong' ), + 'DeletedContributions' => array( 'Peuneugot_nyang_geusampoh' ), + 'Tags' => array( 'Tag' ), + 'Activeusers' => array( 'Ureueng_nguy_udep' ), +); + $messages = array( # User preference toggles 'tog-underline' => 'Bôh garéh yup bak hubông:', @@ -32,8 +169,7 @@ $messages = array( 'tog-editsection' => 'Peujeuet andam bideueng rot hubong [andam]', 'tog-editsectiononrightclick' => 'Peujeuet andam bideueng ngon teugon blah uneun bak nan bideueng (peureulee JavaScript)', 'tog-showtoc' => 'Peuleumah dapeuta asoe (keu on-on nyang na leubeh nibak 3 boh aneuk ulee)', -'tog-rememberpassword' => 'Ingat lageuëm rahsia lôn bak komputer nyoë', -'tog-editwidth' => 'Peurayeuk kotak andam ube layeu komputer', +'tog-rememberpassword' => 'Ingat lôn tamong bak peuramban nyoë (keu paleng trep $1 {{PLURAL:$1|uroë|uroë}})', 'tog-watchcreations' => 'Tamah on-on nyang lonpeugot u dapeuta kalon', 'tog-watchdefault' => 'Tamah on-on nyang lon-andam u dapeuta kalon', 'tog-watchmoves' => 'Tamah on-on nyang lonpeupinah u dapeuta kalon', @@ -151,26 +287,21 @@ $messages = array( 'faqpage' => 'Project:FAQ', # Vector skin -'vector-action-addsection' => 'Beunagi barô', -'vector-action-delete' => 'Sampôh', -'vector-action-move' => 'Peupinah', -'vector-action-protect' => 'Peulindông', -'vector-action-undelete' => 'Bateuë sampôh', -'vector-action-unprotect' => 'Bateuë peulindông', -'vector-namespace-category' => 'Kawan', -'vector-namespace-help' => 'Ôn beunantu', -'vector-namespace-image' => 'Beureukah', -'vector-namespace-main' => 'Ôn', -'vector-namespace-media' => 'Ôn media', -'vector-namespace-mediawiki' => 'Peusan', -'vector-view-create' => 'Peugöt', -'vector-view-edit' => 'Andam', -'vector-view-history' => 'Atra u likôt', -'vector-view-view' => 'Beuët', -'vector-view-viewsource' => 'Eu nè', -'actions' => 'Buet', -'namespaces' => 'Ruweuëng nan', -'variants' => 'Ragam', +'vector-action-addsection' => 'Beunagi barô', +'vector-action-delete' => 'Sampôh', +'vector-action-move' => 'Peupinah', +'vector-action-protect' => 'Peulindông', +'vector-action-undelete' => 'Bateuë sampôh', +'vector-action-unprotect' => 'Bateuë peulindông', +'vector-simplesearch-preference' => 'Peuudep mita saran nyang geupeusamporeuna (keu kulet Vector khong)', +'vector-view-create' => 'Peugöt', +'vector-view-edit' => 'Andam', +'vector-view-history' => 'Atra u likôt', +'vector-view-view' => 'Beuët', +'vector-view-viewsource' => 'Eu nè', +'actions' => 'Buet', +'namespaces' => 'Ruweuëng nan', +'variants' => 'Ragam', 'errorpagetitle' => 'Seunalah', 'returnto' => 'Gisa u $1.', @@ -290,7 +421,7 @@ Nan Droeneuh ka teupeugot. Neuato laju [[Special:Preferences|peue nyang neugalak 'yourname' => 'Ureuëng nguy:', 'yourpassword' => 'Lageuëm:', 'yourpasswordagain' => 'Pasoë lom lageuëm:', -'remembermypassword' => 'Ingat lageuëm rahsia lôn bak komputer nyoë', +'remembermypassword' => 'Ingat lôn tamong bak peuramban nyoë (keu paleng trep $1 {{PLURAL:$1|uroë|uroë}})', 'login' => 'Tamöng', 'nav-login-createaccount' => 'Tamöng / dapeuta', 'loginprompt' => "Droëneuh suwah/payah neupeu’udép ''cookies'' mangat jeuët neutamong u {{SITENAME}}", @@ -383,7 +514,6 @@ Ji Droëneuh jeuët [[Special:Search/{{PAGENAME}}|neumita keu nan ôn nyoë]] ba 'editingsection' => 'Andam $1 (bideuëng)', 'copyrightwarning' => "Beu neuingat bahwa ban mandum nyang Droëneuh tuléh keu {{SITENAME}} geukira geupeuteubiët di yup $2 (ngiëng $1 keu leubèh jeulah). Meunyoë Droëneuh h‘an neutém teunuléh Droëneuh ji’andam ngön jiba ho ho la’én, bèk neupasoë teunuléh Droëneuh keunoë.<br />Droëneuh neumeujanji chit meunyoë teunuléh nyoë nakeuh atra neutuléh keudroë, atawa neucok nibak nè nè atra umôm atawa nè bibeuëh la’én. '''BÈK NEUPASOË TEUNULÉH NYANG GEUPEULINDÔNG HAK KARANG NYANG HANA IDIN'''", -'longpagewarning' => "'''INGAT: Ôn nyoë panyangjih nakeuh $1 kilobit; ladôm alat rawoh web kadang na masalah bak ji’andam ôn nyang panyangjih 32 kb atawa leubèh. Beu neupeutimang keu neuplah jeuët padum boh beunagi nyang leubèh cut. '''", 'templatesused' => '{{PLURAL:$1|Templat|Templat}} nyang geunguy bak ôn nyoë:', 'templatesusedpreview' => '{{PLURAL:$1|Templat|Templat}} nyang geunguy bak eu dilèë nyoë:', 'template-protected' => '(geulindông)', @@ -648,7 +778,6 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë # Watchlist 'watchlist' => 'Dapeuta keunalön lôn', 'mywatchlist' => 'Keunalön', -'watchlistfor' => "(keu '''$1''')", 'addedwatch' => 'Ka geupeutamah u dapeuta kalön', 'addedwatchtext' => "Ôn \"[[:\$1]]\" ka geupeutamah u [[Special:Watchlist|dapeuta keunalön]] Droëneuh. Neu’ubah-neu’ubah bak masa u keuë bak ôn nyan ngön bak ôn peugah habajih, euntreuk leumah nyoë pat. Ôn nyan euntreuk geupeuleumah ''teubay'' bak [[Special:RecentChanges|dapeuta neu’ubah paléng barô]] mangat leubèh mudah leumah.", 'removedwatch' => 'Ka geusampôh nibak dapeuta keunalön', @@ -866,9 +995,9 @@ Hubông teutap keu revisi ôn nyoë', 'nextdiff' => 'Geunantoë lheuëh nyan →', # Media information -'file-info-size' => '($1 × $2 piksel, rayek beureukah: $3, MIME jeunèh: $4)', +'file-info-size' => '$1 × $2 piksel, rayek beureukah: $3, MIME jeunèh: $4', 'file-nohires' => '<small>Hana resolusi nyang leubèh manyang.</small>', -'svg-long-desc' => '(Beureukah SVG, nominal $1 x $2 piksel, rayek beureukah: $3)', +'svg-long-desc' => 'Beureukah SVG, nominal $1 x $2 piksel, rayek beureukah: $3', 'show-big-image' => 'Resolusi peunoh', 'show-big-image-thumb' => '<small>Rayek atra nyoë: $1 x $2 piksel</small>', diff --git a/languages/messages/MessagesAf.php b/languages/messages/MessagesAf.php index ac324961..4cba542b 100644 --- a/languages/messages/MessagesAf.php +++ b/languages/messages/MessagesAf.php @@ -72,13 +72,21 @@ $magicWords = array( 'pagename' => array( '1', 'BLADSYNAAM', 'PAGENAME' ), 'namespace' => array( '1', 'NAAMSPASIE', 'NAMESPACE' ), 'talkspace' => array( '1', 'BESPREKINGSBLADSY', 'TALKSPACE' ), + 'fullpagename' => array( '1', 'VOLBLADSYNAAM', 'FULLPAGENAME' ), + 'img_thumbnail' => array( '1', 'duimnael', 'thumbnail', 'thumb' ), 'img_right' => array( '1', 'regs', 'right' ), 'img_left' => array( '1', 'links', 'left' ), 'img_none' => array( '1', 'geen', 'none' ), + 'img_center' => array( '1', 'senter', 'center', 'centre' ), + 'img_framed' => array( '1', 'omraam', 'framed', 'enframed', 'frame' ), + 'img_frameless' => array( '1', 'raamloos', 'frameless' ), 'img_border' => array( '1', 'raam', 'border' ), 'img_top' => array( '1', 'bo', 'top' ), + 'img_text_top' => array( '1', 'teks-bo', 'text-top' ), 'img_middle' => array( '1', 'middel', 'middle' ), 'img_bottom' => array( '1', 'onder', 'bottom' ), + 'img_text_bottom' => array( '1', 'teks-onder', 'text-bottom' ), + 'img_link' => array( '1', 'skakel=$1', 'link=$1' ), 'sitename' => array( '1', 'WERFNAAM', 'SITENAME' ), 'server' => array( '0', 'BEDIENER', 'SERVER' ), 'servername' => array( '0', 'BEDIENERNAAM', 'SERVERNAME' ), @@ -95,21 +103,22 @@ $magicWords = array( 'pagesize' => array( '1', 'BLADSYGROOTTE', 'PAGESIZE' ), 'index' => array( '1', '__INDEKS__', '__INDEX__' ), 'noindex' => array( '1', '__GEENINDEKS__', '__NOINDEX__' ), + 'url_path' => array( '0', 'PAD', 'PATH' ), ); $specialPageAliases = array( - 'DoubleRedirects' => array( 'Dubbele aansture', 'Dubbeleaansture' ), - 'BrokenRedirects' => array( 'Stukkende aansture', 'Stukkendeaansture' ), + 'DoubleRedirects' => array( 'Dubbele_aansture', 'Dubbeleaansture' ), + 'BrokenRedirects' => array( 'Stukkende_aansture', 'Stukkendeaansture' ), 'Disambiguations' => array( 'Dubbelsinnig' ), - 'Userlogin' => array( 'Teken in', 'Tekenin' ), - 'Userlogout' => array( 'Teken uit', 'Tekenuit' ), + 'Userlogin' => array( 'Teken_in', 'Tekenin' ), + 'Userlogout' => array( 'Teken_uit', 'Tekenuit' ), 'CreateAccount' => array( 'SkepRekening', 'MaakGebruiker' ), 'Preferences' => array( 'Voorkeure' ), 'Watchlist' => array( 'Dophoulys' ), - 'Recentchanges' => array( 'Onlangse wysigings', 'Onlangsewysigings' ), + 'Recentchanges' => array( 'Onlangse_wysigings', 'Onlangsewysigings' ), 'Upload' => array( 'Laai', 'Oplaai' ), 'Listfiles' => array( 'Beeldelys', 'Prentelys', 'Lêerslys' ), - 'Newimages' => array( 'Nuwe beelde', 'Nuwebeelde', 'Nuwe lêers', 'Nuwelêers' ), + 'Newimages' => array( 'Nuwe_beelde', 'Nuwebeelde', 'Nuwe_lêers', 'Nuwelêers' ), 'Listusers' => array( 'Gebruikerslys', 'Lysgebruikers' ), 'Listgrouprights' => array( 'LysGroepRegte' ), 'Statistics' => array( 'Statistiek' ), @@ -134,27 +143,28 @@ $specialPageAliases = array( 'Fewestrevisions' => array( 'MinsteWysigings' ), 'Shortpages' => array( 'KortBladsye' ), 'Longpages' => array( 'LangBladsye' ), - 'Newpages' => array( 'Nuwe bladsye', 'Nuwebladsye' ), + 'Newpages' => array( 'Nuwe_bladsye', 'Nuwebladsye' ), 'Ancientpages' => array( 'OuBladsye' ), 'Deadendpages' => array( 'DoodloopBladsye' ), 'Protectedpages' => array( 'BeskermdeBladsye' ), 'Protectedtitles' => array( 'BeskermdeTitels' ), - 'Allpages' => array( 'Alle bladsye', 'Allebladsye' ), + 'Allpages' => array( 'Alle_bladsye', 'Allebladsye' ), 'Prefixindex' => array( 'VoorvoegselIndeks' ), 'Ipblocklist' => array( 'IPBlokLys' ), - 'Specialpages' => array( 'Spesiale bladsye', 'Spesialebladsye' ), + 'Unblock' => array( 'Deblokkeer' ), + 'Specialpages' => array( 'Spesiale_bladsye', 'Spesialebladsye' ), 'Contributions' => array( 'Bydraes', 'Gebruikersbydraes' ), - 'Emailuser' => array( 'Stuur e-pos', 'Stuure-pos', 'Stuur epos', 'Stuurepos' ), - 'Confirmemail' => array( 'Bevestig e-posadres', 'Bevestige-posadres', 'Bevestig eposadres', 'Bevestigeposadres' ), - 'Whatlinkshere' => array( 'Skakels hierheen', 'Skakelshierheen' ), + 'Emailuser' => array( 'Stuur_e-pos', 'Stuure-pos', 'Stuur_epos', 'Stuurepos' ), + 'Confirmemail' => array( 'Bevestig_e-posadres', 'Bevestige-posadres', 'Bevestig_eposadres', 'Bevestigeposadres' ), + 'Whatlinkshere' => array( 'Skakels_hierheen', 'Skakelshierheen' ), 'Recentchangeslinked' => array( 'OnlangseVeranderingsMetSkakels', 'VerwanteVeranderings' ), - 'Movepage' => array( 'Skuif bladsy', 'Skuifbladsy' ), + 'Movepage' => array( 'Skuif_bladsy', 'Skuifbladsy' ), 'Blockme' => array( 'BlokMy' ), 'Booksources' => array( 'Boekbronne' ), 'Categories' => array( 'Kategorieë' ), 'Export' => array( 'Eksporteer' ), 'Version' => array( 'Weergawe' ), - 'Allmessages' => array( 'Stelselboodskappe', 'Alle stelselboodskappe', 'Allestelselboodskappe', 'Boodskappe' ), + 'Allmessages' => array( 'Stelselboodskappe', 'Alle_stelselboodskappe', 'Allestelselboodskappe', 'Boodskappe' ), 'Log' => array( 'Logboek', 'Logboeke' ), 'Blockip' => array( 'BlokIP' ), 'Undelete' => array( 'Ontskrap' ), @@ -162,13 +172,13 @@ $specialPageAliases = array( 'Lockdb' => array( 'SluitDB' ), 'Unlockdb' => array( 'OntsluitDB' ), 'Userrights' => array( 'GebruikersRegte' ), - 'MIMEsearch' => array( 'MIME-soek', 'MIMEsoek', 'MIME soek' ), + 'MIMEsearch' => array( 'MIME-soek', 'MIMEsoek', 'MIME_soek' ), 'FileDuplicateSearch' => array( 'LerDuplikaatSoek' ), 'Unwatchedpages' => array( 'NieDopgehoudeBladsye' ), 'Listredirects' => array( 'LysAansture' ), 'Revisiondelete' => array( 'WeergaweSkrap' ), 'Unusedtemplates' => array( 'OngebruikteSjablone' ), - 'Randomredirect' => array( 'Lukrake aanstuur', 'Lukrakeaanstuur' ), + 'Randomredirect' => array( 'Lukrake_aanstuur', 'Lukrakeaanstuur' ), 'Mypage' => array( 'MyBladsy' ), 'Mytalk' => array( 'Mybespreking', 'Mybesprekings' ), 'Mycontributions' => array( 'Mybydrae' ), @@ -177,7 +187,7 @@ $specialPageAliases = array( 'Popularpages' => array( 'PopulêreBladsye' ), 'Search' => array( 'Soek' ), 'Resetpass' => array( 'HerstelWagwoord' ), - 'Withoutinterwiki' => array( 'Sonder taalskakels', 'Sondertaalskakels' ), + 'Withoutinterwiki' => array( 'Sonder_taalskakels', 'Sondertaalskakels' ), 'MergeHistory' => array( 'VersmeltGeskiedenis' ), 'Filepath' => array( 'Lêerpad' ), 'Invalidateemail' => array( 'OngeldigeEpos' ), @@ -210,8 +220,7 @@ $messages = array( 'tog-editsection' => 'Wys [wysig]-skakels vir elke afdeling', 'tog-editsectiononrightclick' => 'Wysig afdeling met regskliek op afdeling se titel (JavaScript)', 'tog-showtoc' => 'Wys inhoudsopgawe (by bladsye met meer as drie opskrifte)', -'tog-rememberpassword' => 'Onthou wagwoord oor sessies.', -'tog-editwidth' => 'Verbreed die wysigingsboks oor die volle breedte van die skerm', +'tog-rememberpassword' => "Onthou dat ek op hierdie rekenaar ingeteken het (vir 'n maksimum van $1 {{PLURAL:$|dag|dae}})", 'tog-watchcreations' => 'Voeg bladsye wat ek skep by my dophoulys', 'tog-watchdefault' => 'Lys nuwe en gewysigde bladsye.', 'tog-watchmoves' => 'Voeg die bladsye wat ek skuif by my dophoulys', @@ -355,31 +364,21 @@ $messages = array( 'faqpage' => 'Project:GewildeVrae', # Vector skin -'vector-action-addsection' => 'Nuwe onderwerp', -'vector-action-delete' => 'Skrap', -'vector-action-move' => 'Skuif', -'vector-action-protect' => 'Beskerm', -'vector-action-undelete' => 'Ontskrap', -'vector-action-unprotect' => 'Verwyder beskerming', -'vector-namespace-category' => 'Kategorie', -'vector-namespace-help' => 'Hulpbladsy', -'vector-namespace-image' => 'Lêer', -'vector-namespace-main' => 'Bladsy', -'vector-namespace-media' => 'Mediablad', -'vector-namespace-mediawiki' => 'Boodskap', -'vector-namespace-project' => 'Projekblad', -'vector-namespace-special' => 'Spesiale bladsy', -'vector-namespace-talk' => 'Bespreking', -'vector-namespace-template' => 'Sjabloon', -'vector-namespace-user' => 'Gebruikersblad', -'vector-view-create' => 'Skep', -'vector-view-edit' => 'Wysig', -'vector-view-history' => 'Wys geskiedenis', -'vector-view-view' => 'Lees', -'vector-view-viewsource' => 'Wys bronteks', -'actions' => 'Aksies', -'namespaces' => 'Naamruimtes', -'variants' => 'Variante', +'vector-action-addsection' => 'Nuwe onderwerp', +'vector-action-delete' => 'Skrap', +'vector-action-move' => 'Skuif', +'vector-action-protect' => 'Beskerm', +'vector-action-undelete' => 'Ontskrap', +'vector-action-unprotect' => 'Verwyder beskerming', +'vector-simplesearch-preference' => 'Aktiveer verbeterde soek-voorstelle (slegs vir die Vektor omslag)', +'vector-view-create' => 'Skep', +'vector-view-edit' => 'Wysig', +'vector-view-history' => 'Wys geskiedenis', +'vector-view-view' => 'Lees', +'vector-view-viewsource' => 'Wys bronteks', +'actions' => 'Aksies', +'namespaces' => 'Naamruimtes', +'variants' => 'Variante', 'errorpagetitle' => 'Fout', 'returnto' => 'Keer terug na $1.', @@ -440,6 +439,9 @@ Te veel gebruikers probeer om na hierdie bladsy te kyk. Wag asseblief 'n rukkie voordat u weer probeer om die bladsy op te roep. $1", +'pool-timeout' => "Die maksimum wagtyd vir 'n databasisversperring is oorskry.", +'pool-queuefull' => 'Die poel se wagtou is vol', +'pool-errorunknown' => 'Onbekende fout', # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations). 'aboutsite' => 'Inligting oor {{SITENAME}}', @@ -606,7 +608,8 @@ moenie vergeet om u [[Special:Preferences|persoonlike voorkeure vir {{SITENAME}} 'yourname' => 'Gebruikersnaam:', 'yourpassword' => 'Wagwoord:', 'yourpasswordagain' => 'Herhaal wagwoord', -'remembermypassword' => 'Onthou my wagwoord oor sessies.', +'remembermypassword' => "Onthou dat ek op hierdie rekenaar ingeteken het (vir 'n maksimum van $1 {{PLURAL:$|dag|dae}})", +'securelogin-stick-https' => 'Bly verbind met HTTPS na aanmelding', 'yourdomainname' => 'U domein:', 'externaldberror' => "'n Databasis fout het voorgekom tydens aanmelding of u het nie toestemming om u eksterne rekening op te dateer nie.", 'login' => 'Teken in', @@ -623,6 +626,7 @@ moenie vergeet om u [[Special:Preferences|persoonlike voorkeure vir {{SITENAME}} 'gotaccount' => "Het u reeds 'n rekening? '''$1'''.", 'gotaccountlink' => 'Teken in', 'createaccountmail' => 'deur e-pos', +'createaccountreason' => 'Rede:', 'badretype' => 'Die ingetikte wagwoorde is nie dieselfde nie.', 'userexists' => "Die gebruikersnaam wat u gekies het is reeds geneem. Kies asseblief 'n ander naam.", @@ -647,6 +651,7 @@ Intekening word verbied.', 'wrongpasswordempty' => 'Die wagwoord was leeg. Probeer asseblief weer.', 'passwordtooshort' => 'Wagwoorde moet ten minste {{PLURAL:$1|1 karakter|$1 karakters}} lank wees.', 'password-name-match' => 'U wagwoord mag nie dieselfde as u gebruikersnaam wees nie.', +'password-login-forbidden' => 'Die gebruik van hierdie gebruikersnaam en wagwoord is geweier.', 'mailmypassword' => "E-pos my 'n nuwe wagwoord", 'passwordremindertitle' => 'Wagwoordwenk van {{SITENAME}}', 'passwordremindertext' => 'Iemand (waarskynlik u vanaf IP-adres $1) het \'n nuwe wagwoord vir {{SITENAME}} ($4) gevra. \'n Tydelike wagwoord is vir gebruiker "$2" geskep. Die nuwe wagwoord is "$3". U kan met die tydelike wagwoord aanteken en \'n nuwe wagwoord stel. Die tydelike wagwoord sal na {{PLURAL:$5|een dag|$5 dae}} verval. @@ -683,6 +688,9 @@ Wag asseblief alvorens u weer probeer.", 'loginlanguagelabel' => 'Taal: $1', 'suspicious-userlogout' => "U versoek om af te teken is geïgnoreer omdat dit lyk asof dit deur 'n gebreekte webleser of instaanbediener gestuur is.", +# E-mail sending +'php-mail-error-unknown' => 'Onbekende fout in PHP se mail()-funksie', + # Password reset dialog 'resetpass' => 'Verander wagwoord', 'resetpass_announce' => "U het aangeteken met 'n tydelike e-poskode. @@ -734,9 +742,11 @@ U het moontlik reeds u wagwoord gewysig of 'n nuwe tydelike wagwoord aangevra.", 'showlivepreview' => 'Lewendige voorskou', 'showdiff' => 'Wys veranderings', 'anoneditwarning' => "'''Waarskuwing:''' Aangesien u nie aangeteken is nie, sal u IP-adres in dié blad se wysigingsgeskiedenis gestoor word.", +'anonpreviewwarning' => "''U is nie aangeteken nie.'' +''As u die bladsy stoor sal u IP-adres in die bladsy se geskeidenis aangeteken word.''", 'missingsummary' => "'''Onthou:''' Geen opsomming van die wysiging is verskaf nie. As \"Stoor\" weer geklik word, word die wysiging sonder opsomming gestoor.", 'missingcommenttext' => 'Tik die opsomming onder.', -'missingcommentheader' => "'''Let op:''' U het geen onderwerp/opskrif vir die opmerking verskaf nie. As u weer op \"Stoor\" klik, sal u wysiging sonder die onderwerp/opskrif gestoor word.", +'missingcommentheader' => "'''Let op:''' U het geen onderwerp/opskrif vir die opmerking verskaf nie. As u weer op \"{{int:savearticle}}\" klik, sal u wysiging sonder die onderwerp/opskrif gestoor word.", 'summary-preview' => 'Opsomming nakijken:', 'subject-preview' => 'Onderwerp/ opskrif voorskou:', 'blockedtitle' => 'Gebruiker is geblokkeer', @@ -805,8 +815,12 @@ Die laaste inskrywing in die blokkeerlogboek word hieronder vertoon:', 'usercsspreview' => "'''Onthou hierdie is slegs 'n voorskou van u persoonlike CSS.''' '''Dit is nog nie gestoor nie!'''", 'userjspreview' => "'''Onthou hierdie is slegs 'n toets/voorskou van u gebruiker-JavaScript, dit is nog nie gestoor nie.'''", +'sitecsspreview' => "'''Onthou dat u na 'n voorskou van die CSS-kode kyk.''' +'''Dit is nog nie gestoor nie!'''", +'sitejspreview' => "'''Onthou dat u na 'n voorskou van die JavaScript-kode kyk.''' +'''Dit is nog nie gestoor nie!'''", 'userinvalidcssjstitle' => "'''Waarskuwing:''' daar is nie 'n omslag \"\$1\" nie. -Onthou dat u eie .css- en .js-bladsye met 'n kleinletter begin, byvoorbeeld {{ns:user}}:Naam/monobook.css in plaas van {{ns:user}}:Naam/Monobook.css.", +Onthou dat u eie .css- en .js-bladsye met 'n kleinletter begin, byvoorbeeld {{ns:user}}:Naam/vector.css in plaas van {{ns:user}}:Naam/Vector.css.", 'updated' => '(Gewysig)', 'note' => "'''Nota:'''", 'previewnote' => "'''Onthou dat hierdie slegs 'n voorskou is en nog nie gestoor is nie!'''", @@ -844,8 +858,6 @@ Hierdeur beloof u ons dat u die byvoegings self geskryf het, of gekopieer het va 'copyrightwarning2' => "Enige bydraes op {{SITENAME}} mag genadeloos gewysig of selfs verwyder word; indien u dit nie met u bydrae wil toelaat nie, moenie dit hier bylas nie.<br /> Deur enigiets hier te plaas, beloof u dat u dit self geskryf het, of dat dit gekopieer is vanuit \"publieke domein\" of soortgelyke vrye bronne (sien \$1 vir details). '''MOENIE WERK WAT DEUR KOPIEREG BESKERM WORD HIER PLAAS SONDER TOESTEMMING NIE!'''", -'longpagewarning' => 'WAARSKUWING: Hierdie bladsy is $1 kG groot. -Probeer asseblief die bladsy verkort en die detail na subartikels skuif sodat dit nie 32 kG oorskry nie.', 'longpageerror' => "'''FOUT: die teks wat u bygevoeg het is $1 kilogrepe groot, wat groter is as die maximum van $2 kilogrepe. Die bladsy kan nie gestoor word nie.'''", 'readonlywarning' => "'''WAARSKUWING: Die databasis is gesluit vir onderhoud. Dus sal u nie nou u wysigings kan stoor nie. Dalk wil u die teks plak in 'n lêer en stoor vir later.''' @@ -1024,6 +1036,8 @@ $1", 'logdelete-failure' => "'''Sigbaarheid kon nie vir die logboekreël gestel word nie:''' $1", 'revdel-restore' => 'Verander sigbaarheid', +'revdel-restore-deleted' => 'geskrapte wysigings', +'revdel-restore-visible' => 'sigbare wysigings', 'pagehist' => 'Bladsy geskiedenis', 'deletedhist' => 'Verwyderde geskiedenis', 'revdelete-content' => 'inhoud', @@ -1091,11 +1105,13 @@ Let op dat die gebruik van navigasieskakels hierdie kolom se waardes sal herstel # Diffs 'history-title' => 'Weergawegeskiedenis van "$1"', 'difference' => '(Verskil tussen weergawes)', +'difference-multipage' => '(Verskil tussen bladsye)', 'lineno' => 'Lyn $1:', 'compareselectedversions' => 'Vergelyk gekose weergawes', 'showhideselectedversions' => 'Wys/versteek gekose weergawes', 'editundo' => 'maak ongedaan', -'diff-multi' => '({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} word nie gewys nie.)', +'diff-multi' => '({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur {{PLURAL:$2|een gebruiker|$2 gebruikers}} word nie gewys nie)', +'diff-multi-manyusers' => '({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur meer as $2 {{PLURAL:$2|gebruiker|gebruikers}} nie gewys nie)', # Search results 'searchresults' => 'soekresultate', @@ -1130,6 +1146,7 @@ Let op dat die gebruik van navigasieskakels hierdie kolom se waardes sal herstel 'searchprofile-everything-tooltip' => 'Soek deur alle inhoud (ook besprekingsbladsye)', 'searchprofile-advanced-tooltip' => 'Soek in spesifieke naamruimtes', 'search-result-size' => '$1 ({{PLURAL:$2|1 woord|$2 woorde}})', +'search-result-category-size' => '{{PLURAL:$1|1 kategorielid|$1 kategorielede}} ({{PLURAL:$2|1 subkategorie|$2 subkategorieë}}, {{PLURAL:$3|1 lêer|$3 lêers}})', 'search-result-score' => 'Relevansie: $1%', 'search-redirect' => '(aanstuur $1)', 'search-section' => '(afdeling $1)', @@ -1206,6 +1223,7 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.", 'contextlines' => 'Aantal lyne per resultaat', 'contextchars' => 'Karakters konteks per lyn', 'stub-threshold' => 'Drempel vir merk as <a href="#" class="stub">saadjie</a> (grepe):', +'stub-threshold-disabled' => 'Afgeskakel', 'recentchangesdays' => 'Aantal dae wat in onlangse wysigings vertoon word:', 'recentchangesdays-max' => 'Maksimum $1 {{PLURAL:$1|dag|dae}}', 'recentchangescount' => 'Aantal wysigings om by verstek te vertoon:', @@ -1239,6 +1257,7 @@ Hier volg 'n lukraak gegenereerde waarde wat u kan gebruik: $1", 'prefs-files' => 'Lêers', 'prefs-custom-css' => 'Persoonlike CSS', 'prefs-custom-js' => 'Persoonlike JS', +'prefs-common-css-js' => 'Gedeelde CSS/JS vir al die omslae:', 'prefs-reset-intro' => 'U kan die blad gebruik om u voorkeure terug te stel na die webwerf se verstekwaardes. Die aksie kan nie ongedaan gemaak word nie.', 'prefs-emailconfirm-label' => 'E-posbevestiging:', @@ -1277,9 +1296,15 @@ U kan ook besluit om e-pos te ontvang as ander gebruikers u gebruikers- of bespr 'prefs-advancedrendering' => 'Gevorderde instellings', 'prefs-advancedsearchoptions' => 'Gevorderde instellings', 'prefs-advancedwatchlist' => 'Gevorderde instellings', -'prefs-display' => 'Vertoonopsies', +'prefs-displayrc' => 'Vertoonopsies', +'prefs-displaysearchoptions' => 'Weergaweopsies', +'prefs-displaywatchlist' => 'Weergaweopsies', 'prefs-diffs' => 'Verskille', +# User preference: e-mail validation using jQuery +'email-address-validity-valid' => 'Die e-posadres lyk geldig', +'email-address-validity-invalid' => "Verskaf 'n geldige e-posadres", + # User rights 'userrights' => 'Bestuur gebruikersregte', 'userrights-lookup-user' => 'Beheer gebruikersgroepe', @@ -1363,6 +1388,7 @@ U kan ook besluit om e-pos te ontvang as ander gebruikers u gebruikers- of bespr 'right-hideuser' => "Blokkeer 'n gebruiker, versteek dit van die publiek", 'right-ipblock-exempt' => 'Omseil IP-blokkades', 'right-proxyunbannable' => "Blokkades vir instaanbedieners (proxy's) geld nie", +'right-unblockself' => 'Eie gebruiker deblokkeer', 'right-protect' => 'Verander beskermingsvlakke en wysig beskermde bladsye', 'right-editprotected' => 'Wysig beskermde bladsye (sonder kaskade-beskerming)', 'right-editinterface' => 'Wysig die gebruikerskoppelvlak', @@ -1385,7 +1411,6 @@ U kan ook besluit om e-pos te ontvang as ander gebruikers u gebruikers- of bespr 'right-siteadmin' => 'Sluit en ontsluit die datbasis', 'right-reset-passwords' => 'Herstel ander gebruikers se wagwoorde', 'right-override-export-depth' => "Eksporteer bladsye insluitend geskakelde bladsye tot 'n diepte van 5", -'right-versiondetail' => 'Wys omvattende sagteware weergawe inligting', 'right-sendemail' => 'Stuur e-pos aan ander gebruikers', # User rights log @@ -1436,14 +1461,9 @@ U kan ook besluit om e-pos te ontvang as ander gebruikers u gebruikers- of bespr 'recentchanges-legend' => 'Opsies vir onlangse wysigings', 'recentchangestext' => 'Volg die mees onlangse wysigings aan die wiki op die bladsy.', 'recentchanges-feed-description' => 'Spoor die mees onlangse wysigings op die wiki na in die voer.', -'recentchanges-label-legend' => 'Sleutel: $1.', -'recentchanges-legend-newpage' => '$1 - nuwe bladsy', 'recentchanges-label-newpage' => "Met die wysiging is 'n nuwe bladsy geskep", -'recentchanges-legend-minor' => '$1 - klein wysiging', 'recentchanges-label-minor' => "Hierdie is 'n klein wysiging", -'recentchanges-legend-bot' => '$1 - robotwysiging', 'recentchanges-label-bot' => "Hierdie wysiging was deur 'n bot uitgevoer", -'recentchanges-legend-unpatrolled' => '$1 - ongekontroleerde wysiging', 'recentchanges-label-unpatrolled' => 'Die wysiging is nog nie gekontroleer nie', 'rcnote' => "Hier volg die laaste {{PLURAL:$1|'''$1''' wysiging|'''$1''' wysigings}} vir die afgelope {{PLURAL:$2|dag|'''$2''' dae}}, soos vanaf $4, $5.", 'rcnotefrom' => 'Hier onder is die wysigings sedert <b>$2</b> (tot by <b>$1</b> word gewys).', @@ -1491,6 +1511,9 @@ om lêers te laai.', 'upload_directory_missing' => 'Die oplaaigids ($1) bestaan nie en kon nie deur die webbediener geskep word nie.', 'upload_directory_read_only' => 'Die webbediener kan nie na die oplaai gids ($1) skryf nie.', 'uploaderror' => 'Laaifout', +'upload-recreate-warning' => "'''Waarskuwing:' n lêer met dieselfde naam is verwyder of geskuif.''' + +Die verwyder- en skuiflogboeke van hierdie bladsy word hier vir verdere inligting vertoon:", 'uploadtext' => "Gebruik die vorm hier onder om nuwe lêers te laai wat u in u artikels wil gebruik. Om lêers wat voorheen opgelaai is te sien of te deursoek, gaan na die [[Special:FileList|lêerlys]]. Die laai van lêers word in die [[Special:Log/upload|laailog]] aangeteken. @@ -1532,6 +1555,17 @@ Aanbevole {{PLURAL:\$3|lêertipe|lêertipes}} is \$2.", 'filetype-banned-type' => "'''\".\$1\"''' is nie 'n toegelate lêertipe nie. Toelaatbare {{PLURAL:\$3|lêertipes|lêertipes}} is \$2.", 'filetype-missing' => 'Die lêer het geen uitbreiding (soos ".jpg").', +'empty-file' => 'Die lêer wat u probeer oplaai is leeg.', +'file-too-large' => 'Die lêer wat u probeer oplaai is te groot.', +'filename-tooshort' => 'Die lêernaam is te kort.', +'filetype-banned' => 'Hierdie tipe lêer is verban en word nie toegelaat nie.', +'verification-error' => 'Verifikasie van die lêer wat u probeer oplaai het gefaal.', +'hookaborted' => "Die wysiging wat u probeer maak is deur 'n uitbreiding gekanselleer.", +'illegal-filename' => 'Die lêernaam word nie toegelaat nie.', +'overwrite' => "Die oorskryf van 'n bestaande lêer word nie toegelaat nie.", +'unknown-error' => "'n Onbekende fout voorgekom het.", +'tmp-create-error' => 'Kon nie tydelike lêer skep nie.', +'tmp-write-error' => 'Fout met skryf van tydelike lêer.', 'large-file' => 'Aanbeveling: maak lêer kleiner as $1; die lêer is $2.', 'largefileserver' => 'Hierdie lêer is groter as wat die bediener se opstelling toelaat.', @@ -1563,13 +1597,14 @@ Indien u die lêer nog wil oplaai, gaan asseblief terug en kies 'n ander naam. 'file-exists-duplicate' => "Die lêer is 'n duplikaat van die volgende {{PLURAL:$1|lêer|lêers}}:", 'file-deleted-duplicate' => "'n Lêer identies aan dié een ([[:$1]]) was al voorheen geskrap. <br /> Dit word aanbeveel dat u die lêer se skrapgeskiedenis besigtig voor u poog om dit weer op te laai.", -'successfulupload' => 'Laai suksesvol', 'uploadwarning' => 'Laaiwaarskuwing', 'uploadwarning-text' => 'Verander die onderstaande lêerbeskrywing en probeer dan weer.', 'savefile' => 'Stoor lêer', 'uploadedimage' => 'het "[[$1]]" gelaai', 'overwroteimage' => 'het een nuwe weergawe van "[[$1]]" gelaai', 'uploaddisabled' => 'Laai is uitgeskakel', +'copyuploaddisabled' => 'Die oplaai van lêers per URL is afgeskakel.', +'uploadfromurl-queued' => 'U oplaai is in die wagtou geplaas.', 'uploaddisabledtext' => 'Die oplaai van lêers is afgeskakel.', 'php-uploaddisabledtext' => 'Die oplaai van lêers is in PHP afgeskakel. Kyk na die "file_uploads"-instelling.', @@ -1591,6 +1626,15 @@ Dink twee keer na of dit wel gepas is om die lêer hier op te laai. Die verwyderingsinligting van die lêer word vir u gemak hier herhaal:", 'filename-bad-prefix' => "Die naam van die lêer wat u besig is om op te laai begin met '''\"\$1\"''', wat 'n nie-beskrywende term is, gewoonlik outomaties toegedien deur digitale kameras. Kies asseblief 'n meer beskrywende naam vir die lêer.", +'upload-success-subj' => 'Laai suksesvol', +'upload-success-msg' => 'U het [$2] suksesvol opgelaai. Dit is nou beskikbaar by: [[:{{ns:file}}:$1]]', +'upload-failure-subj' => 'Oplaaiprobleem', +'upload-failure-msg' => "Daar was 'n probleem met u oplaai van [$2]: + +$1", +'upload-warning-subj' => 'Oplaai-waarskuwing', +'upload-warning-msg' => "Daar was 'n probleem met u oplaai van [$2]. +Gaan terug na die [[Special:Upload/stash/$1|oplaaivorm]] om die probleem op te los.", 'upload-proto-error' => 'Verkeerde protokol', 'upload-proto-error-text' => 'Oplaaie via hierdie metode vereis dat die URL met <code>http://</code> of <code>ftp://</code> begin.', @@ -1606,22 +1650,23 @@ As daar steeds probleme is, kontak 'n [[Special:ListUsers/sysop|administrateur]] 'upload-http-error' => "'n HTTP-fout het voorgekom: $1", # img_auth script messages -'img-auth-accessdenied' => 'Toegang geweier', -'img-auth-nopathinfo' => 'PATH_INFO word vermis. +'img-auth-accessdenied' => 'Toegang geweier', +'img-auth-nopathinfo' => 'PATH_INFO word vermis. U bediener is nie ingestel om hierdie inligting deur te stuur nie. Miskien gebruik dit CGI, waartydens img_auth nie ondersteun word nie. Sien http://www.mediawiki.org/wiki/Manual:Image_Authorization vir meer inligting.', -'img-auth-notindir' => 'Die aangevraagde pad is nie die ingestelde oplaaigids nie.', -'img-auth-badtitle' => 'Dit was nie moontlik om \'n geldige bladsynaam van "$1" te maak nie.', -'img-auth-nologinnWL' => 'U is nie aangeteken en "$1" is nie op die witlys nie.', -'img-auth-nofile' => 'Lêer "$1" bestaan nie.', -'img-auth-isdir' => 'U probeer om toegang na gids "$1" te kry. +'img-auth-notindir' => 'Die aangevraagde pad is nie die ingestelde oplaaigids nie.', +'img-auth-badtitle' => 'Dit was nie moontlik om \'n geldige bladsynaam van "$1" te maak nie.', +'img-auth-nologinnWL' => 'U is nie aangeteken en "$1" is nie op die witlys nie.', +'img-auth-nofile' => 'Lêer "$1" bestaan nie.', +'img-auth-isdir' => 'U probeer om toegang na gids "$1" te kry. Slegs toegang tot lêers word toegelaat.', -'img-auth-streaming' => 'Besig met die stoom van "$1".', -'img-auth-public' => "Die doel van img_auth.php is die afvoer van lêers vanaf 'n privaat wiki. +'img-auth-streaming' => 'Besig met die stoom van "$1".', +'img-auth-public' => "Die doel van img_auth.php is die afvoer van lêers vanaf 'n privaat wiki. Hierdie wiki is opgestel as 'n publieke wiki. Vir veiligheidsredes is img_auth.php gedeaktiveer.", -'img-auth-noread' => 'Gebruiker het nie toegang om "$1" te lees nie.', +'img-auth-noread' => 'Gebruiker het nie toegang om "$1" te lees nie.', +'img-auth-bad-query-string' => 'Die URL het \'n ongeldige navraagstring ("query string").', # HTTP errors 'http-invalid-url' => 'Ongeldige URL: $1', @@ -1656,6 +1701,7 @@ Klik op die opskrifte om die tabel anders te sorteer.', 'listfiles_search_for' => 'Soek vir medianaam:', 'imgfile' => 'lêer', 'listfiles' => 'Lêerlys', +'listfiles_thumb' => 'Duimnael', 'listfiles_date' => 'Datum', 'listfiles_name' => 'Naam', 'listfiles_user' => 'Gebruiker', @@ -1768,8 +1814,8 @@ Die beskrywing op die [$2 lêer se inligtingsblad] word hieronder weergegee.', 'statistics-edits' => 'Wysigings sedert {{SITENAME}} begin is', 'statistics-edits-average' => 'Gemiddelde wysigings per bladsy', 'statistics-views-total' => 'Totale aantal bladsye vertoon', +'statistics-views-total-desc' => 'Die wys van nie-bestaande bladsye en spesiale bladsye is nie ingesluit nie', 'statistics-views-peredit' => 'Bladsye besigtig per wysiging', -'statistics-jobqueue' => '[http://www.mediawiki.org/wiki/Manual:Job_queue Job queue] lengte', 'statistics-users' => 'Geregistreerde [[Special:ListUsers|gebruikers]]', 'statistics-users-active' => 'Aktiewe grbruikers', 'statistics-users-active-desc' => "Gebruikers wat in die afgelope {{PLURAL:$1|dag|$1 dae}} 'n handeling uitgevoer het", @@ -1784,7 +1830,7 @@ Die bladsye moet gewysig word om eerder direk na die regte onderwerpe te skakel. 'doubleredirects' => 'Dubbele aansture', 'doubleredirectstext' => 'Hierdie lys bevat bladsye wat aansture na ander aanstuurblaaie is. Elke ry bevat skakels na die eerste en die tweede aanstuur, asook die eerste reël van van die tweede aanstuur se teks, wat gewoonlik die "regte" teiken-bladsy gee waarna die eerste aanstuur behoort te wys. -<s>Doodgekrapte reëls</s> dui aan dat die probleem reeds opgelos is.', +<del>Doodgekrapte reëls</del> dui aan dat die probleem reeds opgelos is.', 'double-redirect-fixed-move' => "[[$1]] was geskuif en is nou 'n deurverwysing na [[$2]].", 'double-redirect-fixer' => 'Aanstuur hersteller', @@ -1807,6 +1853,8 @@ Elke ry bevat skakels na die eerste en die tweede aanstuur, asook die eerste re 'nmembers' => '$1 {{PLURAL:$1|lid|lede}}', 'nrevisions' => '$1 {{PLURAL:$1|weergawe|weergawes}}', 'nviews' => '$1 {{PLURAL:$1|keer|kere}} aangevra', +'nimagelinks' => 'Gebruik op {{PLURAL:$1|een bladsy|$1 bladsye}}', +'ntransclusions' => 'gebruik op {{PLURAL:$1|een bladsy|$1 bladsye}}', 'specialpage-empty' => 'Die verslag lewer geen resultate nie.', 'lonelypages' => 'Weesbladsye', 'lonelypagestext' => 'Die volgende bladsye is nie geskakel of ingesluit in ander bladsye op {{SITENAME}} nie:', @@ -1965,33 +2013,39 @@ Daar kan [[{{MediaWiki:Listgrouprights-helppage}}|extra inligting]] oor individu 'listgrouprights-removegroup-self-all' => 'Alle groepe verwyder van eie gebruiker', # E-mail user -'mailnologin' => 'Geen versendadres beskikbaar', -'mailnologintext' => "U moet [[Special:UserLogin|ingeteken]] wees en 'n geldige e-posadres in die [[Special:Preferences|voorkeure]] hê om e-pos aan ander gebruikers te stuur.", -'emailuser' => 'Stuur e-pos na hierdie gebruiker', -'emailpage' => 'Stuur e-pos na gebruiker', -'emailpagetext' => 'As dié gebruiker \'n geldige e-posadres in sy/haar gebruikersvoorkeure het, sal hierdie vorm \'n enkele boodskap stuur. Die e-posadres in u [[Special:Preferences|gebruikersvoorkeure]] sal verkyn as die "Van"-adres van die pos. Dus sal die ontvanger kan terug antwoord.', -'usermailererror' => 'Fout met versending van e-pos:', -'defemailsubject' => '{{SITENAME}}-epos', -'noemailtitle' => 'Geen e-posadres', -'noemailtext' => "Hierdie gebruiker het nie 'n geldige e-posadres gespesifiseer nie.", -'nowikiemailtitle' => 'Geen E-pos toegelaat nie', -'nowikiemailtext' => 'Hierdie gebruiker wil geen e-pos van andere gebruikers ontvang nie.', -'email-legend' => "Stuur 'n E-pos na 'n ander gebruiker van {{SITENAME}}", -'emailfrom' => 'Van:', -'emailto' => 'Aan:', -'emailsubject' => 'Onderwerp:', -'emailmessage' => 'Boodskap:', -'emailsend' => 'Stuur', -'emailccme' => "E-pos vir my 'n kopie van my boodskap.", -'emailccsubject' => 'Kopie van u boodskap aan $1: $2', -'emailsent' => 'E-pos gestuur', -'emailsenttext' => 'U e-pos is gestuur.', -'emailuserfooter' => 'Hierdie e-pos is gestuur deur $1 aan $2 met behulp van die "Stuur e-pos aan die gebruiker"-funksie van {{SITENAME}}.', +'mailnologin' => 'Geen versendadres beskikbaar', +'mailnologintext' => "U moet [[Special:UserLogin|ingeteken]] wees en 'n geldige e-posadres in die [[Special:Preferences|voorkeure]] hê om e-pos aan ander gebruikers te stuur.", +'emailuser' => 'Stuur e-pos na hierdie gebruiker', +'emailpage' => 'Stuur e-pos na gebruiker', +'emailpagetext' => 'As dié gebruiker \'n geldige e-posadres in sy/haar gebruikersvoorkeure het, sal hierdie vorm \'n enkele boodskap stuur. Die e-posadres in u [[Special:Preferences|gebruikersvoorkeure]] sal verkyn as die "Van"-adres van die pos. Dus sal die ontvanger kan terug antwoord.', +'usermailererror' => 'Fout met versending van e-pos:', +'defemailsubject' => '{{SITENAME}}-epos', +'usermaildisabled' => 'E-pos deur gebruikers is gedeaktiveer.', +'usermaildisabledtext' => 'U kan nie e-pos aan ander gebruikers op hierdie wiki stuur nie', +'noemailtitle' => 'Geen e-posadres', +'noemailtext' => "Hierdie gebruiker het nie 'n geldige e-posadres gespesifiseer nie.", +'nowikiemailtitle' => 'Geen E-pos toegelaat nie', +'nowikiemailtext' => 'Hierdie gebruiker wil geen e-pos van andere gebruikers ontvang nie.', +'email-legend' => "Stuur 'n E-pos na 'n ander gebruiker van {{SITENAME}}", +'emailfrom' => 'Van:', +'emailto' => 'Aan:', +'emailsubject' => 'Onderwerp:', +'emailmessage' => 'Boodskap:', +'emailsend' => 'Stuur', +'emailccme' => "E-pos vir my 'n kopie van my boodskap.", +'emailccsubject' => 'Kopie van u boodskap aan $1: $2', +'emailsent' => 'E-pos gestuur', +'emailsenttext' => 'U e-pos is gestuur.', +'emailuserfooter' => 'Hierdie e-pos is gestuur deur $1 aan $2 met behulp van die "Stuur e-pos aan die gebruiker"-funksie van {{SITENAME}}.', + +# User Messenger +'usermessage-summary' => 'Verlaat stelselboodskap.', +'usermessage-editor' => 'Stelselboodskapper', # Watchlist 'watchlist' => 'My dophoulys', 'mywatchlist' => 'My dophoulys', -'watchlistfor' => "(vir '''$1''')", +'watchlistfor2' => 'Vir $1 $2', 'nowatchlist' => 'U het geen items in u dophoulys nie.', 'watchlistanontext' => '$1 is noodsaaklik om u dophoulys te sien of te wysig.', 'watchnologin' => 'Nie ingeteken nie', @@ -2112,7 +2166,10 @@ Die mees onlangse wysiging is gemaak deur [[User:$3|$3]] ([[User talk:$3|besprek 'revertpage' => 'Wysigings deur [[Special:Contributions/$2|$2]] teruggerol na laaste weergawe deur $1', 'revertpage-nouser' => 'Rol wysigings deur (gebruikersnaam verwyder) terug na die laaste weergawe deur [[User:$1|$1]]', 'rollback-success' => 'Wysigings deur $1 teruggerol; terugverander na laaste weergawe deur $2.', -'sessionfailure' => "Dit lyk of daar 'n probleem met u sessie is. + +# Edit tokens +'sessionfailure-title' => 'Sessie het gefaal', +'sessionfailure' => "Dit lyk of daar 'n probleem met u sessie is. Hierdie aksie is gekanselleer omdat dit 'n veiligheidsrisiko is (moontlike kaping van u sessie). Gaan een bladsy terug, herlaai die bladsy en probeer dan weer.", @@ -2246,18 +2303,22 @@ $1', 'month' => 'Vanaf maand (en vroeër):', 'year' => 'Vanaf jaar (en vroeër):', -'sp-contributions-newbies' => 'Wys slegs bydraes van nuwe gebruikers', -'sp-contributions-newbies-sub' => 'Vir nuwe gebruikers', -'sp-contributions-newbies-title' => 'Bydraes van nuwe gebruikers', -'sp-contributions-blocklog' => 'blokkeer-logboek', -'sp-contributions-deleted' => 'geskrapte gebruikersbydraes', -'sp-contributions-logs' => 'logboeke', -'sp-contributions-talk' => 'bespreking', -'sp-contributions-userrights' => 'bestuur gebruikersregte', -'sp-contributions-blocked-notice' => 'Hierdie gebruiker is tans geblokkeer. Die laaste inskrywing in die blokkeerlogboek word hieronder vertoon:', -'sp-contributions-search' => 'Soek na bydraes', -'sp-contributions-username' => 'IP-adres of gebruikersnaam:', -'sp-contributions-submit' => 'Vertoon', +'sp-contributions-newbies' => 'Wys slegs bydraes van nuwe gebruikers', +'sp-contributions-newbies-sub' => 'Vir nuwe gebruikers', +'sp-contributions-newbies-title' => 'Bydraes van nuwe gebruikers', +'sp-contributions-blocklog' => 'blokkeer-logboek', +'sp-contributions-deleted' => 'geskrapte gebruikersbydraes', +'sp-contributions-uploads' => 'oplaaie', +'sp-contributions-logs' => 'logboeke', +'sp-contributions-talk' => 'bespreking', +'sp-contributions-userrights' => 'bestuur gebruikersregte', +'sp-contributions-blocked-notice' => 'Hierdie gebruiker is tans geblokkeer. Die laaste inskrywing in die blokkeerlogboek word hieronder vertoon:', +'sp-contributions-blocked-notice-anon' => 'Hierdie IP-adres is tans geblokkeer. +Die laaste inskrywing uit die blokkeerlogboek word hier ter inligting weergegee:', +'sp-contributions-search' => 'Soek na bydraes', +'sp-contributions-username' => 'IP-adres of gebruikersnaam:', +'sp-contributions-toponly' => 'Wys slegs die nuutste weergawes', +'sp-contributions-submit' => 'Vertoon', # What links here 'whatlinkshere' => 'Skakels hierheen', @@ -2318,7 +2379,6 @@ Sien die [[Special:IPBlockList|IP-bloklys]] vir 'n oorsig van blokkerings.", 'ipb-edit-dropdown' => 'Werk lys van redes by', 'ipb-unblock-addr' => 'Deblokkeer $1', 'ipb-unblock' => "Deblokkeer 'n gebruiker of IP-adres", -'ipb-blocklist-addr' => 'Bestaande blokkades vir $1', 'ipb-blocklist' => 'Wys bestaande blokkades', 'ipb-blocklist-contribs' => 'Bydraes van $1', 'unblockip' => 'Maak IP-adres oop', @@ -2394,6 +2454,8 @@ U kan nie 'n rekening skep nie.", 'cant-block-while-blocked' => 'U kan nie ander gebruikers blokkeer terwyl u self geblokkeer is nie.', 'cant-see-hidden-user' => "Die gebruiker wat u probeer blokkeer is reeds geblokkeer en weggesteek. Aangesien u nie die 'hideuser'-reg het nie, kan u nie die blokkade van die gebruiker sien of wysig nie.", +'ipbblocked' => 'U kan nie ander gebruikers (de)blokkeer nie, omdat u self geblokkeer is', +'ipbnounblockself' => 'U mag uself nie deblokkeer nie', # Developer tools 'lockdb' => 'Sluit databasis', @@ -2428,6 +2490,16 @@ Let daarop dat 'n bladsy '''nie''' geskuif sal word indien daar reeds 'n bladsy <b>WAARSKUWING!</b> Hierdie kan 'n drastiese en onverwagte verandering vir 'n gewilde bladsy wees; maak asseblief seker dat u die gevolge van hierdie aksie verstaan voordat u voortgaan. Gebruik ook die ooreenstemmende besprekingsbladsy om oorleg te pleeg met ander bydraers.", +'movepagetext-noredirectfixer' => "Die vorm hier onder hernoem 'n bladsy en skuif sy hele wysigingsgeskiedenis na die nuwe naam. +Die ou bladsy sal vervang word met 'n aanstuurblad na die nuwe titel. +Wees asseblief op die uitkyk vir vir [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|stukkende aansture]]. +Dit is u verantwoordelikheid om seker te maak dat skakels steeds wys na waarheen hulle behoort te gaan. + +Let daarop dat 'n bladsy '''nie''' geskuif sal word indien daar reeds 'n bladsy met dieselfde titel bestaan nie, tensy dit leeg of 'n aanstuurbladsy is en geen wysigingsgeskiedenis het nie. Dit beteken dat u 'n bladsy kan terugskuif na sy ou titel indien u 'n fout begaan het, maar u kan nie 'n bestaande bladsy oorskryf nie. + +<b>WAARSKUWING!</b> +Hierdie kan 'n drastiese en onverwagte verandering vir 'n gewilde bladsy wees; +maak asseblief seker dat u die gevolge van hierdie aksie verstaan voordat u voortgaan.", 'movepagetalktext' => "Die ooreenstemmende besprekingsblad sal outomaties saam geskuif word, '''tensy:''' *'n Besprekengsblad met die nuwe naam reeds bestaan, of *U die keuse hier onder deselekteer. @@ -2485,6 +2557,7 @@ Die teikenartikel "[[:$1]]" bestaan reeds. Wil u dit skrap om plek te maak vir d 'immobile-source-page' => 'Die bladsy kan nie geskuif word nie.', 'immobile-target-page' => 'Dit is nie moontlik om na die titel toe te skuif nie.', 'imagenocrossnamespace' => "'n Medialêer kan nie na 'n ander naamruimte geskuif word nie", +'nonfile-cannot-move-to-file' => 'Net lêers kan na die lêernaamspasie geskuif word', 'imagetypemismatch' => 'Die nuwe lêer se uitbreiding pas nie by die lêertipe nie', 'imageinvalidfilename' => 'Die nuwe lêernaam is ongeldig', 'fix-double-redirects' => 'Opdateer alle aansture wat na die oorspronklike titel wys', @@ -2564,6 +2637,7 @@ Stoor die afvoer op u eie rekenaar, en laai dit hier op.', 'importstart' => 'Importeer bladsye...', 'import-revision-count' => '$1 {{PLURAL:$1|weergawe|weergawes}}', 'importnopages' => 'Geen bladsye om te importeer nie.', +'imported-log-entries' => '$1 {{PLURAL:$1|logboekreël|logboekreëls}} geïmporteer.', 'importfailed' => 'Intrek onsuksesvol: $1', 'importunknownsource' => 'Onbekende brontipe.', 'importcantopen' => 'Kon nie lêer oopmaak nie', @@ -2660,6 +2734,8 @@ Die lêer is slegs gedeeltelik opgelaai.', 'tooltip-rollback' => '"Terugrol" rol met een kliek wysiging(s) terug wat die laaste gebruiker aan hierdie bladsy aangebring het.', 'tooltip-undo' => 'Met "ongedaan maak" maak u hierdie wysiging ongedaan en land u in die wysigingsvenster. U kan daar \'n wysigingsopsomming byvoeg.', +'tooltip-preferences-save' => 'Stoor voorkeure', +'tooltip-summary' => "Verskaf 'n kort opsomming", # Stylesheets 'common.css' => '/** Gemeenskaplike CSS vir alle omslae */', @@ -2763,14 +2839,17 @@ $1', 'imagemaxsize' => "Beperk beeldgrootte tot:<br />''(vir lêerbeskrywingsbladsye)''", 'thumbsize' => 'Grootte van duimnaelskets:', 'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|bladsy|bladsye}}', -'file-info' => '(lêergrootte: $1, MIME-tipe: $2)', -'file-info-size' => '($1 × $2 pixels, lêergrootte: $3, MIME type: $4)', +'file-info' => 'lêergrootte: $1, MIME-tipe: $2', +'file-info-size' => '$1 × $2 pixels, lêergrootte: $3, MIME type: $4', 'file-nohires' => '<small>Geen hoër resolusie is beskikbaar nie.</small>', -'svg-long-desc' => '(SVG-lêer, nominaal $1 × $2 pixels, lêergrootte: $3)', +'svg-long-desc' => 'SVG-lêer, nominaal $1 × $2 pixels, lêergrootte: $3', 'show-big-image' => 'Volle resolusie', 'show-big-image-thumb' => '<small>Grootte van hierdie voorskou: $1 × $2 pixels</small>', 'file-info-gif-looped' => 'herhalend', 'file-info-gif-frames' => '$1 {{PLURAL:$1|raam|rame}}', +'file-info-png-looped' => 'herhalend', +'file-info-png-repeat' => '$1 {{PLURAL:$1|keer|kere}} gespeel', +'file-info-png-frames' => '$1 {{PLURAL:$1|raam|rame}}', # Special:NewFiles 'newimages' => 'Gallery van nuwe beelde', @@ -2926,6 +3005,7 @@ Ander velde sal versteek wees. 'exif-gpsareainformation' => 'Naam van GPS-gebied', 'exif-gpsdatestamp' => 'GPS-datum', 'exif-gpsdifferential' => 'Differensiële GPS-korreksie', +'exif-objectname' => 'Kort titel', # EXIF attributes 'exif-compression-1' => 'Ongekompakteerd', @@ -3007,6 +3087,8 @@ Ander velde sal versteek wees. 'exif-sensingmethod-7' => 'Drielynige sensor', 'exif-sensingmethod-8' => 'Kleurvolgende lynsensor', +'exif-filesource-3' => 'Digitale fotokamera', + 'exif-scenetype-1' => "'n Direk gefotografeerde beeld", 'exif-customrendered-0' => 'Normale verwerking', @@ -3083,26 +3165,26 @@ Ander velde sal versteek wees. 'limitall' => 'alle', # E-mail address confirmation -'confirmemail' => 'Bevestig e-posadres', -'confirmemail_noemail' => "U het nie 'n geldige e-posadres in u [[Special:Preferences|gebruikersvoorkeure]] gestel nie.", -'confirmemail_text' => "Hierdie wiki vereis dat u e-posadres bevestig word voordat epos-funksies gebruik word. Klik onderstaande knoppie om 'n bevestigingspos na u adres te stuur. Die pos sal 'n skakel met 'n kode insluit; maak hierdie skakel oop in u webblaaier om te bevestig dat die adres geldig is.", -'confirmemail_pending' => "'n Bevestigings-kode is reeds per e-pos aan u gestuur. +'confirmemail' => 'Bevestig e-posadres', +'confirmemail_noemail' => "U het nie 'n geldige e-posadres in u [[Special:Preferences|gebruikersvoorkeure]] gestel nie.", +'confirmemail_text' => "Hierdie wiki vereis dat u e-posadres bevestig word voordat epos-funksies gebruik word. Klik onderstaande knoppie om 'n bevestigingspos na u adres te stuur. Die pos sal 'n skakel met 'n kode insluit; maak hierdie skakel oop in u webblaaier om te bevestig dat die adres geldig is.", +'confirmemail_pending' => "'n Bevestigings-kode is reeds per e-pos aan u gestuur. As u onlangs u gebruiker geskep het, wag asseblief 'n paar minute vir aflewering alvorens u 'n nuwe kode versoek.", -'confirmemail_send' => "Pos 'n bevestigingkode", -'confirmemail_sent' => 'Bevestigingpos gestuur.', -'confirmemail_oncreate' => "'n Bevestigings-kode is na u e-posadres gestuur. +'confirmemail_send' => "Pos 'n bevestigingkode", +'confirmemail_sent' => 'Bevestigingpos gestuur.', +'confirmemail_oncreate' => "'n Bevestigings-kode is na u e-posadres gestuur. Hierdie kode word nie benodig om aan te teken nie, maar u moet dit bevestig alvorens u enige van die wiki se e-posfunksies kan gebruik.", -'confirmemail_sendfailed' => '{{SITENAME}} kon nie u bevestigings-epos uitstuur nie. +'confirmemail_sendfailed' => '{{SITENAME}} kon nie u bevestigings-epos uitstuur nie. Kontroleer u e-posadres vir ongeldige karakters. Die e-posprogram meld: $1', -'confirmemail_invalid' => 'Ongeldige bevestigingkode. Die kode het moontlik verval.', -'confirmemail_needlogin' => 'U moet $1 om u e-posadres te bevestig.', -'confirmemail_success' => 'U e-posadres is bevestig. U kan nou aanteken en die wiki gebruik.', -'confirmemail_loggedin' => 'U e-posadres is nou bevestig.', -'confirmemail_error' => 'Iets het foutgegaan met die stoor van u bevestiging.', -'confirmemail_subject' => '{{SITENAME}}: E-posadres-bevestiging', -'confirmemail_body' => 'Iemand, waarskynlik u vanaf IP-adres: $1, het \'n rekening "$2" met hierdie e-posadres by {{SITENAME}} geregistreer. +'confirmemail_invalid' => 'Ongeldige bevestigingkode. Die kode het moontlik verval.', +'confirmemail_needlogin' => 'U moet $1 om u e-posadres te bevestig.', +'confirmemail_success' => 'U e-posadres is bevestig. U kan nou aanteken en die wiki gebruik.', +'confirmemail_loggedin' => 'U e-posadres is nou bevestig.', +'confirmemail_error' => 'Iets het foutgegaan met die stoor van u bevestiging.', +'confirmemail_subject' => '{{SITENAME}}: E-posadres-bevestiging', +'confirmemail_body' => 'Iemand, waarskynlik u vanaf IP-adres: $1, het \'n rekening "$2" met hierdie e-posadres by {{SITENAME}} geregistreer. Om te bevestig dat hierdie adres werklik aan u behoort, en om die posfasiliteite by {{SITENAME}} te aktiveer, besoek hierdie skakel in u webblaaier: @@ -3114,8 +3196,32 @@ Volg hierdie skakel om die bevestiging van u e-posadres te kanselleer: $5 Hierdie bevestigingkode verval om $4.', -'confirmemail_invalidated' => 'Die e-pos bevestiging is gekanselleer.', -'invalidateemail' => 'Kanselleer e-pos bevestiging', +'confirmemail_body_changed' => 'Iemand, waarskynlik u vanaf IP-adres $1 +het die e-posadres van rekening "$2" na hierdie adres op {{SITENAME}} verander. + +Om te bevestig dat hierdie adres werklik aan u behoort, en die e-pos-funksies op {{SITENAME}} te aktiveer, maak hierdie skakel in u blaaier oop: + +$3 + +Indien die rekening *nie* aan u behoort nie, volg hierdie skakel om die bevestiging te kanselleer: + +$5 + +Die bevestigingskode sal om $4 verval.', +'confirmemail_body_set' => 'Iemand, waarskynlik u vanaf IP-adres $1 +het die e-posadres van rekening "$2" na hierdie adres op {{SITENAME}} verander. + +Om te bevestig dat hierdie adres werklik aan u behoort, en die e-pos-funksies op {{SITENAME}} te heraktiveer, maak hierdie skakel in u blaaier oop: + +$3 + +Indien die rekening *nie* aan u behoort nie, volg hierdie skakel om die bevestiging te kanselleer: + +$5 + +Die bevestigingskode sal om $4 verval.', +'confirmemail_invalidated' => 'Die e-pos bevestiging is gekanselleer.', +'invalidateemail' => 'Kanselleer e-pos bevestiging', # Scary transclusion 'scarytranscludedisabled' => '[Interwiki-invoeging van sjablone is afgeskakel]', @@ -3154,6 +3260,7 @@ Bevestig asseblief dat u regtig hierdie blad oor wil skep.", 'table_pager_first' => 'Eerste bladsy', 'table_pager_last' => 'Laaste bladsy', 'table_pager_limit' => 'Wys $1 resultate per bladsy', +'table_pager_limit_label' => 'Items per bladsy:', 'table_pager_limit_submit' => 'Laat waai', 'table_pager_empty' => 'Geen resultate', @@ -3218,6 +3325,7 @@ U kan ook die [[Special:Watchlist/edit|standaard opdaterigskerm gebruik]].', 'version-specialpages' => 'Spesiale bladsye', 'version-parserhooks' => 'Ontlederhoeke', 'version-variables' => 'Veranderlikes', +'version-skins' => 'Omslae', 'version-other' => 'Ander', 'version-mediahandlers' => 'Mediaverwerkers', 'version-hooks' => 'Hoeke', @@ -3229,6 +3337,13 @@ U kan ook die [[Special:Watchlist/edit|standaard opdaterigskerm gebruik]].', 'version-hook-subscribedby' => 'Gebruik deur', 'version-version' => '(Weergawe $1)', 'version-license' => 'Lisensie', +'version-poweredby-credits' => "Hierdie wiki word aangedryf deur '''[http://www.mediawiki.org/ MediaWiki]''', kopiereg © 2001-$1 $2.", +'version-poweredby-others' => 'andere', +'version-license-info' => 'MediaWiki is vrye sagteware, u kan MediaWiki versprei en/of wysig onder die voorwaardes van die "GNU Algemene Publieke Lisensie", soos deur die "Free Software Foundation" gepubliseer; óf weergawe 2 van die lisensie, of (as u wil) enige latere weergawe daarvan. + +MediaWiki word versprei met die hoop dat dit nuttig sal wees, maar SONDER ENIGE WAARBORGE, selfs sonder geïmpliseerde waarborg van VERHANDELBAARHEID of GESKIKTHEID VIR \'N SPESIFIEKE DOEL. Verwys na die "GNU Algemene Publieke Lisensie" vir meer besonderhede. + +Saam met die program moes u \'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van van die "GNU Algemene Publieke Lisensie"] ontvang het, indien nie, skryf aan die "Free Software Foundation, Inc", 51 Franklin-straat, Vyfde Vloer, Boston, MA 02110-1301, Verenigde State van Amerika of [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lees dit hier aanlyn].', 'version-software' => 'Geïnstalleerde sagteware', 'version-software-product' => 'Produk', 'version-software-version' => 'Weergawe', @@ -3299,6 +3414,15 @@ Verskaf die lêernaam sonder die "{{ns:file}}:" voorvoegsel.', 'tags-edit' => 'wysig', 'tags-hitcount' => '$1 {{PLURAL:$1|wysiging|wysigings}}', +# Special:ComparePages +'comparepages' => 'Vergelyk bladsye', +'compare-selector' => 'Vergelyk bladsyweergawes', +'compare-page1' => 'Bladsy 1', +'compare-page2' => 'Bladsy 2', +'compare-rev1' => 'Weergawe 1', +'compare-rev2' => 'Weergawe 2', +'compare-submit' => 'Vergelyk', + # Database error messages 'dberr-header' => "Die wiki het 'n probleem", 'dberr-problems' => 'Jammer! Die webwerf ondervind op die oomblik tegniese probleme.', @@ -3315,8 +3439,13 @@ Verskaf die lêernaam sonder die "{{ns:file}}:" voorvoegsel.', 'htmlform-float-invalid' => "Die waarde wat u ingevoer het is nie 'n getal nie.", 'htmlform-int-toolow' => 'Die ingevoerde waarde is laer as die minimum van $1', 'htmlform-int-toohigh' => 'Die ingevoerde waarde is groter as die maksimum van $1', +'htmlform-required' => 'Hierdie waarde is verpligtend', 'htmlform-submit' => 'Dien in', 'htmlform-reset' => 'Maak wysigings ongedaan', 'htmlform-selectorother-other' => 'Ander', +# SQLite database support +'sqlite-has-fts' => 'Weergawe $1 met ondersteuning vir vol-teks soektogte ("full-text search")', +'sqlite-no-fts' => 'Weergawe $1 sonder ondersteuning vir vol-teks soektogte ("full-text search")', + ); diff --git a/languages/messages/MessagesAln.php b/languages/messages/MessagesAln.php index b514fc32..e457de88 100644 --- a/languages/messages/MessagesAln.php +++ b/languages/messages/MessagesAln.php @@ -33,14 +33,14 @@ $namespaceNames = array( ); $namespaceAliases = array( - 'Perdoruesi' => NS_USER, + 'Perdoruesi' => NS_USER, 'Perdoruesi_diskutim' => NS_USER_TALK, - 'Përdoruesi' => NS_USER, + 'Përdoruesi' => NS_USER, 'Përdoruesi_diskutim' => NS_USER_TALK, - 'Figura' => NS_FILE, - 'Figura_diskutim' => NS_FILE_TALK, - 'Kategori' => NS_CATEGORY, - 'Kategori_Diskutim' => NS_CATEGORY_TALK + 'Figura' => NS_FILE, + 'Figura_diskutim' => NS_FILE_TALK, + 'Kategori' => NS_CATEGORY, + 'Kategori_Diskutim' => NS_CATEGORY_TALK ); $specialPageAliases = array( @@ -77,8 +77,7 @@ $messages = array( 'tog-editsection' => 'Lejo redaktimin e seksioneve me opcionin [redakto]', 'tog-editsectiononrightclick' => 'Lejo redaktimin e seksioneve tue klikue me të djathtë mbi titull (JavaScript)', 'tog-showtoc' => 'Trego përmbajtjen<br />(për faqet me mâ shum se 3 tituj)', -'tog-rememberpassword' => 'Ruej fjalëkalimin në këtë kompjuter', -'tog-editwidth' => 'Zgjâno kutinë për redaktim sa krejt ekrani', +'tog-rememberpassword' => 'Ruej fjalëkalimin tem në këtë shfletues (për $1 {{PLURAL:$1|ditë|ditë}})', 'tog-watchcreations' => 'Shtoji në listë mbikëqyrëse faqet që i krijoj vetë', 'tog-watchdefault' => 'Shtoji në listë mbikëqyrëse faqet që i redaktoj', 'tog-watchmoves' => 'Shtoji në listë mbikëqyrëse faqet që i zhvendosi', @@ -226,31 +225,21 @@ $messages = array( 'faqpage' => 'Project:Pyetjet e shpeshta', # Vector skin -'vector-action-addsection' => 'Shto temë', -'vector-action-delete' => 'Fshij', -'vector-action-move' => 'Zhvendos', -'vector-action-protect' => 'Mbroj', -'vector-action-undelete' => 'Kthe fshimjen mbrapsht', -'vector-action-unprotect' => 'Hiq mbrojtjen', -'vector-namespace-category' => 'Kategoria', -'vector-namespace-help' => 'Faqja e ndihmës', -'vector-namespace-image' => 'Skeda', -'vector-namespace-main' => 'Faqja', -'vector-namespace-media' => 'Faqja e mediave', -'vector-namespace-mediawiki' => 'Mesazhi', -'vector-namespace-project' => 'Faqja e projektit', -'vector-namespace-special' => 'Faqja speciale', -'vector-namespace-talk' => 'Diskutimi', -'vector-namespace-template' => 'Shablloni', -'vector-namespace-user' => 'Faqja e përdoruesit', -'vector-view-create' => 'Krijo', -'vector-view-edit' => 'Redakto', -'vector-view-history' => 'Shih historinë', -'vector-view-view' => 'Lexo', -'vector-view-viewsource' => 'Shih kodin', -'actions' => 'Veprimet', -'namespaces' => 'Hapësinat', -'variants' => 'Variantet', +'vector-action-addsection' => 'Shto temë', +'vector-action-delete' => 'Fshij', +'vector-action-move' => 'Zhvendos', +'vector-action-protect' => 'Mbroj', +'vector-action-undelete' => 'Kthe fshimjen mbrapsht', +'vector-action-unprotect' => 'Hiq mbrojtjen', +'vector-simplesearch-preference' => 'Aktivizo sugjerime të avancueme në kërkim (vetëm për Vector skin)', +'vector-view-create' => 'Krijo', +'vector-view-edit' => 'Redakto', +'vector-view-history' => 'Shih historinë', +'vector-view-view' => 'Lexo', +'vector-view-viewsource' => 'Shih kodin', +'actions' => 'Veprimet', +'namespaces' => 'Hapësinat', +'variants' => 'Variantet', 'errorpagetitle' => 'Gabim', 'returnto' => 'Kthehu te $1.', @@ -481,7 +470,7 @@ Mos harroni me i ndryshue [[Special:Preferences|parapëlqimet për {{SITENAME}}] 'yourname' => 'Nofka:', 'yourpassword' => 'Fjalëkalimi:', 'yourpasswordagain' => 'Fjalëkalimi përsëdyti:', -'remembermypassword' => 'Mbaj mend fjalëkalimin tem në këtë kompjuter.', +'remembermypassword' => 'Mbaj mend fjalëkalimin tem në këtë shfletues (për $1 {{PLURAL:$1|ditë|ditë}})', 'yourdomainname' => 'Domena juej:', 'externaldberror' => 'Ose pat gabim në databazën e autentifikimit, ose nuk lejoheni me ndryshue llogarinë tuej të jashtme.', 'login' => 'Kyçu', @@ -498,6 +487,7 @@ Mos harroni me i ndryshue [[Special:Preferences|parapëlqimet për {{SITENAME}}] 'gotaccount' => "Ke llogari? '''$1'''.", 'gotaccountlink' => 'Kyçu', 'createaccountmail' => 'me email', +'createaccountreason' => 'Arsyeja:', 'badretype' => 'Fjalëkalimet nuk janë të njêjta.', 'userexists' => 'Nofka keni zgjedhë âsht në përdorim. Zgjedh nji emën tjetër.', @@ -622,6 +612,7 @@ Ndoshta tashmâ e keni ndryshue fjalëkalimin me sukses, apo keni kërkue nji fj 'showdiff' => 'Trego ndryshimet', 'anoneditwarning' => "'''Kujdes:''' Ju nuk jeni i kyçun. Adresa juej IP do të regjistrohet në historikun e redaktimit të kësaj faqeje.", +'anonpreviewwarning' => "''Nuk jeni i kyçun. Regjistrimi ka me marrë shenim IP adresën tuej në histori të faqes.''", 'missingsummary' => "'''Vini re:''' Nuk keni specifikue përmbledhje të redaktimit. Nëse klikoni prap në regjistro, redaktimi do të ruhet pa tê.", 'missingcommenttext' => 'Ju lutemi shtoni nji koment mâ poshtë.', @@ -700,7 +691,7 @@ Ju lutemi kontrolloni nëse doni me krijue/redaktue këtë faqe.', 'userjspreview' => "'''Vini re, jeni tue testue/pâ veç parapâmjen e JavaScriptit tuej.''' '''Ende nuk e keni ruejtë!'''", 'userinvalidcssjstitle' => "'''Kujdes:''' Nuk ka pâmje me emën \"\$1\". -Vini re që faqet .css dhe .js përdorin vetëm titull me germa të vogla, psh. {{ns:user}}:Foo/monobook.css për dallim prej {{ns:user}}:Foo/Monobook.css.", +Vini re që faqet .css dhe .js përdorin vetëm titull me germa të vogla, psh. {{ns:user}}:Foo/vector.css për dallim prej {{ns:user}}:Foo/Vector.css.", 'updated' => '(E ndryshueme)', 'note' => "'''Shenim:'''", 'previewnote' => "'''Kjo asht vetëm parapamje.''' @@ -742,9 +733,6 @@ Gjithashtu po premtoni se këtë e keni shkrue vetë, ose e keni kopjue prej dom Nëse nuk doni që shkrimet tueja me u redaktue pamëshirshëm dhe me u shpërnda arbitrarisht, atëherë mâ mirë mos publikoni këtu.<br /> Gjithashtu po premtoni se këtë e keni shkrue vetë, ose e keni kopjue prej domenës publike apo ndonji burimi tjetër të lirë (shih $1 për detaje). '''Mos publikoni vepra që janë e drejtë autoriale pa leje!'''", -'longpagewarning' => "'''Kujdes:''' Kjo faqe i ka $1 kilobyte; -disa shfletues mujnë me pasë problem me redaktue faqe që janë afër apo mâ shumë se 32kb. -Konsideroni mundësinë me dâ faqen në sekcione mâ të vogla.", 'longpageerror' => "'''Gabim: Teksti që po redaktoni i ka $1 kilobyte, që âsht mâ shumë se maksimumi prej $2 kilobytësh.''' Nuk mundet me u ruejtë.", 'readonlywarning' => "'''Kujdes: Baza e të dhânave âsht mshelë për mirëmbajtje, kështuqë tashpërtash nuk keni me mujtë me i ruejtë redaktimet tueja.''' @@ -1328,7 +1316,6 @@ Faqet në [[Special:Watchlist|listën tuej të mbikëqyrjes]] janë '''të theks # Watchlist 'watchlist' => 'Mbikëqyrjet e mija', 'mywatchlist' => 'Lista mbikqyrëse', -'watchlistfor' => "(për '''$1''')", 'addedwatch' => 'U shtu te lista mbikqyrëse', 'addedwatchtext' => "Faqja \"[[:\$1]]\" iu shtue [[Special:Watchlist|listës suej të mbikëqyrjes]]. Ndryshimet e ardhshme të kësaj faqeje dhe të faqes gjegjëse të diskutimit kanë me u listue këte, dhe faqja do të tregohet '''e theksueme''' në [[Special:RecentChanges|listën e ndryshimeve të fundit]] për me râ në sy.", @@ -1599,9 +1586,9 @@ Lejon dhânien e arsyes në përmbledhje.', 'nextdiff' => 'Redaktim ma i ri →', # Media information -'file-info-size' => '($1 × $2 pixela, madhësia e skedës: $3, tipi MIME: $4)', +'file-info-size' => '$1 × $2 pixela, madhësia e skedës: $3, tipi MIME: $4', 'file-nohires' => '<small>Rezolucioni i plotë.</small>', -'svg-long-desc' => '(skeda SVG, $1 × $2 pixela, madhësia: $3)', +'svg-long-desc' => 'skeda SVG, $1 × $2 pixela, madhësia: $3', 'show-big-image' => 'Rezolucion i plotë', 'show-big-image-thumb' => '<small>Madhësia e parapâmjes: $1 × $2 pixela</small>', diff --git a/languages/messages/MessagesAm.php b/languages/messages/MessagesAm.php index 3ead7069..9d39f541 100644 --- a/languages/messages/MessagesAm.php +++ b/languages/messages/MessagesAm.php @@ -62,8 +62,7 @@ $messages = array( 'tog-editsection' => 'በ[አርም] መያያዣ ክፍል ማረምን አስችል', 'tog-editsectiononrightclick' => 'የክፍል አርዕስት ላይ በቀኝ በመጫን ክፍል ማረምን አስችል (JavaScript)', 'tog-showtoc' => 'ከ3 አርዕስቶች በላይ ሲሆን የማውጫ ሰንጠረዥ ይታይ', -'tog-rememberpassword' => 'መግባቴን እዚህ አስሊ ላይ አስታውስ', -'tog-editwidth' => 'የማረሚያ ሳጥን ሙሉ ስፋት አለው', +'tog-rememberpassword' => 'ለሚቀጥለው ጊዜ በዚ ኮምፒውተር ላይ በአባልነት ስሜ መግባቴን ( ቢባዛ ለ $1 {{PLURAL:$1|ቀን|ቀናት}}) አስታውስ።', 'tog-watchcreations' => 'እኔ የፈጠርኳቸውን ገጾች ወደምከታተላቸው ገጾች ዝርዝር ውስጥ ጨምር', 'tog-watchdefault' => 'ያረምኳቸውን ገጾች ወደምከታተላቸው ገጾች ዝርዝር ውስጥ ጨምር', 'tog-watchmoves' => 'ያዛወርኳቸውን ገጾች ወደምከታተላቸው ገጾች ዝርዝር ውስጥ ጨምር', @@ -199,27 +198,17 @@ $messages = array( 'faqpage' => 'Project:ብጊየጥ', # Vector skin -'vector-action-addsection' => 'ርዕስ ጨምር', -'vector-action-delete' => 'አጥፋ', -'vector-action-move' => 'ለማዛወር', -'vector-action-protect' => 'ለመቆለፍ', -'vector-action-undelete' => 'አታጥፋ', -'vector-action-unprotect' => 'አለመቆለፍ', -'vector-namespace-category' => 'መደብ', -'vector-namespace-help' => 'እርዳታ ገጽ', -'vector-namespace-image' => 'ፋይል', -'vector-namespace-main' => 'መጣጥፍ', -'vector-namespace-media' => 'ፋይል', -'vector-namespace-mediawiki' => 'መልዕክት', -'vector-namespace-special' => 'ልዩ ገጽ', -'vector-namespace-talk' => 'ውይይት', -'vector-namespace-template' => 'መለጠፊያ', -'vector-namespace-user' => 'የተጠቃሚው ገጽ', -'vector-view-create' => 'አዲስ ፍጠር', -'vector-view-edit' => 'አርም', -'vector-view-history' => ' ታሪኩን አሳይ', -'vector-view-view' => ' የተነበበ', -'vector-view-viewsource' => 'ጥሬ ኮድ ለመመልከት', +'vector-action-addsection' => 'ርዕስ ጨምር', +'vector-action-delete' => 'አጥፋ', +'vector-action-move' => 'ለማዛወር', +'vector-action-protect' => 'ለመቆለፍ', +'vector-action-undelete' => 'አታጥፋ', +'vector-action-unprotect' => 'አለመቆለፍ', +'vector-view-create' => 'አዲስ ፍጠር', +'vector-view-edit' => 'አርም', +'vector-view-history' => ' ታሪኩን አሳይ', +'vector-view-view' => ' የተነበበ', +'vector-view-viewsource' => 'ጥሬ ኮድ ለመመልከት', 'errorpagetitle' => 'ስህተት', 'returnto' => '(ወደ $1 ለመመለስ)', @@ -418,7 +407,7 @@ $2", 'yourname' => 'Username / የብዕር ስም:', 'yourpassword' => 'Password / መግቢያ ቃል', 'yourpasswordagain' => 'መግቢያ ቃልዎን ዳግመኛ ይስጡ', -'remembermypassword' => '(መግቢያዎ እንዲታወስ ምልክት እዚህ ያድርጉ)', +'remembermypassword' => 'ለሚቀጥለው ጊዜ በዚ ኮምፒውተር ላይ በአባልነት ስሜ መግባቴን ( ቢባዛ ለ $1 {{PLURAL:$1|ቀን|ቀናት}}) አስታውስ።', 'yourdomainname' => 'የእርስዎ ከባቢ (domain)፦', 'externaldberror' => 'ወይም አፍአዊ የማረጋገጫ መረጃ-ቤት ስኅተት ነበረ፣ ወይም አፍአዊ አባልነትዎን ማሳደስ አልተፈቀዱም።', 'login' => 'ለመግባት', @@ -576,7 +565,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ 'userjsyoucanpreview' => "'''ምክር፦''' ሳይቆጠብ አዲስ JSዎን ለመሞከር 'ቅድመ እይታ' የሚለውን ይጫኑ።", 'usercsspreview' => "'''ማስታወሻ፦ CSS-ዎን ለሙከራ ብቻ እያዩ ነው፤ ገና አልተቆጠበም!'''", 'userjspreview' => "'''ማስታወሻ፦ JavaScriptዎን ለሙከራ ብቻ እያዩ ነው፤ ገና አልተቆጠበም!'''", -'userinvalidcssjstitle' => "'''ማስጠንቀቂያ፦''' «$1» የሚባል መልክ የለም። ልዩ .css እና .js ገጾች በትንንሽ እንግሊዝኛ ፊደል መጀመር እንዳለባቸው ያስታውሱ። ለምሳሌ፦ {{ns:user}}:Foo/monobook.css ልክ ነው እንጂ {{ns:user}}:Foo/Monobook.css አይደለም።", +'userinvalidcssjstitle' => "'''ማስጠንቀቂያ፦''' «$1» የሚባል መልክ የለም። ልዩ .css እና .js ገጾች በትንንሽ እንግሊዝኛ ፊደል መጀመር እንዳለባቸው ያስታውሱ። ለምሳሌ፦ {{ns:user}}:Foo/vector.css ልክ ነው እንጂ {{ns:user}}:Foo/Vector.css አይደለም።", 'updated' => '(የታደሰ)', 'note' => "'''ማሳሰቢያ፦'''", 'previewnote' => "ማስታወቂያ፦ '''ይህ ለሙከራው ብቻ ነው የሚታየው -- ምንም ለውጦች ገና አልተላኩም!'''", @@ -600,7 +589,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ 'copyrightwarning2' => "ወደ {{SITENAME}} የሚላከው አስተዋጽኦ ሁሉ በሌሎች ተጠቃሚዎች ሊታረም፣ ሊለወጥ፣ ወይም ሊጠፋ እንደሚቻል ያስታውሱ። ጽሕፈትዎ እንዲታረም ካልወደዱ፣ ወደዚህ አይልኩት።<br /> ደግሞ ይህ የራስዎ ጽሕፈት ወይም ከነጻ ምንጭ የተቀዳ ጽሕፈት መሁኑን ያረጋግጣሉ። (ለዝርዝር $1 ይዩ)። '''አለፈቃድ፡ መብቱ የተጠበቀውን ሥራ አይልኩት!'''", -'longpagewarning' => "'''ማስጠንቀቂያ፦ የዚሁ ገጽ መጠን እስከ $1 kilobyte ድረስ ደርሷል፤ አንድ ጽሑፍ ከ32 kilobyte የበለጠ ሲሆን ይህ ግዙፍነት ለአንዳንድ ተጠቃሚ ዌብ-ብራውዘር ያስቸግራል። እባክዎን፣ ገጹን ወደ ተለያዩ ገጾች ማከፋፈልን ያስቡበት። '''", 'longpageerror' => "'''ስህተት፦ ያቀረቡት ጽሕፈት $1 kb ነው፤ ይህም ከተፈቀደው ወሰን $2 kb በላይ ነው። ሊቆጠብ አይችልም።'''", 'readonlywarning' => ":'''ማስታወቂያ፦''' {{SITENAME}} አሁን ለአጭር ግዜ ተቆልፎ ገጹን ለማቅረብ አይቻልም። ጥቂት ደቂቃ ቆይተው እባክዎ እንደገና ይሞክሩት! :(The database has been temporarily locked for maintenance, so you cannot save your edits at this time. You may wish to cut-&-paste the text into another file, and try again in a moment or two.)", @@ -877,7 +865,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ 'prefs-info' => ' መሰረታዊ መረጃ', 'prefs-signature' => 'ፊርማ', 'prefs-dateformat' => ' የቀን ቅርፀት', -'prefs-display' => 'የማሳያ አማራጮች', +'prefs-displayrc' => 'የማሳያ አማራጮች', # User rights 'userrights' => 'የአባል መብቶች ለማስተዳደር', @@ -987,10 +975,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ 'recentchanges-legend' => 'የቅርብ ለውጥ አማራጮች፦', 'recentchangestext' => 'በዚሁ ገጽ ላይ በቅርብ ጊዜ የወጡ አዳዲስ ለውጦች ለመከታተል ይችላሉ።', 'recentchanges-feed-description' => 'በዚህ ዊኪ ላይ በቅርብ ግዜ የተለወጠውን በዚሁ feed መከታተል ይችላሉ', -'recentchanges-label-legend' => 'መግለጫ፦ $1።', -'recentchanges-legend-newpage' => '$1 - አዲስ ገጽ', -'recentchanges-legend-minor' => '$1 - ጥቃቅን ለውጥ', -'recentchanges-legend-bot' => '$1 - የቦት (ሎሌ) ለውጥ', 'rcnote' => "ከ$5 $4 እ.ኤ.አ. {{PLURAL:$2|ባለፈው 1 ቀን|ባለፉት '''$2''' ቀኖች}} {{PLURAL:$1|የተደረገው '''1''' ለውጥ እታች ይገኛል|የተደረጉት '''$1''' መጨረሻ ለውጦች እታች ይገኛሉ}}።", 'rcnotefrom' => "ከ'''$2''' ጀምሮ የተቀየሩት ገጾች (እስከ '''$1''' ድረስ) ክዚህ በታች ይታያሉ።", 'rclistfrom' => '(ከ $1 ጀምሮ አዲስ ለውጦቹን ለማየት)', @@ -1077,7 +1061,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ 'fileexists-shared-forbidden' => 'ይህ ስም ያለበት ፋይል አሁን በጋራ ፋይል ምንጭ ይኖራል፤ እባክዎ ተመልሰው ፋይሉን በሌላ ስም ስር ይላኩት። [[File:$1|thumb|center|$1]]', 'file-exists-duplicate' => 'ይህ ፋይል {{PLURAL:$1|የሚከተለው ፋኡል|የሚከተሉት ፋይሎች}} ቅጂ ነው፦', 'file-deleted-duplicate' => 'ለዚህ ፋይል አንድ ቅጂ የሆነ ፋይል ([[:$1]]) ቀድሞ ጠፍቷል። እንደገና ሳይልኩት እባክዎ የዚያውን ፋይል መጥፋት ታሪክ ይመለከቱ።', -'successfulupload' => 'መላኩ ተከናወነ', 'uploadwarning' => 'የመላክ ማስጠንቀቂያ', 'savefile' => 'ፋይሉ ለመቆጠብ', 'uploadedimage' => '«[[$1]]» ላከ', @@ -1093,6 +1076,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ ይህን ፋይል መላክ የሚገባ መሆኑን ይቆጠሩ። የፋይሉ ማጥፋት መዝገብ ከዚህ ታች ይታያል፦", 'filename-bad-prefix' => "የሚልኩት ፋይል ስም በ'''«$1»''' ይጀመራል፤ ይህ ብዙ ጊዜ በቁጥራዊ ካሜራ የተወሰነ ገላጭ ያልሆነ ስም ይሆናል። እባክዎ ለፋይልዎ ገላጭ የሆነ ስም ይምረጡ።", +'upload-success-subj' => 'መላኩ ተከናወነ', 'upload-proto-error' => 'ትክክለኛ ያልሆነ ወግ (protocol)', 'upload-proto-error-text' => 'የሩቅ መላክ እንዲቻል URL በ<code>http://</code> ወይም በ<code>ftp://</code> መጀመር አለበት።', @@ -1384,7 +1368,6 @@ Also see [[Special:WantedCategories|wanted categories]].', # Watchlist 'watchlist' => 'የምከታተላቸው ገጾች፤', 'mywatchlist' => 'የምከታተላቸው ገጾች፤', -'watchlistfor' => "(ለ'''$1''')", 'nowatchlist' => 'ዝርዝርዎ ባዶ ነው። ምንም ገጽ ገና አልተጨመረም።', 'watchlistanontext' => 'የሚከታተሉት ገጾች ዝርዝርዎን ለመመልከት ወይም ለማስተካከል እባክዎ $1።', 'watchnologin' => 'ገና አልገቡም', @@ -1655,7 +1638,6 @@ $1', 'ipb-edit-dropdown' => "'ተራ የማገጃ ምክንያቶች' ለማስተካከል", 'ipb-unblock-addr' => 'ከ$1 መገጃ ለማንሣት', 'ipb-unblock' => 'ከብዕር ስም ወይም ከቁ. አድራሻ ማገጃ ለማንሣት', -'ipb-blocklist-addr' => 'በ$1 ላይ አሁን ያለውን ማገጃ ለመመልከት', 'ipb-blocklist' => 'አሁን ያሉትን ማገጃዎች ለመመልከት', 'ipb-blocklist-contribs' => 'የ$1 ለውጦች', 'unblockip' => 'ከተጠቃሚ ማገጃ ለማንሣት', @@ -1965,10 +1947,10 @@ $1', 'imagemaxsize' => 'በፋይል መግለጫ ገጽ ላይ የስዕል መጠን ወሰን ቢበዛ፦', 'thumbsize' => 'የናሙና መጠን፦', 'widthheightpage' => '$1 በ$2፣ $3 ገጾች', -'file-info' => '(የፋይል መጠን፦ $1፣ የMIME አይነት፦ $2)', -'file-info-size' => '($1 × $2 ፒክስል፤ መጠን፦ $3፤ የMIME ዓይነት፦ $4)', +'file-info' => 'የፋይል መጠን፦ $1፣ የMIME አይነት፦ $2', +'file-info-size' => '$1 × $2 ፒክስል፤ መጠን፦ $3፤ የMIME ዓይነት፦ $4', 'file-nohires' => '<small>ከዚህ በላይ ማጉላት አይቻልም።</small>', -'svg-long-desc' => '(የSVG ፋይል፡ በተግባር $1 × $2 ፒክስል፤ መጠን፦ $3)', +'svg-long-desc' => 'የSVG ፋይል፡ በተግባር $1 × $2 ፒክስል፤ መጠን፦ $3', 'show-big-image' => 'በሙሉ ጒልህነት ለመመልከት', 'show-big-image-thumb' => '<small>የዚህ ናሙና ቅጂ ክልል፦ $1 × $2 ፒክሰል</small>', diff --git a/languages/messages/MessagesAn.php b/languages/messages/MessagesAn.php index 538c6854..64ab3376 100644 --- a/languages/messages/MessagesAn.php +++ b/languages/messages/MessagesAn.php @@ -39,83 +39,87 @@ $namespaceNames = array( ); $magicWords = array( - 'namespace' => array( '1', 'ESPAZIODENOMBRES', 'NAMESPACE' ), - 'namespacee' => array( '1', 'ESPAZIODENOMBRESE', 'NAMESPACEE' ), + 'redirect' => array( '0', '#ENDRECERA', '#REENDRECERA', '#REDIRECCIÓN', '#REDIRECCION', '#REDIRECT' ), + 'namespace' => array( '1', 'ESPACIODENOMBRES', 'ESPACIODENOMBRE', 'NAMESPACE' ), + 'namespacee' => array( '1', 'ESPACIODENOMBRESE', 'ESPACIODENOMBREC', 'NAMESPACEE' ), 'img_right' => array( '1', 'dreita', 'derecha', 'dcha', 'der', 'right' ), 'img_left' => array( '1', 'cucha', 'zurda', 'izquierda', 'izda', 'izq', 'left' ), 'ns' => array( '0', 'EN:', 'EDN:', 'NS:' ), 'displaytitle' => array( '1', 'TÍTOL', 'MOSTRARTÍTULO', 'MOSTRARTITULO', 'DISPLAYTITLE' ), - 'currentversion' => array( '1', 'BERSIÓNAUTUAL', 'BERSIONAUTUAL', 'REVISIÓNACTUAL', 'CURRENTVERSION' ), - 'language' => array( '0', '#LENGUACHE:', '#LUENGA:', '#IDIOMA:', '#LANGUAGE:' ), - 'special' => array( '0', 'espezial', 'special' ), + 'currentversion' => array( '1', 'BERSIÓNAUTUAL', 'BERSIONAUTUAL', 'REVISIÓNACTUAL', 'VERSIONACTUAL', 'VERSIÓNACTUAL', 'CURRENTVERSION' ), + 'language' => array( '0', '#LUENGA:', '#IDIOMA:', '#LANGUAGE:' ), + 'special' => array( '0', 'espezial', 'especial', 'special' ), ); $specialPageAliases = array( - 'DoubleRedirects' => array( 'Reendrezeras dobles', 'Dobles reendrezeras', 'Endrezeras dobles', 'Dobles endrezeras' ), - 'BrokenRedirects' => array( 'Reendrezeras trencatas', 'Endrezeras trencatas', 'Reendrezeras crebatas', 'Endrezeras crebatas', 'Endrezeras trencadas', 'Endrezeras crebadas' ), - 'Disambiguations' => array( 'Desambigazions', 'Pachinas de desambigazión' ), - 'Userlogin' => array( 'Enzetar sesión', 'Dentrar' ), - 'Userlogout' => array( 'Salir', 'Rematar sesión' ), - 'CreateAccount' => array( 'Creyar cuenta' ), - 'Preferences' => array( 'Preferenzias' ), - 'Watchlist' => array( 'Lista de seguimiento' ), - 'Recentchanges' => array( 'Zaguers cambeos', 'Cambeos rezients' ), + 'DoubleRedirects' => array( 'Endreceras_doples', 'Reendrezeras_dobles', 'Dobles_reendrezeras', 'Endrezeras_dobles', 'Dobles_endrezeras' ), + 'BrokenRedirects' => array( 'Endreceras_trencatas', 'Endreceras_trencadas', 'Reendrezeras_trencatas', 'Endrezeras_trencatas', 'Reendrezeras_crebatas', 'Endrezeras_crebatas', 'Endrezeras_trencadas', 'Endrezeras_crebadas' ), + 'Disambiguations' => array( 'Desambigacions', 'Desambigazions', 'Pachinas_de_desambigazión' ), + 'Userlogin' => array( 'Encetar_sesión', 'Enzetar_sesión', 'Dentrar' ), + 'Userlogout' => array( 'Salir', 'Rematar_sesión' ), + 'CreateAccount' => array( 'Creyar_cuenta' ), + 'Preferences' => array( 'Preferencias' ), + 'Watchlist' => array( 'Lista_de_seguimiento' ), + 'Recentchanges' => array( 'Zaguers_cambeos', 'Cambeos_recients' ), 'Upload' => array( 'Cargar', 'Puyar' ), - 'Listfiles' => array( 'Lista d\'imáchens', 'Lista d\'imachens' ), - 'Newimages' => array( 'Nuebas imáchens', 'Nuebas imachens' ), - 'Listusers' => array( 'Lista d\'usuarios' ), - 'Listgrouprights' => array( 'Lis' ), - 'Statistics' => array( 'Estadistica', 'Estatistica', 'Estadisticas', 'Estatisticas' ), - 'Randompage' => array( 'Pachina aleatoria', 'Pachina aliatoria', 'Pachina á l\'azar' ), - 'Lonelypages' => array( 'Pachinas popiellas' ), - 'Uncategorizedpages' => array( 'Pachinas sin categorías', 'Pachinas sin categorizar' ), - 'Uncategorizedcategories' => array( 'Categorías sin categorías', 'Categorías sin categorizar' ), - 'Uncategorizedimages' => array( 'Imáchens sin categorías', 'Imachens sin categorizar', 'Imáchens sin categorizar' ), - 'Uncategorizedtemplates' => array( 'Plantillas sin categorías', 'Plantillas sin categorizar' ), - 'Unusedcategories' => array( 'Categorías no emplegatas', 'Categorías sin emplegar' ), - 'Unusedimages' => array( 'Imáchens no emplegatas', 'Imáchens sin emplegar' ), - 'Wantedpages' => array( 'Pachinas requiestas', 'Pachinas demandatas', 'Binclos crebatos', 'Binclos trencatos' ), - 'Wantedcategories' => array( 'Categorías requiestas', 'Categorías demandatas' ), - 'Wantedfiles' => array( 'Archibos requiestos', 'Archibos demandatos' ), - 'Wantedtemplates' => array( 'Plantillas requiestas', 'Plantillas demandatas' ), - 'Mostlinked' => array( 'Pachinas más enlazatas', 'Pachinas más binculatas' ), - 'Mostlinkedcategories' => array( 'Categorías más enlazatas', 'Categorías más binculatas' ), - 'Mostlinkedtemplates' => array( 'Plantillas más enlazatas', 'Plantillas más binculatas' ), - 'Mostimages' => array( 'Imáchens más emplegatas', 'Imachens más emplegatas' ), - 'Mostcategories' => array( 'Pachinas con más categorías' ), - 'Mostrevisions' => array( 'Pachinas con más edizions', 'Pachinas más editatas', 'Pachinas con más bersions' ), - 'Fewestrevisions' => array( 'Pachinas con menos edizions', 'Pachinas menos editatas', 'Pachinas con menos bersions' ), - 'Shortpages' => array( 'Pachinas más cortas' ), - 'Longpages' => array( 'Pachinas más largas' ), - 'Newpages' => array( 'Pachinas nuebas', 'Pachinas más nuebas', 'Pachinas más rezients', 'Pachinas rezients' ), - 'Ancientpages' => array( 'Pachinas más biellas', 'Pachinas biellas', 'Pachinas más antigas', 'Pachinas antigas' ), - 'Deadendpages' => array( 'Pachinas sin salida', 'Pachinas sin de salida' ), - 'Protectedpages' => array( 'Pachinas protechitas', 'Pachinas protechidas' ), - 'Protectedtitles' => array( 'Títols protechitos', 'Títols protexitos', 'Títols protechius' ), - 'Allpages' => array( 'Todas as pachinas' ), - 'Prefixindex' => array( 'Pachinas por prefixo', 'Mirar por prefixo' ), - 'Ipblocklist' => array( 'Lista d\'IPs bloqueyatas', 'Lista d\'IPs bloquiatas', 'Lista d\'adrezas IP bloqueyatas', 'Lista d\'adrezas IP bloquiatas' ), - 'Specialpages' => array( 'Pachinas espezials' ), - 'Contributions' => array( 'Contrebuzions' ), - 'Emailuser' => array( 'Nimbía mensache' ), - 'Confirmemail' => array( 'Confirmar e-mail' ), - 'Movepage' => array( 'Renombrar pachina', 'Mober pachina', 'Tresladar pachina' ), + 'Listfiles' => array( 'Lista_de_fichers', 'Lista_d\'imáchens', 'Lista_d\'imachens' ), + 'Newimages' => array( 'Nuevos_fichers', 'Nuevas_imáchens', 'Nuevas_imachens', 'Nuebas_imachens' ), + 'Listusers' => array( 'Lista_d\'usuarios' ), + 'Listgrouprights' => array( 'ListaDreitosGrupos' ), + 'Statistics' => array( 'Estatisticas', 'Estadisticas' ), + 'Randompage' => array( 'Pachina_a_l\'azar', 'Pachina_aleatoria', 'Pachina_aliatoria' ), + 'Lonelypages' => array( 'Pachinas_popiellas' ), + 'Uncategorizedpages' => array( 'Pachinas_sin_categorizar', 'Pachinas_sin_categorías' ), + 'Uncategorizedcategories' => array( 'Categorías_sin_categorizar._Categorías_sin_categorías' ), + 'Uncategorizedimages' => array( 'Fichers_sin_categorizar', 'Fichers_sin_categorías', 'Imáchens_sin_categorías', 'Imachens_sin_categorizar', 'Imáchens_sin_categorizar' ), + 'Uncategorizedtemplates' => array( 'Plantillas_sin_categorizar._Plantillas_sin_categorías' ), + 'Unusedcategories' => array( 'Categorías_no_emplegatas', 'Categorías_sin_emplegar' ), + 'Unusedimages' => array( 'Fichers_no_emplegatos', 'Fichers_sin_emplegar', 'Imáchens_no_emplegatas', 'Imáchens_sin_emplegar' ), + 'Wantedpages' => array( 'Pachinas_requiestas', 'Pachinas_demandatas', 'Binclos_crebatos', 'Binclos_trencatos' ), + 'Wantedcategories' => array( 'Categorías_requiestas', 'Categorías_demandatas' ), + 'Wantedfiles' => array( 'Fichers_requiestos', 'Fichers_demandaus', 'Archibos_requiestos', 'Archibos_demandatos' ), + 'Wantedtemplates' => array( 'Plantillas_requiestas', 'Plantillas_demandatas' ), + 'Mostlinked' => array( 'Pachinas_más_enlazatas', 'Pachinas_más_vinculatas' ), + 'Mostlinkedcategories' => array( 'Categorías_más_emplegatas', 'Categorías_más_enlazatas', 'Categorías_más_binculatas' ), + 'Mostlinkedtemplates' => array( 'Plantillas_más_emplegatas', 'Plantillas_más_enlazatas', 'Plantillas_más_binculatas' ), + 'Mostimages' => array( 'Fichers_más_emplegatos', 'Imáchens_más_emplegatas', 'Imachens_más_emplegatas' ), + 'Mostcategories' => array( 'Pachinas_con_más_categorías' ), + 'Mostrevisions' => array( 'Pachinas_con_más_edicions', 'Pachinas_con_más_edizions', 'Pachinas_más_editatas', 'Pachinas_con_más_bersions' ), + 'Fewestrevisions' => array( 'Pachinas_con_menos_edicions', 'Pachinas_con_menos_edizions', 'Pachinas_menos_editatas', 'Pachinas_con_menos_bersions' ), + 'Shortpages' => array( 'Pachinas_más_curtas' ), + 'Longpages' => array( 'Pachinas_más_largas' ), + 'Newpages' => array( 'Pachinas_nuevas', 'Pachinas_recients', 'Pachinas_nuebas', 'Pachinas_más_nuebas', 'Pachinas_más_rezients', 'Pachinas_rezients' ), + 'Ancientpages' => array( 'Pachinas_más_viellas', 'Pachinas_más_antigas', 'Pachinas_más_biellas', 'Pachinas_biellas', 'Pachinas_antigas' ), + 'Deadendpages' => array( 'Pachinas_sin_salida', 'Pachinas_sin_de_salida' ), + 'Protectedpages' => array( 'Pachinas_protechitas', 'Pachinas_protechidas' ), + 'Protectedtitles' => array( 'Títols_protechitos', 'Títols_protexitos', 'Títols_protechius' ), + 'Allpages' => array( 'Todas_as_pachinas' ), + 'Prefixindex' => array( 'Pachinas_por_prefixo', 'Mirar_por_prefixo' ), + 'Ipblocklist' => array( 'Lista_d\'IPs_bloqueyatas', 'Lista_d\'IPs_bloquiatas', 'Lista_d\'adrezas_IP_bloqueyatas', 'Lista_d\'adrezas_IP_bloquiatas' ), + 'Specialpages' => array( 'Pachinas_especials', 'Pachinas_espezials' ), + 'Contributions' => array( 'Contrebucions', 'Contrebuzions' ), + 'Emailuser' => array( 'Ninvía_mensache', 'Nimbía_mensache' ), + 'Confirmemail' => array( 'Confirmar_e-mail' ), + 'Movepage' => array( 'TresladarPachina', 'Renombrar_pachina', 'Mober_pachina', 'Tresladar_pachina' ), + 'Blockme' => array( 'Bloqueya-me' ), + 'Booksources' => array( 'Fuents_de_libros' ), 'Categories' => array( 'Categorías' ), - 'Export' => array( 'Esportar' ), - 'Version' => array( 'Bersión' ), - 'Allmessages' => array( 'Toz os mensaches' ), + 'Export' => array( 'Exportar' ), + 'Version' => array( 'Versión', 'Bersión' ), + 'Allmessages' => array( 'Totz_os_mensaches', 'Toz_os_mensaches' ), 'Log' => array( 'Rechistro', 'Rechistros' ), 'Blockip' => array( 'Bloqueyar' ), 'Undelete' => array( 'Restaurar' ), 'Import' => array( 'Importar' ), - 'Unwatchedpages' => array( 'Pachinas no cosiratas', 'Pachinas sin cosirar' ), - 'Mypage' => array( 'A mía pachina', 'A mía pachina d\'usuario' ), - 'Mytalk' => array( 'A mía descusión', 'A mía pachina de descusión' ), - 'Mycontributions' => array( 'As mías contrebuzions' ), - 'Listadmins' => array( 'Lista d\'almenistradors' ), - 'Listbots' => array( 'Lista de bots' ), - 'Popularpages' => array( 'Pachinas populars', 'Pachinas más populars' ), + 'Unwatchedpages' => array( 'Pachinas_no_cosiratas', 'Pachinas_sin_cosirar' ), + 'Mypage' => array( 'A_mía_pachina', 'A_mía_pachina_d\'usuario' ), + 'Mytalk' => array( 'A_mía_descusión', 'A_mía_pachina_de_descusión' ), + 'Mycontributions' => array( 'As_mías_contrebucions', 'As_mías_contrebuzions' ), + 'Listadmins' => array( 'Lista_d\'almenistradors' ), + 'Listbots' => array( 'Lista_de_botz', 'Lista_de_bots' ), + 'Popularpages' => array( 'Pachinas_populars', 'Pachinas_más_populars' ), 'Search' => array( 'Mirar' ), + 'Resetpass' => array( 'Cambiar_contrasenya' ), ); $messages = array( @@ -134,8 +138,7 @@ $messages = array( 'tog-editsection' => 'Activar a edición por seccions usando os vinclos [editar]', 'tog-editsectiononrightclick' => "Activar a edición de seccions punchando con o botón dreito d'o ratet <br /> en os títols de seccions (cal JavaScript)", 'tog-showtoc' => "Amostrar l'endice (ta pachinas con más de 3 seccions)", -'tog-rememberpassword' => 'Remerar a parola de paso entre sesions', -'tog-editwidth' => "Enamplar a caixa d'edizión ta plenar toda a pantalla", +'tog-rememberpassword' => "Remerar o mío nombre d'usuario en iste navegador (como muito por $1 {{PLURAL:$1|día|días}})", 'tog-watchcreations' => 'Cosirar as pachinas que creye', 'tog-watchdefault' => 'Cosirar as pachinas que edite', 'tog-watchmoves' => 'Cosirar as pachinas que treslade', @@ -281,31 +284,21 @@ $messages = array( 'faqpage' => 'Project:Preguntas freqüents', # Vector skin -'vector-action-addsection' => 'Adhibir nueva sección', -'vector-action-delete' => 'Borrar', -'vector-action-move' => 'Tresladar', -'vector-action-protect' => 'Protecher', -'vector-action-undelete' => 'Restaurar', -'vector-action-unprotect' => 'Desprotecher', -'vector-namespace-category' => 'Categoría', -'vector-namespace-help' => "Pachina d'aduya", -'vector-namespace-image' => 'Fichero', -'vector-namespace-main' => 'Pachina', -'vector-namespace-media' => 'Pachina multimedia', -'vector-namespace-mediawiki' => 'Mensache', -'vector-namespace-project' => "Pachina d'o prochecto", -'vector-namespace-special' => 'Pachina especial', -'vector-namespace-talk' => 'Discusión', -'vector-namespace-template' => 'Plantilla', -'vector-namespace-user' => "Pachina d'usuario", -'vector-view-create' => 'Creyar', -'vector-view-edit' => 'Editar', -'vector-view-history' => "Amostrar l'historial", -'vector-view-view' => 'Leyer', -'vector-view-viewsource' => 'Veyer o codigo fuent', -'actions' => 'Accions', -'namespaces' => 'Espacios de nombres', -'variants' => 'Variants', +'vector-action-addsection' => 'Adhibir nueva sección', +'vector-action-delete' => 'Borrar', +'vector-action-move' => 'Tresladar', +'vector-action-protect' => 'Protecher', +'vector-action-undelete' => 'Restaurar', +'vector-action-unprotect' => 'Desprotecher', +'vector-simplesearch-preference' => "Habilitar socherencias de busca amilloradas (nomás ta l'apariencia Vector)", +'vector-view-create' => 'Creyar', +'vector-view-edit' => 'Editar', +'vector-view-history' => "Amostrar l'historial", +'vector-view-view' => 'Leyer', +'vector-view-viewsource' => 'Veyer o codigo fuent', +'actions' => 'Accions', +'namespaces' => 'Espacios de nombres', +'variants' => 'Variants', 'errorpagetitle' => 'Error', 'returnto' => 'Tornar ta $1.', @@ -366,6 +359,9 @@ Masiaus usuarios son mirando d'acceder ta ista pachina. Aguarde una mica antes de tornar a acceder ta ista pachina. $1", +'pool-timeout' => "S'ha pasau o tiempo d'aspera limite ta o bloqueyo", +'pool-queuefull' => 'A coda de treballo ye plena', +'pool-errorunknown' => 'Error desconoixida', # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations). 'aboutsite' => 'Información sobre {{SITENAME}}', @@ -525,7 +521,7 @@ No xublide de presonalizar [[Special:Preferences|as suyas preferencias en {{SITE 'yourname' => "Nombre d'usuario:", 'yourpassword' => 'Contrasenya:', 'yourpasswordagain' => 'Torne a escribir a contrasenya:', -'remembermypassword' => "Remerar datos d'usuario entre sesions.", +'remembermypassword' => "Remerar o mío nombre d'usuario y contrasenya entre sesions en iste ordinador (como muito por $1 {{PLURAL:$1|día|días}})", 'yourdomainname' => 'Dominio:', 'externaldberror' => "Bi habió una error d'autenticación externa d'a base de datos u bien no tiene premisos ta esviellar a suya cuenta externa.", 'login' => 'Encetar sesión', @@ -542,6 +538,7 @@ No xublide de presonalizar [[Special:Preferences|as suyas preferencias en {{SITE 'gotaccount' => "Tiene ya una cuenta? '''$1'''.", 'gotaccountlink' => 'Identificar-se y encetar sesión', 'createaccountmail' => 'por correu electronico', +'createaccountreason' => 'Razón:', 'badretype' => 'As contrasenyas que ha escrito no son iguals.', 'userexists' => "Ixe nombre d'usuario ya ye en uso. Por favor, meta-ne uno diferent.", @@ -646,9 +643,10 @@ Talment ya ha cambiato a suya contrasenya u ha demandato una nueva contrasenya t 'showlivepreview' => 'Anvista previa', 'showdiff' => 'Amostrar cambeos', 'anoneditwarning' => "''Pare cuenta:'' No s'ha identificato con un nombre d'usuario. A suya adreza IP s'alzará en l'historial d'a pachina.", +'anonpreviewwarning' => "''No s'ha identificau con una cuenta d'usuario. A suya adreza IP quedará rechistrada en l'historial d'edicions d'ista pachina.\"", 'missingsummary' => "'''Pare cuenta:''' No ha escrito garra resumen d'edición. Si puncha de nuevas en «{{int:savearticle}}» a suya edición se grabará sin resumen.", 'missingcommenttext' => 'Por favor, escriba o texto astí baixo.', -'missingcommentheader' => "'''Pare cuenta:''' No ha escrito garra títol ta iste comentario. Si puncha de nuevas en \"Alzar\", a suya edición se grabará sin títol.", +'missingcommentheader' => "'''Recordanza:''' No ha garra títol ta iste comentario. Si puncha de nuevas en \"{{int:savearticle}}\", a suya edición se grabará sin garra títol.", 'summary-preview' => "Veyer anvista previa d'o resumen:", 'subject-preview' => "Anvista previa d'o tema/títol:", 'blockedtitle' => "L'usuario ye bloqueyato", @@ -720,7 +718,7 @@ A zaguera dentrada d'o rechistro de bloqueyos s'amuestra contino:", 'usercsspreview' => "'''Remere que isto no ye que una previsualización d'o suyo CSS d'usuario.''' '''Encara no s'ha alzato!'''", 'userjspreview' => "'''Remere que sólo ye previsualizando o suyo javascript d'usuario y encara no ye grabato!'''", -'userinvalidcssjstitle' => "'''Pare cuenta:''' No bi ha garra aparencia clamata \"\$1\". Remere que as pachinas presonalizatas .css y .js tienen un títol en minusclas, p.e. {{ns:user}}:Foo/monobook.css en cuenta de {{ns:user}}:Foo/Monobook.css.", +'userinvalidcssjstitle' => "'''Pare cuenta:''' No bi ha garra aparencia clamata \"\$1\". Remere que as pachinas presonalizatas .css y .js tienen un títol en minusclas, p.e. {{ns:user}}:Foo/vector.css en cuenta de {{ns:user}}:Foo/Vector.css.", 'updated' => '(Esviellato)', 'note' => "'''Nota:'''", 'previewnote' => "'''Pare cuenta que isto no ye que l'anvista previa d'a pachina; os cambeos encara no s'ha alzato!'''", @@ -750,8 +748,6 @@ Habrá d'incorporar os suyos cambeos en o texto existent. '''NO COPIE SIN PREMISO ESCRITOS CON DREITOS D'AUTOR!'''<br />", 'copyrightwarning2' => "Por favor, pare cuenta que todas as contrebucions a {{SITENAME}} pueden estar editatas, cambiatas u borratas por atros colaboradors. Si no deseya que atra chent corricha os suyos escritos sin piedat y los destribuiga librement, alavez, no debería meter-los aquí. <br /> En publicar aquí, tamién ye declarando que vusté mesmo escribió iste texto y ye o duenyo d'os dreitos d'autor, u bien lo copió dende o dominio publico u qualsiquier atra fuent libre (veyer $1 ta más información). <br /> '''NO COPIE SIN PREMISO ESCRITOS CON DREITOS D'AUTOR!'''", -'longpagewarning' => "'''Pare cuenta: Ista pachina tiene ya $1 kilobytes; bells navegadors pueden tener problemas en editar pachinas de 32 kB o más. -Considere, por favor, a posibilidat de troxar ista pachina en trestallos más chicotz.'''", 'longpageerror' => "'''ERROR: O texto que ha escrito ye de $1 kilobytes, que ye mayor que a grandaria maxima de $2 kilobytes. No se puede alzar.'''", 'readonlywarning' => "'''Pare cuenta: A base de datos ye bloqueyata por custions de mantenimiento. Por ixo, en iste inte ye imposible d'alzar as suyas edicions. Puede copiar y apegar o texto en un fichero y alzar-lo ta dimpués.''' @@ -925,6 +921,8 @@ $1", 'logdelete-failure' => "'''A visibilidat d'o rechistro no s'ha puesto achustar:''' $1", 'revdel-restore' => 'Cambiar a visibilidat', +'revdel-restore-deleted' => 'versions borradas', +'revdel-restore-visible' => 'versions visibles', 'pagehist' => 'Historial', 'deletedhist' => 'Historial de borrau', 'revdelete-content' => 'conteniu', @@ -991,11 +989,13 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina. # Diffs 'history-title' => 'Historial de versions de "$1"', 'difference' => '(Esferencias entre versions)', +'difference-multipage' => '(Diferencia entre pachinas)', 'lineno' => 'Linia $1:', 'compareselectedversions' => 'Confrontar as versions trigatas', 'showhideselectedversions' => 'Amostrar/amagar as versions trigadas', 'editundo' => 'desfer', -'diff-multi' => "(S'ha amagato {{PLURAL:$1|una edición entremeya|$1 edicions entremeyas}}.)", +'diff-multi' => "(No s'amuestra {{PLURAL:$1|una edición entremeya feita|$1 edicions entremeyas feitas}} por {{PLURAL:$2|un usuario|$2 usuarios}}).", +'diff-multi-manyusers' => "(No s'amuestra {{PLURAL:$1|una edición entremeya|$1 edicions entremeyas}} feitas por más {{PLURAL:$2|d'un usuario|de $2 usuarios}})", # Search results 'searchresults' => "Resultau d'a busca", @@ -1030,6 +1030,7 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina. 'searchprofile-everything-tooltip' => 'Mirar en totz os contenius (tamién en as pachinas de descusión)', 'searchprofile-advanced-tooltip' => 'Mirar en os siguients espacios de nombres', 'search-result-size' => '$1 ({{PLURAL:$2|1 parola|$2 parolas}})', +'search-result-category-size' => '{{PLURAL:$1|1 miembro|$1 miembros}} ({{PLURAL:$2|1 subcategoría|$2 subcategorías}}, {{PLURAL:$3|1 fichero|$3 fichers}})', 'search-result-score' => 'Relevancia: $1%', 'search-redirect' => '(endrecera dende $1)', 'search-section' => '(sección $1)', @@ -1104,6 +1105,7 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina. 'contextlines' => "Linias de contexto que s'amostrarán por resultau", 'contextchars' => 'Carácters de contexto por linia', 'stub-threshold' => 'Branquil superior ta o formateyo de <a href="#" class="stub">vinclos ta borradors</a> (en bytes):', +'stub-threshold-disabled' => 'Desactivato', 'recentchangesdays' => "Días que s'amostrarán en ''zaguers cambeos'':", 'recentchangesdays-max' => '(masimo $1 {{PLURAL:$1|día|días}})', 'recentchangescount' => "Numero d'edicions a amostrar, por defecto:", @@ -1137,6 +1139,7 @@ Contino se i amuestra una calu chenerata de traza aleatoria que puede fer servir 'prefs-files' => 'fichers', 'prefs-custom-css' => 'CSS presonalizato', 'prefs-custom-js' => 'JS presonalizato', +'prefs-common-css-js' => 'CSS/JS compartito ta todas as apariencias:', 'prefs-reset-intro' => "Puet emplegar ista pachina ta restaurar as suyas preferencias a las valuras por defecto d'o sitio. No se podrá desfer iste cambio.", 'prefs-emailconfirm-label' => 'Confirmación de correu electronico:', @@ -1173,7 +1176,9 @@ Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.', 'prefs-advancedrendering' => 'Opcions abanzadas', 'prefs-advancedsearchoptions' => 'Opcions abanzadas', 'prefs-advancedwatchlist' => 'Opcions abanzadas', -'prefs-display' => 'Opcions de visualización', +'prefs-displayrc' => 'Opcions de visualización', +'prefs-displaysearchoptions' => 'Opcions de visualización', +'prefs-displaywatchlist' => 'Opcions de visualización', 'prefs-diffs' => 'Diferencias', # User rights @@ -1259,6 +1264,7 @@ Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.', 'right-hideuser' => "Bloqueyar un nombre d'usuario, amagando-lo d'o publico", 'right-ipblock-exempt' => "Ignorar os bloqueyos d'adrezas IP, os autobloqueyos y os bloqueyos de rangos de IPs.", 'right-proxyunbannable' => 'Ignorar os bloqueyos automaticos de proxies', +'right-unblockself' => 'Desbloqueyar-se ells mesmos', 'right-protect' => 'Cambiar os livels de protección y editar pachinas protechitas', 'right-editprotected' => 'Editar pachinas protechitas (sin de protección en cascada)', 'right-editinterface' => "Editar a interficie d'usuario", @@ -1281,7 +1287,6 @@ Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.', 'right-siteadmin' => 'Trancar y destrancar a base de datos', 'right-reset-passwords' => "Reiniciar a contrasenya d'atros usuarios", 'right-override-export-depth' => 'Exporta pachinas que incluigan as enlazadas dica un fundaria de 5', -'right-versiondetail' => "Amostrar a información adicional d'a versión d'o software", 'right-sendemail' => 'Ninviar un correu electronico a atros usuarios', # User rights log @@ -1332,14 +1337,9 @@ Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.', 'recentchanges-legend' => 'Opcions sobre a pachina de zaguers cambeos', 'recentchangestext' => "Siga os cambeos más recients d'a wiki en ista pachina.", 'recentchanges-feed-description' => "Seguir os cambios más recients d'o wiki en ista fuent de noticias.", -'recentchanges-label-legend' => 'Leyenda: $1.', -'recentchanges-legend-newpage' => '$1 - pachina nueva', 'recentchanges-label-newpage' => 'Ista edición ha creyau una nueva pachina', -'recentchanges-legend-minor' => '$1 - edición menor', 'recentchanges-label-minor' => 'Ista ye una edición menor', -'recentchanges-legend-bot' => '$1 - edición de bot', 'recentchanges-label-bot' => 'Ista edición fue feita por un bot', -'recentchanges-legend-unpatrolled' => '$1 - edición sin patrullar', 'recentchanges-label-unpatrolled' => "Esta edición encara no s'ha controlato", 'rcnote' => "Contino {{PLURAL:$1|s'amuestra o unico cambeo feito|s'amuestran os zaguers '''$1''' cambeos feitos}} en {{PLURAL:$2|o zaguer día|os zaguers '''$2''' días}}, dica o $5, $4.", 'rcnotefrom' => "Contino s'amuestran os cambeos dende '''$2''' (dica '''$1''').", @@ -1385,6 +1385,9 @@ Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.', 'upload_directory_missing' => 'O directorio de carga ($1) no existe y no lo puede creyar o servidor web.', 'upload_directory_read_only' => 'O servidor web no puede escribir en o directorio de carga de fichers ($1).', 'uploaderror' => "S'ha producito una error en cargar o fichero", +'upload-recreate-warning' => "''Pare cuenta: T'a suya conveniencia s'ha muestra aquí o fichero con ixe nombre ha sido eliminado o renombrado.''' + +T'a suya conveniencia s'su conveniencia se muestra aquí el registro de supresiones y traslados de esta página:", 'uploadtext' => "Faiga servir o formulario d'o cobaixo ta cargar fichers. Ta veyer u mirar fichers cargatas denantes vaiga t'a [[Special:FileList|lista de fichers cargatos]]. As cargas y recargas tamién se rechistran en o [[Special:Log/upload|rechistro de cargas]], y os borraus en o [[Special:Log/delete|rechistro de borraus]]. @@ -1416,6 +1419,17 @@ Ta incluyir un fichero en una pachina, emplegue un vinclo d'una d'istas trazas 'filetype-unwanted-type' => "Os '''\".\$1\"''' son un tipo de fichero no deseyato. Se prefieren os fichers {{PLURAL:\$3|de tipo|d'os tipos}} \$2.", 'filetype-banned-type' => "No se premiten os fichers de tipo '''\".\$1\"'''. {{PLURAL:\$3|O tipo premitito ye|Os tipos premititos son}} \$2.", 'filetype-missing' => 'O fichero no tiene garra estensión (como ".jpg").', +'empty-file' => 'O fichero que ninvió yera buedo.', +'file-too-large' => 'O fichero que ninvió ye masiau gran.', +'filename-tooshort' => 'O nombre de fichero ye masiau curto.', +'filetype-banned' => 'Iste tipo de fichero ye vedau.', +'verification-error' => 'Iste fichero no pasó a verificación de fichers.', +'hookaborted' => "A modificación que ha mirau de fer l'ha cancelau un hook d'extensión.", +'illegal-filename' => 'O nombre de fichero no ye premitiu.', +'overwrite' => 'No se premite de sobrescribir un fichero existent.', +'unknown-error' => 'Ha ocurriu una error desconoixida.', +'tmp-create-error' => "No s'ha puesto creyar o fichero temporal.", +'tmp-write-error' => 'Error en escribir o fichero temporal.', 'large-file' => 'Se consella que os fichers no sigan mayors de $1; iste fichero ocupa $2.', 'largefileserver' => "A grandaria d'iste fichero ye mayor d'a que a confeguración d'iste servidor premite.", 'emptyfile' => 'Parixe que o fichero que se miraba de cargar ye buedo; por favor, comprebe que ixe ye reyalment o fichero que quereba cargar.', @@ -1440,13 +1454,14 @@ Si encara quiere cargar ixe fichero, torne y faiga servir un nuevo nombre. [[Fil 'fileexists-shared-forbidden' => 'Ya bi ha un fichero con ixe nombre en o reposte compartito. Si encara quiere cargar o fichero, por favor, torne enta zaga y faiga servir un nuevo nombre. [[File:$1|thumb|center|$1]]', 'file-exists-duplicate' => "Iste fichero ye un duplicau {{PLURAL:$1|d'o siguient fichero|d'os siguients fichers}}:", 'file-deleted-duplicate' => "Un fichero igual que iste ([[:$1]]) s'ha borrato enantes. Debería mirar-se o historial de borraus d'o fichero antes de continar cargando-lo atra vegada.", -'successfulupload' => 'Cargata correctament', 'uploadwarning' => 'Alvertencia de carga de fichero', 'uploadwarning-text' => "Por favor, modifique a descripción d'o fichero d'abaixo y torne a intentar-lo.", 'savefile' => 'Alzar fichero', 'uploadedimage' => '«[[$1]]» cargato.', 'overwroteimage' => 's\'ha cargato una nueva versión de "[[$1]]"', 'uploaddisabled' => 'A carga de fichers ye desactivata', +'copyuploaddisabled' => 'Carga por URL desactivada.', +'uploadfromurl-queued' => "S'ha metiu en a ringlera a suya carga.", 'uploaddisabledtext' => 'A carga de fichers ye desactivata.', 'php-uploaddisabledtext' => 'A carga de fichers PHP ye desactivata. Por favor, verfique a confeguración de file_uploads.', 'uploadscripted' => 'Iste fichero contiene codigo de script u HTML que puede estar interpretado incorrectament por un navegador.', @@ -1478,6 +1493,14 @@ JD # Jenoptik MGP # Pentax PICT # misz. #</pre> <!-- dixe ista linia esautament igual como ye -->', +'upload-success-subj' => 'Cargata correctament', +'upload-success-msg' => 'A carga de [$2] ha surtiu con exito. Ye disponible aquí: [[:{{ns:file}}:$1]]', +'upload-failure-subj' => 'Problema en a carga', +'upload-failure-msg' => 'I ha habiu un problema con o a suya carga dende [$2]: + +$1', +'upload-warning-subj' => 'Alvertencia de carga', +'upload-warning-msg' => 'I habió un problea con a carga de [$2]. Puede tornar ta [[Special:Upload/stash/$1|upload form]] pa correchir iste problema.', 'upload-proto-error' => 'Protocolo incorrecto', 'upload-proto-error-text' => 'Si quiere cargar fichers dende atra pachina, a URL ha de prencipiar por <code>http://</code> u <code>ftp://</code>.', @@ -1537,6 +1560,7 @@ Fendo click en un encabezau de columna se cambia o criterio d'ordenación.", 'listfiles_search_for' => "Mirar por nombre d'o fichero:", 'imgfile' => 'fichero', 'listfiles' => 'Lista de imachens', +'listfiles_thumb' => 'Miniatura', 'listfiles_date' => 'Calendata:', 'listfiles_name' => 'Nombre', 'listfiles_user' => 'Usuario', @@ -1650,8 +1674,8 @@ Debaixo s'amuestra a descripción d'a suya [$2 pachina de descripción].", 'statistics-edits' => 'Edicions en pachinas dende que se debantó {{SITENAME}}', 'statistics-edits-average' => "Meya d'edicions por pachina", 'statistics-views-total' => 'Total de vesitas', +'statistics-views-total-desc' => "No s'inclui as vesitas a pachinas inexistents ni a pachinas especials", 'statistics-views-peredit' => 'Vesitas por edición', -'statistics-jobqueue' => "Longaria d'a [http://www.mediawiki.org/wiki/Manual:Job_queue coda de treballos]", 'statistics-users' => '[[Special:ListUsers|Usuarios]] rechistratos', 'statistics-users-active' => 'Usuarios activos', 'statistics-users-active-desc' => 'Usuarios que han feito qualsiquier acción en {{PLURAL:$1|o zaguer día|os zaguers $1 días}}', @@ -1664,7 +1688,7 @@ Ixos vinclos habrían de ir millor t'a pachina especifica apropiada.<br /> Una pachina se considera pachina de desambigación si fa servir una plantilla provenient de [[MediaWiki:Disambiguationspage]].", 'doubleredirects' => 'Reendreceras dobles', -'doubleredirectstext' => "En ista pachina s'amuestran as pachinas que son reendreceras enta atras pachinas reendrezatas. +'doubleredirectstext' => "En ista pachina s'amuestran as pachinas que son reendreceras enta atras pachinas reendrezatas. Cada ringlera contién o vinclo t'a primer y segunda reendreceras, y tamién o destino d'a segunda reendrecera, que ye a ormino a pachina obchectivo \"reyal\" a la que a primer pachina habría d'endrezar.", 'double-redirect-fixed-move' => "S'ha tresladau [[$1]], agora ye una endrecera ta [[$2]]", 'double-redirect-fixer' => 'Apanyador de reendreceras', @@ -1688,6 +1712,8 @@ Cada ringlera contién o vinclo t'a primer y segunda reendreceras, y tamién o d 'nmembers' => '$1 {{PLURAL:$1|miembro|miembros}}', 'nrevisions' => '$1 {{PLURAL:$1|versión|versions}}', 'nviews' => '$1 {{PLURAL:$1|vesita|vesitas}}', +'nimagelinks' => "S'emplega en $1 {{PLURAL:$1|pachina|pachinas}}", +'ntransclusions' => "s'emplega en $1 {{PLURAL:$1|pachina|pachinas}}", 'specialpage-empty' => 'Ista pachina ye bueda.', 'lonelypages' => 'Pachinas popiellas', 'lonelypagestext' => "As siguients pachinas no tienen vinclos dende atras pachinas ni s'incluyen en atras pachinas de {{SITENAME}}.", @@ -1843,34 +1869,40 @@ Protocolos suportados: <tt>$1</tt>', 'listgrouprights-removegroup-self-all' => 'Salir de todas as collas', # E-mail user -'mailnologin' => "No ninviar l'adreza", -'mailnologintext' => "Ha d'haber [[Special:UserLogin|encetato una sesión]] y tener una adreza conforme de correu-e en as suyas [[Special:Preferences|preferencias]] ta ninviar un correu electronico ta atros usuarios.", -'emailuser' => 'Ninviar un correu electronico ta iste usuario', -'emailpage' => "Ninviar correu ta l'usuario", -'emailpagetext' => 'Puede fer servir o formulario que bi ye contino ta ninviar un correu electronico a iste usuario. +'mailnologin' => "No ninviar l'adreza", +'mailnologintext' => "Ha d'haber [[Special:UserLogin|encetato una sesión]] y tener una adreza conforme de correu-e en as suyas [[Special:Preferences|preferencias]] ta ninviar un correu electronico ta atros usuarios.", +'emailuser' => 'Ninviar un correu electronico ta iste usuario', +'emailpage' => "Ninviar correu ta l'usuario", +'emailpagetext' => 'Puede fer servir o formulario que bi ye contino ta ninviar un correu electronico a iste usuario. L\'adreza de correu-e que endicó en as suyas [[Special:Preferences|preferencias d\'usuario]] amaneixerá en o campo "Remitent" ta que o destinatario pueda responder-le.', -'usermailererror' => "L'obchecto de correu retornó una error:", -'defemailsubject' => 'Correu de {{SITENAME}}', -'noemailtitle' => 'No bi ha garra adreza de correu electronico', -'noemailtext' => 'Iste usuario no ha especificato una adreza conforme de correu electronico.', -'nowikiemailtitle' => 'no se premiten os correus electronicos', -'nowikiemailtext' => "Iste usuario ha esleyiu de no recibir correus electronicos d'atros usuarios.", -'email-legend' => 'Ninviar un correu electronico ta atro usuario de {{SITENAME}}', -'emailfrom' => 'De:', -'emailto' => 'Ta:', -'emailsubject' => 'Afer:', -'emailmessage' => 'Mensache:', -'emailsend' => 'Ninviar', -'emailccme' => "Ninviar-me una copia d'o mío mensache.", -'emailccsubject' => "Copia d'o suyo mensache ta $1: $2", -'emailsent' => 'Mensache de correu ninviato', -'emailsenttext' => "S'ha ninviato o suyo correu.", -'emailuserfooter' => 'Iste correu-e s\'ha ninviato por $1 ta $2 fendo servir a función "Email user" de {{SITENAME}}.', +'usermailererror' => "L'obchecto de correu retornó una error:", +'defemailsubject' => 'Correu de {{SITENAME}}', +'usermaildisabled' => "S'ha desactivau o ninvío de correus electronicos a os usuarios", +'usermaildisabledtext' => 'En ista wiki no puet ninviar un correu-e a atros usuarios', +'noemailtitle' => 'No bi ha garra adreza de correu electronico', +'noemailtext' => 'Iste usuario no ha especificato una adreza conforme de correu electronico.', +'nowikiemailtitle' => 'no se premiten os correus electronicos', +'nowikiemailtext' => "Iste usuario ha esleyiu de no recibir correus electronicos d'atros usuarios.", +'email-legend' => 'Ninviar un correu electronico ta atro usuario de {{SITENAME}}', +'emailfrom' => 'De:', +'emailto' => 'Ta:', +'emailsubject' => 'Afer:', +'emailmessage' => 'Mensache:', +'emailsend' => 'Ninviar', +'emailccme' => "Ninviar-me una copia d'o mío mensache.", +'emailccsubject' => "Copia d'o suyo mensache ta $1: $2", +'emailsent' => 'Mensache de correu ninviato', +'emailsenttext' => "S'ha ninviato o suyo correu.", +'emailuserfooter' => 'Iste correu-e s\'ha ninviato por $1 ta $2 fendo servir a función "Email user" de {{SITENAME}}.', + +# User Messenger +'usermessage-summary' => 'Deixando un mensache de sistema.', +'usermessage-editor' => "Mensachero d'o sistema", # Watchlist 'watchlist' => 'Lista de seguimiento', 'mywatchlist' => 'Lista de seguimiento', -'watchlistfor' => "(de '''$1''')", +'watchlistfor2' => 'De $1 $2', 'nowatchlist' => 'No tien garra pachina en a lista de seguimiento.', 'watchlistanontext' => "Ha de $1 ta veyer u editar as dentradas d'a suya lista de seguimiento.", 'watchnologin' => 'No ha encetato a sesión', @@ -1985,7 +2017,10 @@ A zaguer edición d'a pachina la fació [[User:$3|$3]] ([[User talk:$3|descusió 'revertpage' => "S'han revertito as edicions de [[Special:Contributions/$2|$2]] ([[User talk:$2|Descusión]]); tornando t'a zaguera versión editada por [[User:$1|$1]]", 'revertpage-nouser' => "S'han revertito as edicions feitas por (nombre d'usuario eliminato) a la zaguera versión feita por [[User:$1|$1]]", 'rollback-success' => "Revertidas as edicions de $1; s'ha retornato t'a zaguer versión de $2.", -'sessionfailure' => "Pareix que bi ha un problema con a suya sesión; + +# Edit tokens +'sessionfailure-title' => 'Error de sesión', +'sessionfailure' => "Pareix que bi ha un problema con a suya sesión; s'ha anulato ista acción como mida de precura contra seqüestros de sesión. Torne t'a pachina anterior, recargue a pachina y torne a prebar alavez.", @@ -2109,18 +2144,21 @@ $1", 'month' => 'Dende o mes (y anteriors):', 'year' => "Dende l'anyo (y anteriors):", -'sp-contributions-newbies' => "Amostrar nomás as contrebucions d'os usuarios nuevos", -'sp-contributions-newbies-sub' => 'Por nuevos usuarios', -'sp-contributions-newbies-title' => "Contrebucions d'os nuevos usuarios", -'sp-contributions-blocklog' => 'Rechistro de bloqueyos', -'sp-contributions-deleted' => "contribucions d'usuario borradas", -'sp-contributions-logs' => 'rechistros', -'sp-contributions-talk' => 'descusión', -'sp-contributions-userrights' => "administración de dreitos d'usuario", -'sp-contributions-blocked-notice' => "Iste usuario ye bloqueyato en istos momentos. A zaguer dentrada d'o rechistro de bloqueyos se presienta debaixo ta más información:", -'sp-contributions-search' => 'Mirar contribucions', -'sp-contributions-username' => "Adreza IP u nombre d'usuario:", -'sp-contributions-submit' => 'Mirar', +'sp-contributions-newbies' => "Amostrar nomás as contrebucions d'os usuarios nuevos", +'sp-contributions-newbies-sub' => 'Por nuevos usuarios', +'sp-contributions-newbies-title' => "Contrebucions d'os nuevos usuarios", +'sp-contributions-blocklog' => 'Rechistro de bloqueyos', +'sp-contributions-deleted' => "contribucions d'usuario borradas", +'sp-contributions-logs' => 'rechistros', +'sp-contributions-talk' => 'descusión', +'sp-contributions-userrights' => "administración de dreitos d'usuario", +'sp-contributions-blocked-notice' => "Iste usuario ye bloqueyato en istos momentos. A zaguer dentrada d'o rechistro de bloqueyos se presienta debaixo ta más información:", +'sp-contributions-blocked-notice-anon' => "Ista adreza IP se troba acutalment bloqueyada. +Ta más información, s'amuestra contino a zaguera dentrada d'o rechistro de bloqueyos.", +'sp-contributions-search' => 'Mirar contribucions', +'sp-contributions-username' => "Adreza IP u nombre d'usuario:", +'sp-contributions-toponly' => 'Mostrar nomás as zagueras versions', +'sp-contributions-submit' => 'Mirar', # What links here 'whatlinkshere' => 'Pachinas que enlazan con ista', @@ -2183,7 +2221,6 @@ as pachinas que s'han vandalizato).", 'ipb-edit-dropdown' => "Editar as razons d'o bloqueyo", 'ipb-unblock-addr' => 'Desbloqueyar $1', 'ipb-unblock' => 'Desbloqueyar un usuario u una IP', -'ipb-blocklist-addr' => 'Bloqueyos actuals de $1', 'ipb-blocklist' => 'Amostrar bloqueyos actuals', 'ipb-blocklist-contribs' => 'Contrebucions de $1', 'unblockip' => 'Desbloqueyar usuario', @@ -2252,6 +2289,8 @@ $1 ya ye bloqueyato. Quiere cambiar as condicions d'o bloqueyo?", 'sorbs_create_account_reason' => 'A suya adreza IP ye en a lista de proxies ubiertos en a DNSBL de {{SITENAME}}. No puede creyar una cuenta', 'cant-block-while-blocked' => 'No puet bloqueyar a atros usuarios en o tiempo que ye bloqueyato.', 'cant-see-hidden-user' => "L'usuario a qui ye mirando de bloqueyar ya ye bloqueyau y amagau. Como que ye posible que vusté no tienga o dreito hideuser, no puede veyer ni editar os bloqueyos d'ixe usuario.", +'ipbblocked' => 'No puede bloqueyar ni desbloqueyar atros usuarios porque ya ye bloqueyau.', +'ipbnounblockself' => 'No tiene permiso ta sacar o suyo propio bloqueyo', # Developer tools 'lockdb' => 'Trancar a base de datos', @@ -2341,6 +2380,7 @@ A pachina de destino ("[[:$1]]") ya existe. Quiere borrar-la ta premitir o tresl 'immobile-source-page' => 'Ista pachina no se puet tresladar.', 'immobile-target-page' => 'No se puet tresladar ta ixe títol.', 'imagenocrossnamespace' => 'No se puede tresladar un fichero ta un espacio de nombres que no sía fichers', +'nonfile-cannot-move-to-file' => 'No ye posible de mover qualcosa que no siga un fichero ta o espacio de nombres fichers', 'imagetypemismatch' => 'A nueva estensión no concuerda con o tipo de fichero', 'imageinvalidfilename' => "O nombre d'o fichero obchectivo no ye conforme", 'fix-double-redirects' => 'Esviellar todas as reendreceras que plegan ta o títol orichinal', @@ -2416,6 +2456,7 @@ Todas as importacions interwiki se rechistran en o [[Special:Log/import|rechistr 'importstart' => 'Importando pachinas...', 'import-revision-count' => '$1 {{PLURAL:$1|versión|versions}}', 'importnopages' => 'No bi ha garra pachina ta importar.', +'imported-log-entries' => "S'ha importau {{PLURAL:$1|una dentrada d'o rechistro|S'han importau $1 dentradas d'o rechistro}}.", 'importfailed' => 'Ha fallato a importación: $1', 'importunknownsource' => "O tipo de fuent d'a importación ye esconoixito", 'importcantopen' => "No s'ha puesto importar iste fichero", @@ -2509,6 +2550,8 @@ Puede veyer-ne, manimenos, o codigo fuent.', 'tooltip-upload' => 'Prencipia a carga', 'tooltip-rollback' => '"Revertir" revierte todas as zagueras edicions d\'un mesmo usuario en ista pachina nomás con un clic.', 'tooltip-undo' => '"Desfer" revierte a edición trigata y ubre a pachina d\'edición en o modo de previsualización. Deixa escribir una razón en o resumen d\'edición.', +'tooltip-preferences-save' => 'Alzar as preferencias', +'tooltip-summary' => 'Escribir un breu resumen', # Metadata 'nodublincore' => 'Metadatos Dublin Core RDF desactivatos en iste servidor.', @@ -2605,19 +2648,22 @@ $1', 'nextdiff' => "Ir t'a edición siguient →", # Media information -'mediawarning' => "'''Pare cuenta!''': Iste tipo de fichero puet contener codigo endino. +'mediawarning' => "'''Pare cuenta!''': Iste tipo de fichero puet contener codigo endino. En executar-lo, podría meter en un contornillo a seguridat d'o suyo sistema.", 'imagemaxsize' => "Limite de grandaria d'as imáchens:<br />''(ta pachinas de descripción de fichers)''", 'thumbsize' => "Midas d'a miniatura:", 'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pachina|pachinas}}', -'file-info' => "(grandaria d'o fichero: $1; tipo MIME: $2)", -'file-info-size' => "($1 × $2 píxels; grandaria d'o fichero: $3; tipo MIME: $4)", +'file-info' => "grandaria d'o fichero: $1; tipo MIME: $2", +'file-info-size' => "$1 × $2 píxels; grandaria d'o fichero: $3; tipo MIME: $4", 'file-nohires' => '<small>No bi ha garra versión con resolución más gran.</small>', -'svg-long-desc' => '(fichero SVG, nominalment $1 × $2 píxels, grandaria: $3)', +'svg-long-desc' => 'fichero SVG, nominalment $1 × $2 píxels, grandaria: $3', 'show-big-image' => 'Imachen en a maxima resolución', 'show-big-image-thumb' => "<small>Grandaria d'ista anvista previa: $1 × $2 píxels</small>", 'file-info-gif-looped' => 'embuclau', 'file-info-gif-frames' => '$1 {{PLURAL:$1|imachen|imáchens}}', +'file-info-png-looped' => 'embuclau', +'file-info-png-repeat' => 'reproducito $1 {{PLURAL:$1|vegada|vegadas}}', +'file-info-png-frames' => '$1 {{PLURAL:$1|imáchens|imáchens}}', # Special:NewFiles 'newimages' => 'Galería de nuevas imachens', @@ -2926,24 +2972,24 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O 'limitall' => 'Totz', # E-mail address confirmation -'confirmemail' => 'Confirmar adreza de correu-e', -'confirmemail_noemail' => "No tiene una adreza de correu-e conforme en as suyas [[Special:Preferences|preferencias d'usuario]].", -'confirmemail_text' => "{{SITENAME}} requiere que confirme a suya adreza de correu-e antis de poder usar as funcions de correu-e. Punche o botón de baxo ta ninviar un mensache de confirmación t'a suya adreza. O mensache incluirá un vinclo con un codigo. Escriba-lo ta confirmar que a suya adreza ye conforme.", -'confirmemail_pending' => "Ya se le ha ninviato un codigo de confirmación; si creyó una cuenta fa poco tiempo, puede que s'estime más d'aguardar bells menutos ta veyer si le plega antes de pedir un nuevo codigo.", -'confirmemail_send' => 'Ninviar un codigo de confirmación.', -'confirmemail_sent' => "S'ha ninviato un correu de confirmación.", -'confirmemail_oncreate' => "S'ha ninviato un codigo de confirmación t'a suya adreza de correu-e. +'confirmemail' => 'Confirmar adreza de correu-e', +'confirmemail_noemail' => "No tiene una adreza de correu-e conforme en as suyas [[Special:Preferences|preferencias d'usuario]].", +'confirmemail_text' => "{{SITENAME}} requiere que confirme a suya adreza de correu-e antis de poder usar as funcions de correu-e. Punche o botón de baxo ta ninviar un mensache de confirmación t'a suya adreza. O mensache incluirá un vinclo con un codigo. Escriba-lo ta confirmar que a suya adreza ye conforme.", +'confirmemail_pending' => "Ya se le ha ninviato un codigo de confirmación; si creyó una cuenta fa poco tiempo, puede que s'estime más d'aguardar bells menutos ta veyer si le plega antes de pedir un nuevo codigo.", +'confirmemail_send' => 'Ninviar un codigo de confirmación.', +'confirmemail_sent' => "S'ha ninviato un correu de confirmación.", +'confirmemail_oncreate' => "S'ha ninviato un codigo de confirmación t'a suya adreza de correu-e. Iste codigo no ye necesario ta dentrar, pero amenistará escribir-lo antis d'activar qualsiquier función d'o wiki basata en o correu electronico.", -'confirmemail_sendfailed' => "{{SITENAME}} no ha puesto ninviar-le o mensache de confirmación. Por favor, comprebe que no bi haiga carácters no conformes en l'adreza de correu electronico indicata. +'confirmemail_sendfailed' => "{{SITENAME}} no ha puesto ninviar-le o mensache de confirmación. Por favor, comprebe que no bi haiga carácters no conformes en l'adreza de correu electronico indicata. O programa retornó o siguient codigo d'error: $1", -'confirmemail_invalid' => 'O codigo de confirmación no ye conforme. Regular que o codigo sía circumducito.', -'confirmemail_needlogin' => 'Amenistar $1 ta confirmar a suya adreza de correu-e.', -'confirmemail_success' => 'A suya adreza de correu-e ya ye confirmata. Agora puede [[Special:UserLogin|dentrar]] en o wiki y gronxiar-se-ie.', -'confirmemail_loggedin' => 'A suya adreza de correu-e ya ye confirmata.', -'confirmemail_error' => 'Bella cosa falló en alzar a suya confirmación.', -'confirmemail_subject' => "confirmación de l'adreza de correu-e de {{SITENAME}}", -'confirmemail_body' => 'Belún, probablement vusté mesmo, ha rechistrato una cuenta "$2" con ista adreza de correu-e en {{SITENAME}} dende l\'adreza IP $1. +'confirmemail_invalid' => 'O codigo de confirmación no ye conforme. Regular que o codigo sía circumducito.', +'confirmemail_needlogin' => 'Amenistar $1 ta confirmar a suya adreza de correu-e.', +'confirmemail_success' => 'A suya adreza de correu-e ya ye confirmata. Agora puede [[Special:UserLogin|dentrar]] en o wiki y gronxiar-se-ie.', +'confirmemail_loggedin' => 'A suya adreza de correu-e ya ye confirmata.', +'confirmemail_error' => 'Bella cosa falló en alzar a suya confirmación.', +'confirmemail_subject' => "confirmación de l'adreza de correu-e de {{SITENAME}}", +'confirmemail_body' => 'Belún, probablement vusté mesmo, ha rechistrato una cuenta "$2" con ista adreza de correu-e en {{SITENAME}} dende l\'adreza IP $1. Ta confirmar que ista cuenta reyalment le perteneixe y activar as funcions de correu-e en {{SITENAME}}, ubra iste vinclo en o suyo navegador: @@ -2954,8 +3000,19 @@ Si a cuenta *no* ye suya, siga iste atro vinclo ta anular a confirmación d\'adr $5 Iste codigo de confirmación circumducirá en $4.', -'confirmemail_invalidated' => "Anular a confirmación d'adreza de correu-e", -'invalidateemail' => 'Anular a confirmación de correu-e', +'confirmemail_body_changed' => 'Belún, probablement vusté mesmo, dende l\'adreza IP $1, ha cambiato l\'adreza de correu-e d\'a cuenta "$2" ta ista adreza en {{SITENAME}}. + +Ta confirmar que ista cuenta reyalment le perteneix y ta reactivar as funcions de correu-e en {{SITENAME}}, ubra iste vinclo en o suyo navegador: + +$3 + +Si a cuenta *no* ye suya, siga iste atro vinclo ta anular a confirmación d\'adreza de correu-e: + +$5 + +Iste codigo de confirmación circumducirá en $4.', +'confirmemail_invalidated' => "Anular a confirmación d'adreza de correu-e", +'invalidateemail' => 'Anular a confirmación de correu-e', # Scary transclusion 'scarytranscludedisabled' => "[S'ha desactivato a transclusión interwiki]", @@ -2995,6 +3052,7 @@ Por favor, confirme que reyalment deseya tornar a creyar l'articlo.", 'table_pager_first' => 'Primera pachina', 'table_pager_last' => 'Zaguer pachina', 'table_pager_limit' => 'Amostrar $1 elementos por pachina', +'table_pager_limit_label' => 'Ítems por pachina:', 'table_pager_limit_submit' => 'Ir-ie', 'table_pager_empty' => 'No bi ha garra resultau', @@ -3062,6 +3120,13 @@ Tamién puede fer servir o [[Special:Watchlist/edit|editor estándar]].", 'version-hook-subscribedby' => 'Suscrito por', 'version-version' => '(Versión $1)', 'version-license' => 'Licencia', +'version-poweredby-credits' => "Iste wiki funciona gracias a '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.", +'version-poweredby-others' => 'atros', +'version-license-info' => "MediaWiki ye software libre, puet redistribuyir-lo y/u modificar-lo baixo os terminos d'a Licencia Publica Cheneral GNU publicada por a Free Software Foundation, ya siga d'a suya versión 2 u (a la suya esleción) qualsiquier versión posterior. + +MediaWiki se distribuye con l'asperanza d'estar d'utilidat, pero SIN GARRA GUARANCIA; nian a guarancia implicita de COMERCIALIZACIÓN u ADEQUACIÓN TA UNA FINALIDAT DETERMINADA. En trobará más detalles en a Licencia Publica General GNU. + +Con iste programa ha d'haber recibiu [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia d'a Licencia Publica Cheneral GNU]; si no ye asinas, endrece-se a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA u bien [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html la leiga en linia].", 'version-software' => 'Software instalato', 'version-software-product' => 'Producto', 'version-software-version' => 'Versión', @@ -3132,6 +3197,15 @@ Escriba o nombre d\'o fichero sin o prefixo "{{ns:file}}:".', 'tags-edit' => 'editar', 'tags-hitcount' => '$1 {{PLURAL:$1|cambeo|cambeos}}', +# Special:ComparePages +'comparepages' => 'Contimparar pachinas', +'compare-selector' => "Contimparar as versions d'as pachinas", +'compare-page1' => 'Pachina 1', +'compare-page2' => 'Pachina 2', +'compare-rev1' => 'Versión 1', +'compare-rev2' => 'Versión 2', +'compare-submit' => 'Contimparar', + # Database error messages 'dberr-header' => 'Iste wiki tiene un problema', 'dberr-problems' => 'Lo sentimos. Iste sitio ye experimentando dificultatz tecnicas.', @@ -3148,8 +3222,13 @@ Escriba o nombre d\'o fichero sin o prefixo "{{ns:file}}:".', 'htmlform-float-invalid' => 'A valura que ha especificato no ye un entero.', 'htmlform-int-toolow' => "A valura que ha especificato ye por debaixo d'o menimo de $1", 'htmlform-int-toohigh' => "A valura que ha especificato ye alto d'o maximo de $1", +'htmlform-required' => 'Ista valura ye necesaria', 'htmlform-submit' => 'Ninviar', 'htmlform-reset' => 'Desfer cambios', 'htmlform-selectorother-other' => 'Atros', +# SQLite database support +'sqlite-has-fts' => '$1, con soporte de busca de texto integro', +'sqlite-no-fts' => '$1, sin soporte de busca de texto integro', + ); diff --git a/languages/messages/MessagesAng.php b/languages/messages/MessagesAng.php index 2c071d9a..d8146c48 100644 --- a/languages/messages/MessagesAng.php +++ b/languages/messages/MessagesAng.php @@ -43,8 +43,7 @@ $messages = array( 'tog-editsection' => 'Dǣla ādihtende þafian bȳ [ādihtan] hlenċum', 'tog-editsectiononrightclick' => 'Þafa dǣla ādihtune þurh sƿenȝas þǣre sƿīðran healfe on dǣla titulum (þis þearf JavaScript)', 'tog-showtoc' => 'Innoðes tæfle sēon (for sīdum þe mā þonne 3 hēafodingas habbaþ)', -'tog-rememberpassword' => 'Mīne inmeldunge ȝemyndan on þissum spearcatelle', -'tog-editwidth' => 'Þone ādihtbox sprædan to fyllenne þæt fulānsīenēagþȳrl', +'tog-rememberpassword' => 'Mīne inmeldunge ȝemyndan on þissum spearcatelle (oþ $1 {{PLURAL:$1|dæȝ|dagas}})', 'tog-watchcreations' => 'Sīdan þe iċ scieppe ēacian tō mīnre ƿæccȝetale', 'tog-watchdefault' => 'Sīdan þe iċ ādihte ēacian tō mīnre ƿæccȝetale', 'tog-watchmoves' => 'Sīdan þe iċ hƿeorfe ēacian tō mīnre ƿæccȝetale', @@ -190,31 +189,21 @@ $messages = array( 'faqpage' => 'Project:FAQ', # Vector skin -'vector-action-addsection' => 'Mearcunge ēacian', -'vector-action-delete' => 'Forlēos', -'vector-action-move' => 'Ƿeȝ', -'vector-action-protect' => 'Beorȝa', -'vector-action-undelete' => 'Sciepe tramet eft', -'vector-action-unprotect' => 'Unbeorȝa', -'vector-namespace-category' => 'Flocc', -'vector-namespace-help' => 'Helpsīde', -'vector-namespace-image' => 'Ȝeƿithord', -'vector-namespace-main' => 'Sīde', -'vector-namespace-media' => 'Missenmiddelsīde', -'vector-namespace-mediawiki' => 'Ǣrend', -'vector-namespace-project' => 'Ƿeorcsīde', -'vector-namespace-special' => 'Syndriȝ sīde', -'vector-namespace-talk' => 'Talu', -'vector-namespace-template' => 'Bysen', -'vector-namespace-user' => 'Brūcendsīde', -'vector-view-create' => 'Sciepe', -'vector-view-edit' => 'Ādihte', -'vector-view-history' => 'Stǣr', -'vector-view-view' => 'Rǣd', -'vector-view-viewsource' => 'Sēo fruman', -'actions' => 'Fremmunga', -'namespaces' => 'Namstedas', -'variants' => 'Missenlicnessa', +'vector-action-addsection' => 'Mearcunge ēacian', +'vector-action-delete' => 'Forlēos', +'vector-action-move' => 'Ƿeȝ', +'vector-action-protect' => 'Beorȝa', +'vector-action-undelete' => 'Sciepe tramet eft', +'vector-action-unprotect' => 'Unbeorȝa', +'vector-simplesearch-preference' => 'Lǣt forðoda sēcunge tōtyhtinga (synderlīce for Vector scinne)', +'vector-view-create' => 'Sciepe', +'vector-view-edit' => 'Ādihte', +'vector-view-history' => 'Stǣr', +'vector-view-view' => 'Rǣd', +'vector-view-viewsource' => 'Sēo fruman', +'actions' => 'Fremmunga', +'namespaces' => 'Namstedas', +'variants' => 'Missenlicnessa', 'errorpagetitle' => 'Ƿōh', 'returnto' => 'Ȝā eft tō $1', @@ -388,7 +377,7 @@ Cnāw þæt sume sīdan cunnon gelǣstende ēowod wesan swā þū wǣre gīet in 'yourname' => 'Þīn brūcendnama', 'yourpassword' => 'Þafungƿord:', 'yourpasswordagain' => 'Þafungƿord edƿrītan:', -'remembermypassword' => 'Mīne inmeldunge ȝemyndan on þissum spearcatelle', +'remembermypassword' => 'Mīne inmeldunge ȝemyndan on þissum spearcatelle (for a maximum of $1 {{PLURAL:$1|day|days}})', 'yourdomainname' => 'Þīn ȝeƿeald:', 'login' => 'Inmeldian', 'nav-login-createaccount' => 'Nīƿne hordcleofan scieppan oþþe inmeldian', @@ -401,6 +390,7 @@ Cnāw þæt sume sīdan cunnon gelǣstende ēowod wesan swā þū wǣre gīet in 'createaccount' => 'Hordcleofan scieppan', 'gotaccountlink' => 'Inmeldian', 'createaccountmail' => 'Þurh spearcenaǣrend', +'createaccountreason' => 'Racu:', 'badretype' => 'Þā þafungƿord þe ƿrite þū, bēoþ unȝemæcca.', 'userexists' => 'Hƿā hæfþ þæt brūcendnama. Bidde ōðer brūcendnama ċēosan.', @@ -498,9 +488,6 @@ Gif þu hider misfōn cōme, cnoca þā þīnne webbscēaweres '''on bæc''' cn Þū behǣtst ēac þæt þū selfa þis ƿrite, oþþe efenlǣhtest of sumre folcliċum āgnunge oþþe ȝelīċum frēom horde (sēo $1 for āscungum). '''Ne forþsend efenlǣhtscielded ƿeorc būtan þafunge!'''", -'longpagewarning' => 'WARNUNG: Þes tramet is $1 kilobyta lang; sume -webbscēaweras hæbben earfoðu mid þȳ þe hīe ādihtaþ trametas nēa oþþe lengran þonne 32kb. -Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.', 'templatesused' => '{{PLURAL:$1|Bysen|Bysena}} brocen on þisre sīdan:', 'templatesusedpreview' => '{{PLURAL:$1|Bysen|Bysena}} brocen on þisre forescēaƿe:', 'template-protected' => '(borgen)', @@ -680,12 +667,8 @@ Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.', 'recentchanges' => 'Nīƿe hƿearfas', 'recentchanges-legend' => 'Nīƿa hƿearfa forebearƿan', 'recentchanges-feed-description' => 'Þā mǣst nīƿoste hƿearfan huntan to þisse ƿiki in þissum strēame', -'recentchanges-label-legend' => 'Cǣȝ: $1.', -'recentchanges-legend-newpage' => '$1 - nīƿu sīde', 'recentchanges-label-newpage' => 'Þes ādiht macode nīƿa sīdan', -'recentchanges-legend-minor' => '$1 - lȳtl ādiht', 'recentchanges-label-minor' => 'Þes is lȳtl ādiht', -'recentchanges-legend-bot' => '$1 - searuþræles ādiht', 'recentchanges-label-bot' => 'Searuþræl fremmode þisne ādiht', 'rcnote' => "Under {{PLURAL:$1|... '''1''' ...|sind þā æftemestan '''$1''' hweorfunga}} in {{PLURAL:$2|...|þǣm æftemestum '''$2''' dagum}}, . . $5, $4.", 'rcnotefrom' => 'Under sind þā hweorfunga siþþan <b>$2</b> (oþ <b>$1</b> geīewed).', @@ -902,7 +885,6 @@ Also see [[Special:WantedCategories|wanted categories]].', # Watchlist 'watchlist' => 'Mīnu ƿæcceȝetalu', 'mywatchlist' => 'Mīnu ƿæcceȝetalu', -'watchlistfor' => "(for '''$1''')", 'addedwatch' => 'To ƿæcceȝetale ēacod', 'removedwatch' => 'Fornōm fram ƿæccȝetale', 'removedwatchtext' => 'Sēo sīde "[[:$1]]" ƿæs fram [[Special:Watchlist|þīnre ƿæccȝetale]] fornōm.', @@ -1178,9 +1160,9 @@ Bidde cēos ōðerne naman.', # Media information 'imagemaxsize' => 'Settan biliðu on biliþgemearcungtrametum tō:', 'thumbsize' => 'Þumannæglmicelnes:', -'file-info-size' => '($1 × $2 pixels, fīlmiċelu: $3, MIMEcynn: $4)', +'file-info-size' => '$1 × $2 pixels, fīlmiċelu: $3, MIMEcynn: $4', 'file-nohires' => '<small>Þǣr nis nǣniȝ mā miċelu.</small>', -'svg-long-desc' => '(SVG fīl, rihte $1 × $2 pixels, fīlmiċelu: $3)', +'svg-long-desc' => 'SVG fīl, rihte $1 × $2 pixels, fīlmiċelu: $3', 'show-big-image' => 'Fulmiċelu', 'show-big-image-thumb' => '<small>Þēos forescēaƿe miċelu: $1 × $2 pixels</small>', diff --git a/languages/messages/MessagesAr.php b/languages/messages/MessagesAr.php index c5d4de91..583696bb 100644 --- a/languages/messages/MessagesAr.php +++ b/languages/messages/MessagesAr.php @@ -21,6 +21,7 @@ * @author Gharbeia * @author Hakeem * @author Histolo2 + * @author Houcinee1 * @author Jak * @author Khaledhosny * @author Lord Anubis @@ -35,13 +36,17 @@ * @author OsamaK * @author Ouda * @author Oxydo + * @author Rami.Awad * @author Riadismet + * @author Samer * @author Sami Lab * @author Tarawneh * @author TheEgyptian * @author Uwe a + * @author Zanatos * @author ترجمان05 * @author عصام بايزيدي + * @author عمرو * @author نصوح */ @@ -113,7 +118,7 @@ $dateFormats = array( 'ymd time' => 'H:i', 'ymd date' => 'Y xg j', 'ymd both' => 'H:i، Y xg j', # Arabic comma - + 'hijri time' => 'H:i', 'hijri date' => 'xmj xmF xmY', 'hijri both' => 'H:i، xmj xmF xmY', @@ -220,6 +225,7 @@ $magicWords = array( 'subjectpagenamee' => array( '1', 'عنوان_صفحة_الموضوع', 'عنوان_صفحة_المقالة', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ), 'msg' => array( '0', 'رسالة:', 'MSG:' ), 'subst' => array( '0', 'نسخ:', 'SUBST:' ), + 'safesubst' => array( '0', 'نسخ_آمن:', 'SAFESUBST:' ), 'msgnw' => array( '0', 'رسالة_بدون_تهيئة:', 'MSGNW:' ), 'img_thumbnail' => array( '1', 'تصغير', 'thumbnail', 'thumb' ), 'img_manualthumb' => array( '1', 'تصغير=$1', 'مصغر=$1', 'thumbnail=$1', 'thumb=$1' ), @@ -230,8 +236,8 @@ $magicWords = array( 'img_center' => array( '1', 'مركز', 'center', 'centre' ), 'img_framed' => array( '1', 'إطار', 'بإطار', 'framed', 'enframed', 'frame' ), 'img_frameless' => array( '1', 'لاإطار', 'frameless' ), - 'img_page' => array( '1', 'صفحة=$1', 'صفحة $1', 'page=$1', 'page $1' ), - 'img_upright' => array( '1', 'معدول', 'معدول=$1', 'معدول $1', 'upright', 'upright=$1', 'upright $1' ), + 'img_page' => array( '1', 'صفحة=$1', 'صفحة_$1', 'page=$1', 'page $1' ), + 'img_upright' => array( '1', 'معدول', 'معدول=$1', 'معدول_$1', 'upright', 'upright=$1', 'upright $1' ), 'img_border' => array( '1', 'حدود', 'border' ), 'img_baseline' => array( '1', 'خط_أساسي', 'baseline' ), 'img_sub' => array( '1', 'فرعي', 'sub' ), @@ -249,6 +255,7 @@ $magicWords = array( 'nse' => array( '0', 'نطم:', 'NSE:' ), 'localurl' => array( '0', 'مسار_محلي:', 'LOCALURL:' ), 'localurle' => array( '0', 'عنوان_المسار_المحلي:', 'LOCALURLE:' ), + 'articlepath' => array( '0', 'مسار_المقالة', 'ARTICLEPATH' ), 'server' => array( '0', 'خادم', 'SERVER' ), 'servername' => array( '0', 'اسم_الخادم', 'SERVERNAME' ), 'scriptpath' => array( '0', 'مسار_السكريبت', 'مسار_سكريبت', 'SCRIPTPATH' ), @@ -265,6 +272,7 @@ $magicWords = array( 'revisionday' => array( '1', 'يوم_المراجعة', 'REVISIONDAY' ), 'revisionday2' => array( '1', 'يوم_المراجعة2', 'REVISIONDAY2' ), 'revisionmonth' => array( '1', 'شهر_المراجعة', 'REVISIONMONTH' ), + 'revisionmonth1' => array( '1', 'شهر_المراجعة1', 'REVISIONMONTH1' ), 'revisionyear' => array( '1', 'عام_المراجعة', 'REVISIONYEAR' ), 'revisiontimestamp' => array( '1', 'طابع_وقت_المراجعة', 'REVISIONTIMESTAMP' ), 'revisionuser' => array( '1', 'مستخدم_المراجعة', 'REVISIONUSER' ), @@ -306,6 +314,9 @@ $magicWords = array( 'staticredirect' => array( '1', '__تحويلة_إستاتيكية__', '__تحويلة_ساكنة__', '__STATICREDIRECT__' ), 'protectionlevel' => array( '1', 'مستوى_الحماية', 'PROTECTIONLEVEL' ), 'formatdate' => array( '0', 'تهيئة_التاريخ', 'تهيئة_تاريخ', 'formatdate', 'dateformat' ), + 'url_path' => array( '0', 'مسار', 'PATH' ), + 'url_wiki' => array( '0', 'ويكي', 'WIKI' ), + 'url_query' => array( '0', 'استعلام', 'QUERY' ), ); $specialPageAliases = array( @@ -319,6 +330,7 @@ $specialPageAliases = array( 'Watchlist' => array( 'قائمة_المراقبة' ), 'Recentchanges' => array( 'أحدث_التغييرات' ), 'Upload' => array( 'رفع' ), + 'UploadStash' => array( 'رفع_مخفي' ), 'Listfiles' => array( 'عرض_الملفات', 'قائمة_الملفات', 'قائمة_الصور' ), 'Newimages' => array( 'ملفات_جديدة', 'صور_جديدة' ), 'Listusers' => array( 'عرض_المستخدمين', 'قائمة_المستخدمين' ), @@ -353,6 +365,7 @@ $specialPageAliases = array( 'Allpages' => array( 'كل_الصفحات' ), 'Prefixindex' => array( 'فهرس_بادئة' ), 'Ipblocklist' => array( 'قائمة_المنع', 'عرض_المنع', 'قائمة_منع_أيبي' ), + 'Unblock' => array( 'رفع_منع' ), 'Specialpages' => array( 'صفحات_خاصة' ), 'Contributions' => array( 'مساهمات' ), 'Emailuser' => array( 'مراسلة_المستخدم' ), @@ -377,12 +390,14 @@ $specialPageAliases = array( 'FileDuplicateSearch' => array( 'بحث_ملف_مكرر' ), 'Unwatchedpages' => array( 'صفحات_غير_مراقبة' ), 'Listredirects' => array( 'عرض_التحويلات' ), - 'Revisiondelete' => array( 'حذف_نسخة' ), + 'Revisiondelete' => array( 'حذف_مراجعة' ), 'Unusedtemplates' => array( 'قوالب_غير_مستخدمة' ), 'Randomredirect' => array( 'تحويلة_عشوائية' ), 'Mypage' => array( 'صفحتي' ), 'Mytalk' => array( 'نقاشي' ), 'Mycontributions' => array( 'مساهماتي' ), + 'Myuploads' => array( 'رفوعاتي' ), + 'PermanentLink' => array( 'وصلة_دائمة', 'رابط_دائم' ), 'Listadmins' => array( 'عرض_الإداريين' ), 'Listbots' => array( 'عرض_البوتات' ), 'Popularpages' => array( 'صفحات_مشهورة' ), @@ -397,6 +412,9 @@ $specialPageAliases = array( 'DeletedContributions' => array( 'مساهمات_محذوفة' ), 'Tags' => array( 'وسوم' ), 'Activeusers' => array( 'مستخدمون_نشطون' ), + 'ComparePages' => array( 'مقارنة_الصفحات' ), + 'Badtitle' => array( 'عوان_سئ' ), + 'DisableAccount' => array( 'تعطيل_الحساب' ), ); /** @@ -430,8 +448,7 @@ $messages = array( 'tog-editsection' => 'مكن تعديل الأقسام عن طريق وصلات [عدل]', 'tog-editsectiononrightclick' => 'فعل تعديل الأقسام بواسطة كبسة الفأرة اليمين على عناوين الأقسام (جافاسكريبت)', 'tog-showtoc' => 'اعرض فهرس المحتويات (للصفحات التي تحتوي على أكثر من 3 عناوين)', -'tog-rememberpassword' => 'تذكر دخولي على هذا الحاسوب', -'tog-editwidth' => 'زد عرض صندوق التحرير لملء الشاشة كلها', +'tog-rememberpassword' => 'تذكر دخولي على هذا المتصفح (إلى {{PLURAL:$1||يوم واحد|يومين|$1 أيام|$1 يومًا|$1 يوم}} كحد أقصى)', 'tog-watchcreations' => 'أضف الصفحات التي أنشئها إلى قائمة مراقبتي', 'tog-watchdefault' => 'أضف الصفحات التي أعدلها إلى قائمة مراقبتي', 'tog-watchmoves' => 'أضف الصفحات التي أنقلها إلى قائمة مراقبتي', @@ -578,31 +595,21 @@ $messages = array( 'faqpage' => 'Project:أسئلة متكررة', # Vector skin -'vector-action-addsection' => 'أضف موضوعا', -'vector-action-delete' => 'احذف', -'vector-action-move' => 'انقل', -'vector-action-protect' => 'احم', -'vector-action-undelete' => 'استرجع الحذف', -'vector-action-unprotect' => 'أزل الحماية', -'vector-namespace-category' => 'تصنيف', -'vector-namespace-help' => 'صفحة مساعدة', -'vector-namespace-image' => 'ملف', -'vector-namespace-main' => 'صفحة', -'vector-namespace-media' => 'صفحة وسيط', -'vector-namespace-mediawiki' => 'رسالة', -'vector-namespace-project' => 'صفحة مشروع', -'vector-namespace-special' => 'صفحة خاصة', -'vector-namespace-talk' => 'نقاش', -'vector-namespace-template' => 'قالب', -'vector-namespace-user' => 'صفحة مستخدم', -'vector-view-create' => 'أنشئ', -'vector-view-edit' => 'عدل', -'vector-view-history' => 'اعرض التاريخ', -'vector-view-view' => 'اقرأ', -'vector-view-viewsource' => 'اعرض المصدر', -'actions' => 'أفعال', -'namespaces' => 'النطاقات', -'variants' => 'المتغيرات', +'vector-action-addsection' => 'أضف موضوعا', +'vector-action-delete' => 'احذف', +'vector-action-move' => 'انقل', +'vector-action-protect' => 'احم', +'vector-action-undelete' => 'استرجع الحذف', +'vector-action-unprotect' => 'أزل الحماية', +'vector-simplesearch-preference' => 'مكّن مقترحات البحث المُحسّنة (لواجهة فكتور فقط)', +'vector-view-create' => 'أنشئ', +'vector-view-edit' => 'عدل', +'vector-view-history' => 'اعرض التاريخ', +'vector-view-view' => 'اقرأ', +'vector-view-viewsource' => 'اعرض المصدر', +'actions' => 'أفعال', +'namespaces' => 'النطاقات', +'variants' => 'المتغيرات', 'errorpagetitle' => 'خطأ', 'returnto' => 'ارجع إلى $1.', @@ -663,6 +670,9 @@ $messages = array( من فضلك انتظر قليلا قبل أن تحاول الوصول إلى هذه الصفحة مجددا. $1', +'pool-timeout' => 'انتهاء الانتظار للقفل', +'pool-queuefull' => 'طابور الاقتراع ملئ', +'pool-errorunknown' => 'خطأ غير معروف', # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations). 'aboutsite' => 'عن {{SITENAME}}', @@ -832,7 +842,8 @@ $2', 'yourname' => 'اسم المستخدم:', 'yourpassword' => 'كلمة السر:', 'yourpasswordagain' => 'أعد كتابة كلمة السر:', -'remembermypassword' => 'تذكر دخولي على هذا الحاسوب', +'remembermypassword' => 'تذكر دخولي على هذا الحاسوب (إلى {{PLURAL:$1||يوم واحد|يومين|$1 أيام|$1 يومًا|$1 يوم}} كحد أقصى)', +'securelogin-stick-https' => 'ابقَ في اتصال HTTPS بعد الدخول.', 'yourdomainname' => 'نطاقك:', 'externaldberror' => 'هناك إما خطأ في دخول قاعدة البيانات الخارجية أو أنه غير مسموح لك بتحديث حسابك الخارجي.', 'login' => 'ادخل', @@ -849,6 +860,7 @@ $2', 'gotaccount' => "تمتلك حسابا بالفعل؟ '''$1'''.", 'gotaccountlink' => 'لُج', 'createaccountmail' => 'بواسطة البريد الإلكتروني', +'createaccountreason' => 'السبب:', 'badretype' => 'كلمات السر التي أدخلتها لا تتطابق.', 'userexists' => 'اسم المستخدم الذي تم إدخاله مستعمل بالفعل. اختر اسما مختلفا.', @@ -877,6 +889,7 @@ $2', من فضلك حاول مرة أخرى.', 'passwordtooshort' => 'يجب أن تتكون كلمة السر على الأقل من {{PLURAL:$1|حرف واحد|حرفين|$1 حروف|$1 حرفا|$1 حرف}}.', 'password-name-match' => 'يجب أن تكون كلمة المرور مختلفة عن اسم المستخدم.', +'password-login-forbidden' => 'تم منع استخدام اسم المستخدم هذا وكلمة السر.', 'mailmypassword' => 'أرسل لي كلمة سر جديدة', 'passwordremindertitle' => 'كلمة سر مؤقتة جديدة ل{{SITENAME}}', 'passwordremindertext' => 'لقد طلب شخص ما (غالبا أنت، من عنوان الآيبي $1) كلمة سر جديدة ل{{SITENAME}} ($4). @@ -917,6 +930,9 @@ $2', 'loginlanguagelabel' => 'اللغة: $1', 'suspicious-userlogout' => 'رفض طلب خروجك لأنه يبدو كأنه أرسل عن طريق متصفح معطوب أو وسيط تخزين.', +# E-mail sending +'php-mail-error-unknown' => "خطأ غير معروف في وظيفة البريد PHP's mail()", + # Password reset dialog 'resetpass' => 'تغيير كلمة السر', 'resetpass_announce' => 'تم تسجيل دخولك بكلمة سر مؤقتة. @@ -968,11 +984,12 @@ $2', 'showdiff' => 'أظهر التغييرات', 'anoneditwarning' => "'''تحذير:''' لم تقم بالدخول. سيسجل عنوان الآيبي خاصتك في تاريخ هذه الصفحة.", +'anonpreviewwarning' => "''أنت غير مسجل الدخول. الحفظ سيسجل عنوان الأيبي الخاص بك في تاريخ هذه الصفحة.''", 'missingsummary' => "'''تنبيه:''' لم تقم بكتابة ملخص للتعديل. إذا قمت بضغط حفظ الصفحة مرة أخرى، فيتم حفظ تعديلك بدون ملخص.", 'missingcommenttext' => 'من فضلك أدخل تعليقا في الأسفل.', 'missingcommentheader' => "'''تنبيه:''' لم تقم بوضع موضوع/عنوان لهذا التعليق. -إذا قمت بالضغط على حفظ الصفحة مجددا، سيتم حفظ تعليقك بدون عنوان.", +إذا قمت بالضغط على \"{{int:savearticle}}\" مجددا، سيتم حفظ تعليقك بدون عنوان.", 'summary-preview' => 'معاينة الملخص:', 'subject-preview' => 'معاينة للموضوع/العنوان:', 'blockedtitle' => 'المستخدم ممنوع', @@ -1046,8 +1063,12 @@ $2', لم يتم حفظها بعد!'''", 'userjspreview' => "'''تذكر أنك فقط تجرب/تعاين جافاسكربت.''' '''لم يتم الحفظ بعد!'''", +'sitecsspreview' => "''' تذكر أنك فقط في وضع المعاينة لهذا CSS ''' +''' ولم يتم حفظ الصفحة بعد! '''", +'sitejspreview' => "''' تذكر أنك فقط في وضع المعاينة لكود JavaScript هذا''' +''' ولم يتم حفظه بعد! '''", 'userinvalidcssjstitle' => "'''تحذير:''' لا توجد واجهة \"\$1\". -تذكر أن ملفات ال.css و ال.js تستخدم حروف صغيرة في العنوان ، كمثال {{ns:user}}:Foo/monobook.css و ليس {{ns:user}}:Foo/Monobook.css.", +تذكر أن ملفات ال.css و ال.js تستخدم حروف صغيرة في العنوان ، كمثال {{ns:user}}:Foo/vector.css و ليس {{ns:user}}:Foo/Vector.css.", 'updated' => '(محدثة)', 'note' => "'''ملاحظة:'''", 'previewnote' => "'''تذكر أن هذه مجرد معاينة للصفحة؛'''' @@ -1089,9 +1110,6 @@ $2', إذا لم تكن ترغب أن تعدل مشاركاتك بهذا الشكل، لا تضعها هنا.<br /> أنت تقر أيضا أنك كتبت هذا بنفسك، أو نسخته من مصدر يخضع للملكية العامة، أو مصدر حر آخر (انظر $1 للتفاصيل). '''لا تضف أي عمل ذي حقوق محفوظة بدون تصريح!'''", -'longpagewarning' => "'''تحذير:''' حجم الصفحة $1 كيلوبايت؛ -قد تواجه بعض المتصفحات مشاكل عند تحرير صفحات يزيد حجمها عن 32 كيلوبايت. -يرجى تقسيم الصفحة إلى أقسام أصغر.", 'longpageerror' => "'''خطأ: النص الذي أدخلته حجمه $1 كيلوبايت، وهذا أكبر من الحد الأقصى وهو $2 كيلوبايت. لا يمكن حفظه.'''", 'readonlywarning' => "'''تحذير: لقد أغلقت قاعدة البيانات للصيانة، لذلك لن تتمكن من حفظ التعديلات التي قمت بها حاليا. @@ -1272,6 +1290,8 @@ $1", 'logdelete-failure' => "'''تعذر ضبط رؤية السجل:''' $1", 'revdel-restore' => 'تغيير الرؤية', +'revdel-restore-deleted' => 'مراجعات محذوفة', +'revdel-restore-visible' => 'مراجعات مرئية', 'pagehist' => 'تاريخ الصفحة', 'deletedhist' => 'التاريخ المحذوف', 'revdelete-content' => 'محتوى', @@ -1342,11 +1362,13 @@ $1", # Diffs 'history-title' => 'تاريخ مراجعة "$1"', 'difference' => '(الفرق بين المراجعتين)', +'difference-multipage' => '(الفرق بين الصفحتين)', 'lineno' => 'سطر $1:', 'compareselectedversions' => 'قارن بين النسختين المختارتين', 'showhideselectedversions' => 'أظهر/أخف المراجعات المختارة', 'editundo' => 'تراجع', -'diff-multi' => '({{PLURAL:$1|مراجعة واحدة متوسطة|$1 مراجعة متوسطة}} غير معروضة.)', +'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة|مراجعتان متوسطتان غير معروضتان|$1 مراجعات متوسطة غير معروضة|$1 مراجعة متوسطة غير معروضة}} أجراها {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)', +'diff-multi-manyusers' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتان أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} أكثر من {{PLURAL:$2||مستخدم واحد|مستخدمين|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)', # Search results 'searchresults' => 'نتائج البحث', @@ -1381,6 +1403,7 @@ $1", 'searchprofile-everything-tooltip' => 'ابحث في كل المحتوى (شاملا صفحات النقاش)', 'searchprofile-advanced-tooltip' => 'ابحث في النطاقات المخصصة', 'search-result-size' => '$1 ({{PLURAL:$2|لا كلمات|كلمة واحدة|كلمتان|$2 كلمات|$2 كلمة}})', +'search-result-category-size' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوًا|$1 عضو}} ({{PLURAL:$2|لا تصانيف فرعية|تصنيف فرعي واحد|تصنيفان فرعيان|$2 تصنيفات فرعية|$2 تصنيفًا فرعيًا|$2 تصنيف فرعي}} و{{PLURAL:$3|لا ملفات|ملف واحد|ملفان|$3 ملفات|$3 ملفًا|$3 ملف}})', 'search-result-score' => 'الارتباط: $1%', 'search-redirect' => '(تحويلة $1)', 'search-section' => '(قسم $1)', @@ -1458,6 +1481,7 @@ $1", 'contextlines' => 'عدد الأسطر في كل نتيجة:', 'contextchars' => 'عدد الأحرف في كل سطر', 'stub-threshold' => 'الحد لتنسيق <a href="#" class="stub">وصلة البذرة</a>:', +'stub-threshold-disabled' => 'معطل', 'recentchangesdays' => 'عدد الأيام المعروضة في أحدث التغييرات:', 'recentchangesdays-max' => 'الحد الأقصى {{PLURAL:$1|أقل من يوم|يوم واحد|يومان|$1 أيام|$1 يوما|$1 يوم}}', 'recentchangescount' => 'عدد التعديلات الظاهرة مبدئيا:', @@ -1491,6 +1515,7 @@ $1", 'prefs-files' => 'ملفات', 'prefs-custom-css' => 'CSS مخصص', 'prefs-custom-js' => 'جافاسكربت مخصص', +'prefs-common-css-js' => 'CSS أو جافاسكربت مشتركة لجميع المظاهر:', 'prefs-reset-intro' => 'يمكنك استخدام هذه الصفحة لإعادة تفضيلاتك للحالة الافتراضية للموقع. لن تستطيع استرجاع الحالة السابقة.', 'prefs-emailconfirm-label' => 'تأكيد البريد الإلكتروني:', @@ -1529,9 +1554,15 @@ $1", 'prefs-advancedrendering' => 'خيارات متقدمة', 'prefs-advancedsearchoptions' => 'خيارات متقدمة', 'prefs-advancedwatchlist' => 'خيارات متقدمة', -'prefs-display' => 'خيارات العرض', +'prefs-displayrc' => 'خيارات العرض', +'prefs-displaysearchoptions' => 'خصائص العرض', +'prefs-displaywatchlist' => 'خصائص العرض', 'prefs-diffs' => 'فروقات', +# User preference: e-mail validation using jQuery +'email-address-validity-valid' => 'يبدو أن عنوان البريد الإلكتروني صالح', +'email-address-validity-invalid' => 'أدخل عنوان بريد إلكتروني صالح', + # User rights 'userrights' => 'إدارة صلاحيات المستخدم', 'userrights-lookup-user' => 'إدارة مجموعات المستخدم', @@ -1615,6 +1646,7 @@ $1", 'right-hideuser' => 'منع اسم مستخدم، مخفيا إياه عن العامة', 'right-ipblock-exempt' => 'تفادي عمليات منع الأيبي، المنع التلقائي ومنع النطاق', 'right-proxyunbannable' => 'تفادي عمليات المنع الأوتوماتيكية للبروكسيهات', +'right-unblockself' => 'رفع المنع عن أنفسهم', 'right-protect' => 'تغيير مستويات الحماية وتعديل الصفحات المحمية', 'right-editprotected' => 'تعديل الصفحات المحمية (بدون الحماية المضمنة)', 'right-editinterface' => 'تعديل واجهة المستخدم', @@ -1637,7 +1669,6 @@ $1", 'right-siteadmin' => 'غلق ورفع غلق قاعدة البيانات', 'right-reset-passwords' => 'إعادة ضبط كلمة السر للمستخدمين الآخرين', 'right-override-export-depth' => 'تصدير الصفحات متضمنة الصفحات الموصولة حتى عمق 5', -'right-versiondetail' => 'رؤية معلومات نسخة البرنامج الممتدة', 'right-sendemail' => 'إرسال رسائل بريد إلكتروني إلى مستخدمين آخرين', # User rights log @@ -1688,14 +1719,9 @@ $1", 'recentchanges-legend' => 'خيارات أحدث التغييرات', 'recentchangestext' => 'تابع آخر التغييرات في الويكي من هذه الصفحة.', 'recentchanges-feed-description' => 'تابع أحدث التغييرات للويكي عبر هذه التلقيمة.', -'recentchanges-label-legend' => 'المفتاح: $1.', -'recentchanges-legend-newpage' => '$1 - صفحة جديدة', 'recentchanges-label-newpage' => 'أنشأ هذا التعديل صفحة جديدة', -'recentchanges-legend-minor' => '$1 - تعديل طفيف', 'recentchanges-label-minor' => 'هذا تعديل طفيف', -'recentchanges-legend-bot' => '$1 - تعديل بوت', 'recentchanges-label-bot' => 'أجرى هذا التعديل بوت', -'recentchanges-legend-unpatrolled' => '$1 - تعديل غير مراجع', 'recentchanges-label-unpatrolled' => 'لم يراجع هذا التعديل إلى الآن', 'rcnote' => "بالأسفل {{PLURAL:$1|لا توجد تغييرات|التغيير الأخير|آخر تغييرين|آخر '''$1''' تغييرات|آخر '''$1''' تغييرا|آخر '''$1''' تغيير}} في {{PLURAL:$2||'''اليوم''' الماضي|'''اليومين''' الماضيين|ال'''$2''' أيام الماضية|ال'''$2''' يوما الماضيا|ال'''$2''' يوم الماضي}}، كما في $5، $4.", 'rcnotefrom' => "بالأسفل التغييرات منذ '''$2''' (إلى '''$1''' معروضة).", @@ -1743,6 +1769,9 @@ $1", 'upload_directory_missing' => 'مجلد الرفع ($1) مفقود ولم يمكن إنشاؤه بواسطة خادوم الوب.', 'upload_directory_read_only' => 'مجلد الرفع ($1) لا يمكن الكتابة عليه بواسطة خادوم الوب.', 'uploaderror' => 'خطأ في الرفع', +'upload-recreate-warning' => "'''تحذير: سبق حذف أو نقل ملف بهذا الاسم.''' + +سجلا الحذف والنقل لهذه الصفحة معروضان هنا للتيسير:", 'uploadtext' => "استخدم الاستمارة بالأسفل لرفع الملفات. لرؤية أو البحث في الملفات المرفوعة سابقا، راجع [[Special:FileList|قائمة الملفات المرفوعة]]، عمليات الرفع (وإعادة الرفع) مسجلة في [[Special:Log/upload|سجل الرفع]] وعمليات الحذف في [[Special:Log/delete|سجل الحذف]]. @@ -1778,6 +1807,17 @@ $1", 'filetype-banned-type' => "'''\".\$1\"''' ليس نوع ملف مسموح به. {{PLURAL:\$3|نوع الملف المسموح به هو|أنواع الملفات المسموح بها هي}} \$2.", 'filetype-missing' => 'الملف بدون امتداد (مثل ".jpg").', +'empty-file' => 'الملف الذي أرسلته كان فارغا.', +'file-too-large' => 'الملف الذي أرسلته كان كبيرا جدا.', +'filename-tooshort' => 'اسم الملف قصير جدا.', +'filetype-banned' => 'نوع الملف هذا ممنوع.', +'verification-error' => 'لم يجتز الملف تحقق صحة الملفات.', +'hookaborted' => 'التعديل الذي تحاول أن تقوم به أجهض من قبل تمديد هوك', +'illegal-filename' => 'لا يسمح باسم الملف هذا.', +'overwrite' => 'لا يسمح بالكتابة فوق ملف موجود.', +'unknown-error' => 'خطأ غير معروف حدث.', +'tmp-create-error' => 'تعذر إنشاء ملف مؤقت.', +'tmp-write-error' => 'خطأ أثناء كتابة الملف المؤقت.', 'large-file' => 'ينصح ألا تكون الملفات أكبر من $1؛ هذا الملف حجمه $2.', 'largefileserver' => 'حجم هذا الملف أكبر من المسموح به على هذا الخادوم.', 'emptyfile' => 'يبدو أن الملف الذي رفعته فارغ. @@ -1806,13 +1846,14 @@ $1", [[File:$1|thumb|center|$1]]', 'file-exists-duplicate' => 'هذا الملف مكرر {{PLURAL:$1|للملف|للملفات}} التالية:', 'file-deleted-duplicate' => 'ملف مطابق لهذه الملف ([[:$1]]) تم حذفه من قبل. ينبغي أن تتحقق من تاريخ الحذف لهذا الملف قبل المتابعة بإعادة رفعه.', -'successfulupload' => 'تم رفع الملف بنجاح', 'uploadwarning' => 'تحذير الرفع', 'uploadwarning-text' => 'من فضلك عدل وصف الملف أدناه وحاول مرة أخرى.', 'savefile' => 'احفظ الملف', 'uploadedimage' => 'رفع "[[$1]]"', 'overwroteimage' => 'رفع نسخة جديدة من "[[$1]]"', 'uploaddisabled' => 'تم تعطيل الرفع', +'copyuploaddisabled' => 'الرفع من مسار معطل.', +'uploadfromurl-queued' => 'رفعك قد أضيف إلى الطابور', 'uploaddisabledtext' => 'رفع الملفات معطل.', 'php-uploaddisabledtext' => 'رفع ملفات PHP معطل. من فضلك تحقق من إعدادات رفع الملفات.', 'uploadscripted' => 'هذا الملف يضم كود HTML أو كود آخر يمكن أن يفسره متصفح الوب بطريقة خاطئة.', @@ -1847,6 +1888,14 @@ JD # جينوبتيك MGP # بينتاكس PICT # متنوع #</pre> <!-- اترك هذا السطر تماما كما هو -->', +'upload-success-subj' => 'تم رفع الملف بنجاح', +'upload-success-msg' => 'مرفوعك من [$2] قد نجح، وهو متوفر هنا: [[:{{ns:file}}:$1]]', +'upload-failure-subj' => 'مشكلة رفع', +'upload-failure-msg' => 'توجد مشكلة في مرفوعك من [$2]: + +$1', +'upload-warning-subj' => 'تحذير رفع', +'upload-warning-msg' => 'ثمة مشكلة في مرفوعك من [$2]. يمكنك الرجوع إلى [[Special:Upload/stash/$1|نموذج الرفع]] لتصحيح المشكلة.', 'upload-proto-error' => 'بروتوكول غير صحيح', 'upload-proto-error-text' => 'الرفع عن بعد يتطلب مسارا يبدأ بـ <code>http://</code> أو <code>ftp://</code>.', @@ -1913,6 +1962,7 @@ PICT # متنوع 'listfiles_search_for' => 'ابحث عن اسم الميديا:', 'imgfile' => 'ملف', 'listfiles' => 'قائمة الملفات', +'listfiles_thumb' => 'تصغير', 'listfiles_date' => 'تاريخ', 'listfiles_name' => 'اسم', 'listfiles_user' => 'مستخدم', @@ -1958,6 +2008,7 @@ PICT # متنوع 'shared-repo-from' => 'من $1', 'shared-repo' => 'مستودع مشترك', 'shared-repo-name-wikimediacommons' => 'ويكيميديا كومنز', +'filepage.css' => '/* CSS المعروض هنا سيضمن في صفحات وصف الملفات، أيضا على الويكيات الأجنبية */', # File reversion 'filerevert' => 'استرجع $1', @@ -2029,8 +2080,8 @@ PICT # متنوع 'statistics-edits' => 'تعديلات الصفحات منذ تنصيب {{SITENAME}}', 'statistics-edits-average' => 'متوسط التعديلات لكل صفحة', 'statistics-views-total' => 'إجمالي المشاهدات', +'statistics-views-total-desc' => 'مشاهدات الصفحات غير الموجودة والصفحات الخاصة غير مشمولة.', 'statistics-views-peredit' => 'المشاهدات لكل تعديل', -'statistics-jobqueue' => 'طول [http://www.mediawiki.org/wiki/Manual:Job_queue طابور الشغل]', 'statistics-users' => '[[Special:ListUsers|مستخدمون]] مسجلون', 'statistics-users-active' => 'مستخدمون نشطون', 'statistics-users-active-desc' => 'المستخدمون الذين قاموا بفعل في آخر {{PLURAL:$1|يوم|$1 يوم}}', @@ -2045,7 +2096,7 @@ PICT # متنوع 'doubleredirects' => 'تحويلات مزدوجة', 'doubleredirectstext' => 'هذه الصفحة تعرض الصفحات التي تحول إلى صفحات تحويل أخرى. كل سطر يحتوي على وصلات للتحويلة الأولى والثانية وهدف التحويلة الثانية، والذي عادة ما يشير إلى صفحة الهدف "الحقيقية"، التي من المفترض أن تحول إليها التحويلة الأولى. -المدخلات <s>المشطوبة</s> صححت.', +المدخلات <del>المشطوبة</del> صححت.', 'double-redirect-fixed-move' => '[[$1]] تم نقلها، هي الآن تحويلة إلى [[$2]]', 'double-redirect-fixer' => 'مصلح التحويل', @@ -2068,6 +2119,8 @@ PICT # متنوع 'nmembers' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوا|$1 عضو}}', 'nrevisions' => '{{PLURAL:$1|تعديل وحيد|تعديلان|$1 تعديلات|$1 تعديل|$1 تعديلا}}', 'nviews' => '{{PLURAL:$1|مشاهدة واحدة|مشاهدتان|$1 مشاهدات|$1 مشاهدة}}', +'nimagelinks' => 'مستخدم في {{PLURAL:$1||صفحة واحدة|صفحتين|$1 صفحات|$1 صفحة}}', +'ntransclusions' => 'مستخدم في {{PLURAL:$1||صفحة واحدة|صفحتين|$1 صفحات|$1 صفحة}}', 'specialpage-empty' => 'لا توجد نتائج لهذا التقرير.', 'lonelypages' => 'صفحات يتيمة', 'lonelypagestext' => 'الصفحات التالية غير موصولة من أو مضمنة في الصفحات الأخرى في {{SITENAME}}.', @@ -2226,34 +2279,40 @@ PICT # متنوع 'listgrouprights-removegroup-self-all' => 'يمكنه إزالة كل المجموعات من حسابه الخاص', # E-mail user -'mailnologin' => 'لا يوجد عنوان للإرسال', -'mailnologintext' => 'يجب أن تقوم [[Special:UserLogin|بتسجيل الدخول]] وإدخال بريد إلكتروني صالح في صفحة [[Special:Preferences|التفضيلات]] لتتمكن من إرسال الرسائل لمستخدمين آخرين.', -'emailuser' => 'إرسال رسالة لهذا المستخدم', -'emailpage' => 'إرسال رسالة للمستخدم', -'emailpagetext' => 'يمكنك استخدام الاستمارة بالأسفل لإرسال رسالة بريد إلكتروني إلى هذا المستخدم. +'mailnologin' => 'لا يوجد عنوان للإرسال', +'mailnologintext' => 'يجب أن تقوم [[Special:UserLogin|بتسجيل الدخول]] وإدخال بريد إلكتروني صالح في صفحة [[Special:Preferences|التفضيلات]] لتتمكن من إرسال الرسائل لمستخدمين آخرين.', +'emailuser' => 'إرسال رسالة لهذا المستخدم', +'emailpage' => 'إرسال رسالة للمستخدم', +'emailpagetext' => 'يمكنك استخدام الاستمارة بالأسفل لإرسال رسالة بريد إلكتروني إلى هذا المستخدم. عنوان البريد الإلكتروني الذي قمت أنت بإدخاله في [[Special:Preferences|تفضيلاتك]]، سيظهر كعنوان المرسل في البريد الإلكتروني، حتى يصبح المتلقي قادرا على الرد عليك مباشرة.', -'usermailererror' => 'جسم البريد أرجع خطأ:', -'defemailsubject' => 'رسالة من {{SITENAME}}', -'noemailtitle' => 'لا يوجد عنوان بريد إلكتروني', -'noemailtext' => 'لم يحدد هذا المستخدم عنوان بريد إلكتروني صحيح.', -'nowikiemailtitle' => 'لا بريد إلكتروني مسموح به', -'nowikiemailtext' => 'هذا المستخدم اختار ألا يستقبل البريد الإلكتروني من المستخدمين الآخرين.', -'email-legend' => 'إرسال بريد إلكتروني إلى مستخدم {{SITENAME}} آخر', -'emailfrom' => 'من:', -'emailto' => 'إلى:', -'emailsubject' => 'الموضوع:', -'emailmessage' => 'الرسالة:', -'emailsend' => 'أرسل', -'emailccme' => 'أرسل لي بنسخة من رسالتي.', -'emailccsubject' => 'نسخة من رسالتك إلى $1: $2', -'emailsent' => 'تم إرسال البريد الإلكتروني', -'emailsenttext' => 'تم إرسال رسالتك الإلكترونية.', -'emailuserfooter' => 'هذا البريد الإلكتروني تم إرساله بواسطة $1 إلى $2 بواسطة وظيفة "مراسلة المستخدم" في {{SITENAME}}.', +'usermailererror' => 'جسم البريد أرجع خطأ:', +'defemailsubject' => 'رسالة من {{SITENAME}}', +'usermaildisabled' => 'بريد المستخدم الإلكتروني معطل', +'usermaildisabledtext' => 'لا يمكنك إرسال بريد إلكتروني إلى مستخدمين آخرين على هذه الويكي', +'noemailtitle' => 'لا يوجد عنوان بريد إلكتروني', +'noemailtext' => 'لم يحدد هذا المستخدم عنوان بريد إلكتروني صحيح.', +'nowikiemailtitle' => 'لا بريد إلكتروني مسموح به', +'nowikiemailtext' => 'هذا المستخدم اختار ألا يستقبل البريد الإلكتروني من المستخدمين الآخرين.', +'email-legend' => 'إرسال بريد إلكتروني إلى مستخدم {{SITENAME}} آخر', +'emailfrom' => 'من:', +'emailto' => 'إلى:', +'emailsubject' => 'الموضوع:', +'emailmessage' => 'الرسالة:', +'emailsend' => 'أرسل', +'emailccme' => 'أرسل لي بنسخة من رسالتي.', +'emailccsubject' => 'نسخة من رسالتك إلى $1: $2', +'emailsent' => 'تم إرسال البريد الإلكتروني', +'emailsenttext' => 'تم إرسال رسالتك الإلكترونية.', +'emailuserfooter' => 'هذا البريد الإلكتروني تم إرساله بواسطة $1 إلى $2 بواسطة وظيفة "مراسلة المستخدم" في {{SITENAME}}.', + +# User Messenger +'usermessage-summary' => 'ترك رسالة نظام.', +'usermessage-editor' => 'مراسل النظام', # Watchlist 'watchlist' => 'قائمة مراقبتي', 'mywatchlist' => 'قائمة مراقبتي', -'watchlistfor' => "(ل'''$1''')", +'watchlistfor2' => 'ل$1 $2', 'nowatchlist' => 'لا توجد مدخلات في قائمة مراقبتك.', 'watchlistanontext' => 'الرجاء $1 لعرض أو تعديل الصفحات في قائمة مراقبتك.', 'watchnologin' => 'غير مسجل', @@ -2295,32 +2354,32 @@ PICT # متنوع 'enotif_lastvisited' => 'انظر $1 لكل التغييرات منذ زيارتك الأخيرة.', 'enotif_lastdiff' => 'انظر $1 لرؤية هذا التغيير.', 'enotif_anon_editor' => 'مستخدم مجهول $1', -'enotif_body' => 'عزيزي $WATCHINGUSERNAME، - -$CHANGEDORCREATED صفحة $PAGETITLE في {{SITENAME}} من قبل $PAGEEDITOR، لرؤية النسخة الحالية من الصفحة راجع: $PAGETITLE_URL. +'enotif_body' => 'عزيزي $ WATCHINGUSERNAMEE +صفحة $PAGETITLE قد $ CHANGEDORCREATEDفي $PAGEEDITDATE ب$PAGEEDITOR, انظر$PAGETITLE_URL للمراجعة الحالية +موجز للمحرر: $PAGESUMMARY $PAGEMINOREDIT -$NEWPAGE -ملخص تعديل المحرر: $PAGESUMMARY $PAGEMINOREDIT +الاتصال بالمحرر: + البريد: $PAGEEDITOR_EMAIL + ويكي: $PAGEEDITOR_WIKI -اتصل بالمحرر: -عبر بريد إلكتروني: $PAGEEDITOR_EMAIL -عبر الويكي: $PAGEEDITOR_WIKI +لن يكون هناك لا إخطارات أخرى في حالة حدوث مزيد من التغييرات إلا إذا قمت بزيارة هذه الصفحة. +يمكن أيضا تعيين إشارات الإعلام لجميع صفحات شاهد على هيئة الرصد الخاصة بك. -لن يكون هنالك أي إخطارات أخرى عن أية تغييرات تتم في المستقبل إلا إذا زرت هذه الصفحة. -يمكنك أيضا أن تعيد تصفير عداد الإخطارات لجميع الصفحات التي تراقبها في قائمة مراقبتك. - - نظام إخطار {{SITENAME}} الودود + {{SITENAME}} إعلام النظام الخاص بك ودية -- -لتغيير إعدادات قائمة مراقبتك، اذهب إلى: -{{fullurl:{{#special:Watchlist}}/edit}} +لتغيير إعدادات إعلام البريد الإلكتروني الخاص بك، قم بزيارة +{{fullurl: {{# الخاص: تفضيلات}}}} + +لتغيير إعدادات الرصد الخاصة بك، قم بزيارة +{{fullurl: {{# الخاص: الرصد}}/تحرير}} -لحذف الصفحة من قائمة مراقبتك، زر -$UNWATCHURL +لحذف الصفحة من هيئة الرصد الخاصة بك، قم بزيارة +$ أونواتشورل -للاقتراحات وللحصول على مساعدة إضافية: -{{fullurl:{{MediaWiki:Helppage}}}}', +التغذية المرتدة، والحصول على مساعدة إضافية: +{{fullurl: {{MediaWiki:Helppage}}}}', # Delete 'deletepage' => 'حذف الصفحة', @@ -2374,7 +2433,10 @@ $UNWATCHURL 'revertpage-nouser' => 'استرجع التعديلات بواسطة (اسم المستخدم تمت إزالته) حتى آخر نسخة بواسطة [[User:$1|$1]]', 'rollback-success' => 'استرجع تعديلات $1؛ استرجع حتى آخر نسخة بواسطة $2.', -'sessionfailure' => 'يبدو أنه هناك مشكلة في هذه جلسة الدخول الخاصة بك؛ + +# Edit tokens +'sessionfailure-title' => 'فشل في الجلسة', +'sessionfailure' => 'يبدو أنه هناك مشكلة في هذه جلسة الدخول الخاصة بك؛ لذلك فقد ألغيت هذه العملية كإجراء احترازي ضد الاختراق. من فضلك اضغط على مفتاح "رجوع" لتحميل الصفحة التي جئت منها، ثم حاول مرة أخرى.', @@ -2511,19 +2573,23 @@ $1', 'month' => 'من شهر (وأقدم):', 'year' => 'من سنة (وأقدم):', -'sp-contributions-newbies' => 'اعرض مساهمات الحسابات الجديدة فقط', -'sp-contributions-newbies-sub' => 'للحسابات الجديدة', -'sp-contributions-newbies-title' => 'مساهمات المستخدم للحسابات الجديدة', -'sp-contributions-blocklog' => 'سجل المنع', -'sp-contributions-deleted' => 'مساهمات المستخدم المحذوفة', -'sp-contributions-logs' => 'سجلات', -'sp-contributions-talk' => 'نقاش', -'sp-contributions-userrights' => 'إدارة صلاحيات المستخدم', -'sp-contributions-blocked-notice' => 'هذا المستخدم ممنوع حاليا. +'sp-contributions-newbies' => 'اعرض مساهمات الحسابات الجديدة فقط', +'sp-contributions-newbies-sub' => 'للحسابات الجديدة', +'sp-contributions-newbies-title' => 'مساهمات المستخدم للحسابات الجديدة', +'sp-contributions-blocklog' => 'سجل المنع', +'sp-contributions-deleted' => 'مساهمات المستخدم المحذوفة', +'sp-contributions-uploads' => 'مرفوعات', +'sp-contributions-logs' => 'سجلات', +'sp-contributions-talk' => 'نقاش', +'sp-contributions-userrights' => 'إدارة صلاحيات المستخدم', +'sp-contributions-blocked-notice' => 'هذا المستخدم ممنوع حاليا. إن آخر مدخلة في سجل المنع موجودة أدناه كمرجع:', -'sp-contributions-search' => 'بحث عن مساهمات', -'sp-contributions-username' => 'عنوان أيبي أو اسم مستخدم:', -'sp-contributions-submit' => 'ابحث', +'sp-contributions-blocked-notice-anon' => 'عنوان الأيبي هذا ممنوع حاليا. +آخر مدخلة لسجل المنع معروضة هنا كمرجع:', +'sp-contributions-search' => 'بحث عن مساهمات', +'sp-contributions-username' => 'عنوان أيبي أو اسم مستخدم:', +'sp-contributions-toponly' => 'أظهر أعلى المراجعات فقط', +'sp-contributions-submit' => 'ابحث', # What links here 'whatlinkshere' => 'ماذا يصل هنا', @@ -2585,7 +2651,6 @@ $1', 'ipb-edit-dropdown' => 'عدل أسباب المنع', 'ipb-unblock-addr' => 'رفع منع $1', 'ipb-unblock' => 'رفع المنع عن مستخدم أو عنوان أيبي', -'ipb-blocklist-addr' => 'عمليات المنع الموجودة ل$1', 'ipb-blocklist' => 'عرض حالات المنع الحالية', 'ipb-blocklist-contribs' => 'مساهمات $1', 'unblockip' => 'رفع المنع عن المستخدم', @@ -2662,6 +2727,8 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟', لا يمكنك إنشاء حساب.', 'cant-block-while-blocked' => 'أنت لا يمكنك منع المستخدمين الآخرين بينما أنت ممنوع.', 'cant-see-hidden-user' => 'المستخدم الذي تحاول منعه تم منعه مسبقا وإخفائه. بما أنك لا تمتلك صلاحية إخفاء المستخدم ، لا يمكنك مشاهدة المنع أو تعديله.', +'ipbblocked' => 'لا يمكنك منع أو رفع منع مستخدمين آخرين لأنك ممنوع', +'ipbnounblockself' => 'لا يسمح لك برفع المنع عن نفسك', # Developer tools 'lockdb' => 'قفل قاعدة البيانات', @@ -2699,6 +2766,18 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟', '''تحذير!''' هذا قد يكون تغييرا كارثيا وغير متوقع لصفحة مشهورة؛ من فضلك تأكد من فهم عواقب هذا قبل المتابعة.", +'movepagetext-noredirectfixer' => "باستخدام الاستمارة بالأسفل بإمكانك أن تغير اسم الصفحة، وأن تنقل تاريخها للاسم الجديد. +العنوان القديم سيصبح تحويلة للعنوان الجديد. +يمكنك تحديث التحويلات التي تشير إلى العنوان الأصلي تلقائيا. +لو اخترت ألا تفعل، تأكد من عدم وجود تحويلات [[Special:DoubleRedirects|مزدوجة]] أو [[Special:BrokenRedirects|مكسورة]]. +أنت مسؤول عن التأكد من أن الوصلات تتصل مع بعضها بشكل مناسب. + +لاحظ أنه '''لن يتم''' نقل الصفحة إذا كان هناك صفحة بنفس العنوان الجديد، إلا إذا كانت فارغة، أو تحويلة ولا تاريخ لها. +هذا يعني أنك يمكنك استرجاع الصفحة لمكانها لو قمت بخطأ، وأنك لا يمكنك الكتابة على صفحة موجودة. + +'''تحذير!''' +هذا قد يكون تغييرا كارثيا وغير متوقع لصفحة مشهورة؛ +من فضلك تأكد من فهم عواقب هذا قبل المتابعة", 'movepagetalktext' => "صفحة النقاش المرفقة سيتم نقلها كذلك، '''إلا في حالة''': * توجد صفحة نقاش غير فارغة تحت العنوان الجديد، أو * قمت بإزالة اختيار الصندوق بالأسفل. @@ -2756,6 +2835,7 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟', 'immobile-source-page' => 'هذه الصفحة غير قابلة للنقل.', 'immobile-target-page' => 'غير قادر على النقل إلى العنوان الوجهة هذا.', 'imagenocrossnamespace' => 'لا يمكن نقل الملف إلى نطاق غير نطاق الملفات', +'nonfile-cannot-move-to-file' => 'لا يمكن نقل غير الملفات إلى نطاق الملفات', 'imagetypemismatch' => 'امتداد الملف الجديد لا يطابق نوعه', 'imageinvalidfilename' => 'اسم الملف الهدف غير صحيح', 'fix-double-redirects' => 'حدث أي تحويلات تشير إلى العنوان الأصلي', @@ -2835,6 +2915,7 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟', 'importstart' => 'استيراد صفحات...', 'import-revision-count' => '{{PLURAL:$1|لا مراجعات|مراجعة واحدة|مراجعتان|$1 مراجعات|$1 مراجعة}}', 'importnopages' => 'لا صفحات للاستيراد', +'imported-log-entries' => 'استورد {{PLURAL:$1||مدخلة سجل واحدة|مدخلتي سجل|$1 مدخلات سجل|$1 مدخل سجل}}.', 'importfailed' => 'فشل الاستيراد: <nowiki>$1</nowiki>', 'importunknownsource' => 'نوع مصدر استيراد مجهول', 'importcantopen' => 'لم يمكن فتح ملف الاستيراد', @@ -2931,6 +3012,8 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟', 'tooltip-upload' => 'ابدأ الرفع', 'tooltip-rollback' => '"استرجاع" تسترجع التعديل (التعديلات) في هذه الصفحة للمساهم الأخير بضغطة واحدة.', 'tooltip-undo' => '"رجوع" تسترجع هذا التعديل وتفتح نافذة التعديل في نمط العرض المسبق. تسمح بإضافة سبب في الملخص.', +'tooltip-preferences-save' => 'احفظ التغييرات', +'tooltip-summary' => 'أدخل ملخصا قصيرا', # Stylesheets 'common.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على كل الواجهات */', @@ -3062,14 +3145,17 @@ $1', 'imagemaxsize' => "حد حجم الصور:<br />''(لصفحات وصف الملفات)''", 'thumbsize' => 'حجم العرض المصغر:', 'widthheightpage' => '$1×$2، $3 {{PLURAL:$3|صفحة|صفحة}}', -'file-info' => '(حجم الملف: $1، نوع MIME: $2)', -'file-info-size' => '($1 × $2 بكسل حجم الملف: $3، نوع MIME: $4)', +'file-info' => 'حجم الملف: $1، نوع MIME: $2', +'file-info-size' => '$1 × $2 بكسل حجم الملف: $3، نوع MIME: $4', 'file-nohires' => '<small>لا توجد دقة أعلى متوفرة.</small>', -'svg-long-desc' => '(ملف SVG، أبعاده $1 × $2 بكسل، حجم الملف: $3)', +'svg-long-desc' => 'ملف SVG، أبعاده $1 × $2 بكسل، حجم الملف: $3', 'show-big-image' => 'دقة كاملة', 'show-big-image-thumb' => '<small>حجم هذا العرض: $1 × $2 بكسل</small>', 'file-info-gif-looped' => 'ملفوف', 'file-info-gif-frames' => '{{PLURAL:$1||إطار واحد|إطاران|$1 إطارات|$1 إطارا|$1 إطار}}', +'file-info-png-looped' => 'ملفوف', +'file-info-png-repeat' => 'عرضت {{PLURAL:$1||مرة واحدة|مرتين|$1 مرات|$1 مرة}}', +'file-info-png-frames' => '{{PLURAL:$1||إطار واحد|إطاران|$1 إطارات|$1 إطارًا|$1 إطار}}', # Special:NewFiles 'newimages' => 'معرض الملفات الجديدة', @@ -3166,9 +3252,9 @@ $1', 'exif-spectralsensitivity' => 'الحساسية الطيفية', 'exif-isospeedratings' => 'تقييم سرعة أيزو', 'exif-oecf' => 'عامل التحويل الكهروضوئي', -'exif-shutterspeedvalue' => 'سرعة الغالق', -'exif-aperturevalue' => 'فتحة الغالق', -'exif-brightnessvalue' => 'السطوع', +'exif-shutterspeedvalue' => 'سرعة الغالق APEX', +'exif-aperturevalue' => 'فتحة الغالق APEX', +'exif-brightnessvalue' => 'سطوع APEX', 'exif-exposurebiasvalue' => 'تعويض التعرض', 'exif-maxaperturevalue' => 'أقصى غالق أرضي', 'exif-subjectdistance' => 'مسافة الجسم', @@ -3233,6 +3319,7 @@ $1', 'exif-gpsareainformation' => 'اسم مساحة GPS', 'exif-gpsdatestamp' => 'تاريخ GPS', 'exif-gpsdifferential' => 'تصحيح GPS التفاضلي', +'exif-objectname' => 'عنوان قصير', # EXIF attributes 'exif-compression-1' => 'غير مضغوط', @@ -3334,7 +3421,7 @@ $1', 'exif-sensingmethod-7' => 'مستشعر خطي ثلاثي', 'exif-sensingmethod-8' => 'مستشعر لون خطي متتابع', -'exif-filesource-3' => 'دي إس سي', +'exif-filesource-3' => 'كاميرا رقمية واقفة', 'exif-scenetype-1' => 'صورة ملتقطة بشكل مباشر', @@ -3412,31 +3499,31 @@ $1', 'limitall' => 'الكل', # E-mail address confirmation -'confirmemail' => 'تأكيد عنوان البريد الإلكتروني', -'confirmemail_noemail' => 'ليس لديك عنوان بريد إلكتروني صحيح مسجل في [[Special:Preferences|تفضيلاتك]].', -'confirmemail_text' => '{{SITENAME}} يتطلب تأكيد عنوانك الإلكتروني قبل استخدام خصائص البريد الإلكتروني. +'confirmemail' => 'تأكيد عنوان البريد الإلكتروني', +'confirmemail_noemail' => 'ليس لديك عنوان بريد إلكتروني صحيح مسجل في [[Special:Preferences|تفضيلاتك]].', +'confirmemail_text' => '{{SITENAME}} يتطلب تأكيد عنوانك الإلكتروني قبل استخدام خصائص البريد الإلكتروني. اضغط على زر التفعيل بالأسفل ليتم إرسال رسالة تأكيد لعنوانك. ستتضمن الرسالة رمز تفعيل؛ اضغط على الوصلة التي تحتوي الرمز لتأكيد أن عنوانك الإلكتروني صحيح.', -'confirmemail_pending' => 'تم إرسال كود التأكيد بالفعل من قبل إلى بريدك الإلكتروني؛ +'confirmemail_pending' => 'تم إرسال كود التأكيد بالفعل من قبل إلى بريدك الإلكتروني؛ إذا كان حسابك قد تم عمله حالا، ربما يجب أن تنتظر بضع دقائق قبل طلبك لكود آخر.', -'confirmemail_send' => 'أرسل كود تأكيد', -'confirmemail_sent' => 'تم إرسال رسالة التأكيد، شكرا لك.', -'confirmemail_oncreate' => 'تم إرسال كود تأكيد لعنوان بريدك الإلكتروني. +'confirmemail_send' => 'أرسل كود تأكيد', +'confirmemail_sent' => 'تم إرسال رسالة التأكيد، شكرا لك.', +'confirmemail_oncreate' => 'تم إرسال كود تأكيد لعنوان بريدك الإلكتروني. لا يشترط أن تستخدم الكود للدخول للموسوعة باسمك، ولكن يجب أن تقوم بإدخاله قبل استخدامك أيا من خواص البريد الإلكتروني المستخدمة هنا في الويكي.', -'confirmemail_sendfailed' => 'لم يتمكن {{SITENAME}} من إرسال رسالة التأكيد إليك. +'confirmemail_sendfailed' => 'لم يتمكن {{SITENAME}} من إرسال رسالة التأكيد إليك. من فضلك التمس عنوان بريدك الإلكتروني باحثا عن حروف غير صحيحة. أرجع خادم البريد: $1', -'confirmemail_invalid' => 'كود تأكيد غير صحيح. +'confirmemail_invalid' => 'كود تأكيد غير صحيح. ربما انتهت فترة صلاحيته.', -'confirmemail_needlogin' => 'يجب عليك $1 لتأكيد بريدك الإلكتروني.', -'confirmemail_success' => 'تم تأكيد بريدك الإلكتروني. +'confirmemail_needlogin' => 'يجب عليك $1 لتأكيد بريدك الإلكتروني.', +'confirmemail_success' => 'تم تأكيد بريدك الإلكتروني. يمكنك الآن [[Special:UserLogin|الدخول]] والتمتع بالويكي.', -'confirmemail_loggedin' => 'بريدك الإلكتروني تم تأكيده الآن.', -'confirmemail_error' => 'ثمة شيء خطأ عند محاولة حفظ تأكيدك.', -'confirmemail_subject' => 'رسالة تأكيد البريد من {{SITENAME}}', -'confirmemail_body' => 'شخص ما، من المحتمل أن يكون أنت، من عنوان الأيبي $1، +'confirmemail_loggedin' => 'بريدك الإلكتروني تم تأكيده الآن.', +'confirmemail_error' => 'ثمة شيء خطأ عند محاولة حفظ تأكيدك.', +'confirmemail_subject' => 'رسالة تأكيد البريد من {{SITENAME}}', +'confirmemail_body' => 'شخص ما، من المحتمل أن يكون أنت، من عنوان الأيبي $1، سجل حسابا "$2" بعنوان البريد الإلكتروني هذا في {{SITENAME}}. لتأكيد أن هذا الحساب ينتمي إليك فعلا وتفعيل خواص البريد الإلكتروني في {{SITENAME}}، افتح هذه الوصلة في متصفحك : @@ -3449,8 +3536,38 @@ $3 $5 كود التفعيل هذا سينتهي في $4.', -'confirmemail_invalidated' => 'تأكيد عنوان البريد الإلكتروني تم إلغاؤه', -'invalidateemail' => 'إلغاء تأكيد البريد الإلكتروني', +'confirmemail_body_changed' => 'شخص ما -من المحتمل أن يكون أنت- من عنوان الأيبي $1 غيّر عنوان البريد +الإلكتروني للحساب "$2" إلى عنوان البريد الإلكتروني هذا في +{{SITENAME}}. + +لتأكيد أن هذا الحساب لك فعلا ولتفعيل خواص البريد الإلكتروني في +{{SITENAME}}، افتح هذه الوصلة في متصفحك: + +$3 + +إذا كان هذا الحساب *ليس* لك، اتبع هذه الوصلة لإلغاء تأكيد عنوان البريد +الإلكتروني: + +$5 + +سينتهي رمز التفعيل هذا في $4.', +'confirmemail_body_set' => 'شخص ما -من المحتمل أن يكون أنت- من عنوان الأيبي $1 غيّر عنوان البريد +الإلكتروني للحساب "$2" إلى عنوان البريد الإلكتروني هذا في +{{SITENAME}}. + +لتأكيد أن هذا الحساب لك فعلا ولتفعيل خواص البريد الإلكتروني في +{{SITENAME}}، افتح هذه الوصلة في متصفحك: + +$3 + +إذا كان هذا الحساب *ليس* لك، اتبع هذه الوصلة لإلغاء تأكيد عنوان البريد +الإلكتروني: + +$5 + +سينتهي رمز التفعيل هذا في $4.', +'confirmemail_invalidated' => 'تأكيد عنوان البريد الإلكتروني تم إلغاؤه', +'invalidateemail' => 'إلغاء تأكيد البريد الإلكتروني', # Scary transclusion 'scarytranscludedisabled' => '[التضمين بالإنترويكي معطل]', @@ -3496,6 +3613,7 @@ $1', 'table_pager_first' => 'الصفحة الأولى', 'table_pager_last' => 'الصفحة الأخيرة', 'table_pager_limit' => 'اعرض $1 مدخلة في الصفحة', +'table_pager_limit_label' => 'العناصر لكل صفحة:', 'table_pager_limit_submit' => 'اذهب', 'table_pager_empty' => 'لا نتائج', @@ -3620,6 +3738,7 @@ $1', 'version-specialpages' => 'صفحات خاصة', 'version-parserhooks' => 'خطاطيف المحلل', 'version-variables' => 'المتغيرات', +'version-skins' => 'واجهات', 'version-other' => 'أخرى', 'version-mediahandlers' => 'متحكمات الميديا', 'version-hooks' => 'الخطاطيف', @@ -3632,6 +3751,13 @@ $1', 'version-version' => '(نسخة $1)', 'version-svn-revision' => '(&رلم;r$2)', 'version-license' => 'الرخصة', +'version-poweredby-credits' => "تدار هذه الويكي ب'''[http://www.mediawiki.org/ ميدياويكي]''', حقوق النشر © 2001-$1 $2.", +'version-poweredby-others' => 'آخرون', +'version-license-info' => "ميدياويكي برنامج حر، يحق لك توزيعه و/أو تعديله وفقاً لبنود رخصة غنو العمومية كما نشرتها مؤسسة البرمجيات الحرة، الإصدار الثاني أو (وفقا لاختيارك أنت) أي إصدار لاحق. + +هذا البرنامج يوزع على أمل أن يكون مفيداً، ولكن '''دون أية ضمانات'''، بما في ذلك ضمانات '''التسويق''' أو '''الملاءمة لغرض معين'''. انظر رخصة غنو العمومية لمزيد من التفاصيل. + +ينبغي أن تكون قد تلقيت نسخة من رخصة غنو العمومية إذا لم يتم ذلك، اكتب إلى: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA أو [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html اقرأ على الإنترنت].", 'version-software' => 'البرنامج المثبت', 'version-software-product' => 'المنتج', 'version-software-version' => 'النسخة', @@ -3702,6 +3828,15 @@ $1', 'tags-edit' => 'عدل', 'tags-hitcount' => '$1 {{PLURAL:$1|تغيير|تغيير}}', +# Special:ComparePages +'comparepages' => 'قارن صفحات', +'compare-selector' => 'قارن مراجعات الصفحة', +'compare-page1' => 'صفحة 1', +'compare-page2' => 'صفحة 2', +'compare-rev1' => 'مراجعة 1', +'compare-rev2' => 'مراجعة 2', +'compare-submit' => 'قارن', + # Database error messages 'dberr-header' => 'هذا الويكي به مشكلة', 'dberr-problems' => 'عذرا! هذا الموقع يعاني من صعوبات تقنية.', @@ -3718,8 +3853,13 @@ $1', 'htmlform-float-invalid' => 'القيمة التي حددتها ليست عددا.', 'htmlform-int-toolow' => 'القيمة التي حددتها أقل من الحد الأدنى وهو $1', 'htmlform-int-toohigh' => 'القيمة التي حددتها أكبر من الحد الأقصى وهو $1', +'htmlform-required' => 'هذه القيمة مطلوبة', 'htmlform-submit' => 'أرسل', 'htmlform-reset' => 'الرجوع عن التغييرات', 'htmlform-selectorother-other' => 'أخرى', +# SQLite database support +'sqlite-has-fts' => '$1 بدعم البحث في كامل النص', +'sqlite-no-fts' => '$1 بدون دعم البحث في كامل النص', + ); diff --git a/languages/messages/MessagesArc.php b/languages/messages/MessagesArc.php index 40238ca9..05d8484f 100644 --- a/languages/messages/MessagesArc.php +++ b/languages/messages/MessagesArc.php @@ -14,6 +14,31 @@ * @author The Thadman */ +$namespaceNames = array( + NS_MEDIA => 'ܡܝܕܝܐ', + NS_SPECIAL => 'ܕܝܠܢܝܐ', + NS_MAIN => '', + NS_TALK => 'ܡܡܠܠܐ', + NS_USER => 'ܡܦܠܚܢܐ', + NS_USER_TALK => 'ܡܡܠܠܐ_ܕܡܦܠܚܢܐ', + NS_PROJECT_TALK => 'ܡܡܠܠܐ_ܕ$1', + NS_FILE => 'ܠܦܦܐ', + NS_FILE_TALK => 'ܡܡܠܠܐ_ܕܠܦܦܐ', + NS_MEDIAWIKI => 'ܡܝܕܝܐܘܝܩܝ', + NS_MEDIAWIKI_TALK => 'ܡܡܠܠܐ_ܕܡܝܕܝܐܘܝܩܝ', + NS_TEMPLATE => 'ܩܠܒܐ', + NS_TEMPLATE_TALK => 'ܡܡܠܠܐ_ܕܩܠܒܐ', + NS_HELP => 'ܥܘܕܪܢܐ', + NS_HELP_TALK => 'ܡܡܠܠܐ_ܕܥܘܕܪܢܐ', + NS_CATEGORY => 'ܣܕܪܐ', + NS_CATEGORY_TALK => 'ܡܡܠܠܐ_ܕܣܕܪܐ', +); + +$namespaceAliases = array( + 'ܡܬܚܫܚܢܐ' => NS_USER, + 'ܡܡܠܠܐ_ܕܡܬܚܫܚܢܐ' => NS_USER_TALK, +); + $specialPageAliases = array( 'CreateAccount' => array( 'ܒܪܝ_ܚܘܫܒܢܐ' ), 'Preferences' => array( 'ܓܒܝܬ̈ܐ' ), @@ -24,10 +49,11 @@ $specialPageAliases = array( 'Longpages' => array( 'ܦܐܬܬ̈ܐ_ܐܪ̈ܝܟܬܐ' ), 'Newpages' => array( 'ܦܐܬܬ̈ܐ_ܚܕ̈ܬܬܐ' ), 'Protectedpages' => array( 'ܦܐܬܬ̈ܐ_ܢܛܝܪ̈ܬܐ' ), + 'Protectedtitles' => array( 'ܟܘܢܝ̈ܐ_ܢܛܝܪ̈ܐ' ), 'Allpages' => array( 'ܟܠ_ܦܐܬܬ̈ܐ' ), 'Specialpages' => array( 'ܦܐܬܬ̈ܐ_ܕ̈ܝܠܢܝܬܐ' ), 'Contributions' => array( 'ܫܘܬܦܘܝܬ̈ܐ' ), - 'Whatlinkshere' => array( 'ܡܐ_ܐܣܪ_ܠܟܐ' ), + 'Whatlinkshere' => array( 'ܡܐ_ܐܣܪ_ܠܗܪܟܐ' ), 'Movepage' => array( 'ܫܢܝ_ܦܐܬܐ' ), 'Categories' => array( 'ܣܕܪ̈ܐ' ), 'Allmessages' => array( 'ܟܠ_ܐܓܪ̈ܬܐ' ), @@ -45,16 +71,25 @@ $magicWords = array( 'numberofarticles' => array( '1', 'ܡܢܝܢܐ_ܕܡܠܘܐ̈ܐ', 'NUMBEROFARTICLES' ), 'numberoffiles' => array( '1', 'ܡܢܝܢܐ_ܕܠܦܦ̈ܐ', 'NUMBEROFFILES' ), 'pagename' => array( '1', 'ܫܡܐ_ܕܦܐܬܐ', 'PAGENAME' ), + 'pagenamee' => array( '1', 'ܟܘܢܝܐ_ܕܦܐܬܐ', 'PAGENAMEE' ), + 'namespace' => array( '1', 'ܚܩܠܐ', 'NAMESPACE' ), 'msg' => array( '0', 'ܐܓܪܬܐ:', 'MSG:' ), 'img_thumbnail' => array( '1', 'ܙܥܘܪܬܐ', 'thumbnail', 'thumb' ), 'img_manualthumb' => array( '1', 'ܙܥܘܪܬܐ=$1', 'thumbnail=$1', 'thumb=$1' ), 'img_right' => array( '1', 'ܝܡܝܢܐ', 'right' ), 'img_left' => array( '1', 'ܣܡܠܐ', 'left' ), - 'img_none' => array( '1', 'ܠܐ ܡܕܡ', 'none' ), + 'img_none' => array( '1', 'ܠܐ_ܡܕܡ', 'none' ), 'img_center' => array( '1', 'ܡܨܥܐ', 'center', 'centre' ), - 'grammar' => array( '0', 'ܬܘܪܨ_ܡܡܠܠܐ', 'GRAMMAR:' ), + 'img_page' => array( '1', 'ܦܐܬܐ=$1', 'ܦܐܬܐ $1', 'page=$1', 'page $1' ), + 'img_border' => array( '1', 'ܬܚܘܡܐ', 'border' ), + 'img_baseline' => array( '1', 'ܣܪܛܐ_ܫܪܫܝܐ', 'baseline' ), + 'img_sub' => array( '1', 'ܦܪܥܝܐ', 'sub' ), + 'grammar' => array( '0', 'ܬܘܪܨ_ܡܡܠܠܐ:', 'GRAMMAR:' ), + 'gender' => array( '0', 'ܓܢܣܐ:', 'GENDER:' ), 'language' => array( '0', '#ܠܫܢܐ:', '#LANGUAGE:' ), 'special' => array( '0', 'ܕܝܠܢܝܐ', 'special' ), + 'url_path' => array( '0', 'ܫܒܝܠܐ', 'PATH' ), + 'url_wiki' => array( '0', 'ܘܝܩܝ', 'WIKI' ), ); $rtl = true; @@ -64,32 +99,12 @@ $defaultUserOptionOverrides = array( 'quickbar' => 2, ); -$namespaceNames = array( - NS_MEDIA => 'ܡܝܕܝܐ', - NS_SPECIAL => 'ܕܝܠܢܝܐ', - NS_MAIN => '', - NS_TALK => 'ܡܡܠܠܐ', - NS_USER => 'ܡܬܚܫܚܢܐ', - NS_USER_TALK => 'ܡܡܠܠܐ_ܕܡܬܚܫܚܢܐ', - NS_PROJECT_TALK => 'ܡܡܠܠܐ_ܕ$1', - NS_FILE => 'ܠܦܦܐ', - NS_FILE_TALK => 'ܡܡܠܠܐ_ܕܠܦܦܐ', - NS_MEDIAWIKI => 'ܡܝܕܝܐܘܝܩܝ', - NS_MEDIAWIKI_TALK => 'ܡܡܠܠܐ_ܕܡܝܕܝܐܘܝܩܝ', - NS_TEMPLATE => 'ܩܠܒܐ', - NS_TEMPLATE_TALK => 'ܡܡܠܠܐ_ܕܩܠܒܐ', - NS_HELP => 'ܥܘܕܪܢܐ', - NS_HELP_TALK => 'ܡܡܠܠܐ_ܕܥܘܕܪܢܐ', - NS_CATEGORY => 'ܣܕܪܐ', - NS_CATEGORY_TALK => 'ܡܡܠܠܐ_ܕܣܕܪܐ', -); - $messages = array( # User preference toggles 'tog-underline' => 'ܪܫܘܡ ܣܪܛܐ ܬܚܝܬ ܐܣܘܪܐ:', 'tog-justify' => 'ܫܘܐ ܦܬܓܡ̈ܐ', 'tog-hideminor' => 'ܛܫܝ ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ', -'tog-rememberpassword' => 'ܕܟܘܪ ܥܠܠܬܝ ܥܠ ܚܫܘܒܬܐ ܗܕܐ', +'tog-rememberpassword' => 'ܕܟܘܪ ܥܠܠܬܝ ܥܠ ܡܦܐܬܢܐ ܗܢܐ (ܠܡܬܚܐ ܥܠܝܐ ܕ $1 {{PLURAL:$1|ܝܘܡܐ|ܝܘܡܬ̈ܐ}})', 'tog-watchcreations' => 'ܐܘܣܦ ܦܐܬܬ̈ܐ ܕܒܪܐ ܐܢܐ ܠܪ̈ܗܝܬܝ', 'tog-watchdefault' => 'ܐܘܣܦ ܦܐܬܬ̈ܐ ܕܫܚܠܦ ܐܢܐ ܠܪ̈ܗܝܬܝ', 'tog-watchmoves' => 'ܐܘܣܦ ܦܐܬܬ̈ܐ ܕܫܢܐ ܐܢܐ ܠܪ̈ܗܝܬܝ', @@ -192,30 +207,19 @@ $messages = array( 'faqpage' => 'Project:ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ', # Vector skin -'vector-action-addsection' => 'ܐܘܣܦ ܡܠܘܐܐ', -'vector-action-delete' => 'ܫܘܦ', -'vector-action-move' => 'ܫܢܝ', -'vector-action-protect' => 'ܢܛܘܪ', -'vector-action-undelete' => 'ܠܐ ܫܘܦ', -'vector-action-unprotect' => 'ܠܐ ܢܛܘܪ', -'vector-namespace-category' => 'ܣܕܪܐ', -'vector-namespace-help' => 'ܦܐܬܐ ܕܥܘܕܪܢܐ', -'vector-namespace-image' => 'ܠܦܦܐ', -'vector-namespace-main' => 'ܦܐܬܐ', -'vector-namespace-media' => 'ܦܐܬܐ ܕܡܝܕܝܐ', -'vector-namespace-mediawiki' => 'ܐܓܪܬܐ', -'vector-namespace-project' => 'ܦܐܬܐ ܕܬܪܡܝܬܐ', -'vector-namespace-special' => 'ܦܐܬܐ ܕܝܠܢܝܬܐ', -'vector-namespace-talk' => 'ܡܡܠܠܐ', -'vector-namespace-template' => 'ܩܠܒܐ', -'vector-namespace-user' => 'ܦܐܬܐ ܕܡܦܠܚܢܐ', -'vector-view-create' => 'ܒܪܝ', -'vector-view-edit' => 'ܫܚܠܦ', -'vector-view-history' => 'ܚܙܝ ܬܫܥܝܬܐ', -'vector-view-view' => 'ܩܪܝ', -'vector-view-viewsource' => 'ܚܙܝ ܡܒܘܥܐ', -'actions' => 'ܥܒܕ̈ܐ', -'namespaces' => 'ܚܩܠܬ̈ܐ', +'vector-action-addsection' => 'ܐܘܣܦ ܡܠܘܐܐ', +'vector-action-delete' => 'ܫܘܦ', +'vector-action-move' => 'ܫܢܝ', +'vector-action-protect' => 'ܢܛܘܪ', +'vector-action-undelete' => 'ܠܐ ܫܘܦ', +'vector-action-unprotect' => 'ܠܐ ܢܛܘܪ', +'vector-view-create' => 'ܒܪܝ', +'vector-view-edit' => 'ܫܚܠܦ', +'vector-view-history' => 'ܚܙܝ ܬܫܥܝܬܐ', +'vector-view-view' => 'ܩܪܝ', +'vector-view-viewsource' => 'ܚܙܝ ܡܒܘܥܐ', +'actions' => 'ܥܒܕ̈ܐ', +'namespaces' => 'ܚܩܠܬ̈ܐ', 'errorpagetitle' => 'ܦܘܕܐ', 'returnto' => 'ܕܥܘܪ ܠ$1.', @@ -270,6 +274,7 @@ $messages = array( 'jumpto' => 'ܫܘܪ ܠ:', 'jumptonavigation' => 'ܐܠܦܪܘܬܐ', 'jumptosearch' => 'ܒܨܝܐ', +'pool-errorunknown' => 'ܦܘܕܐ ܠܐ ܝܕܝܥܐ', # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations). 'aboutsite' => 'ܡܢܘ {{SITENAME}}', @@ -351,7 +356,7 @@ $messages = array( 'yourname' => 'ܫܡܐ ܕܡܦܠܚܢܐ:', 'yourpassword' => 'ܡܠܬܐ ܕܥܠܠܐ:', 'yourpasswordagain' => 'ܟܬܘܒ ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܬܐ ܐܚܪܬܐ:', -'remembermypassword' => 'ܕܟܘܪ ܥܠܠܬܝ ܥܠ ܚܫܘܒܬܐ ܗܕܐ', +'remembermypassword' => 'ܕܟܘܪ ܥܠܠܬܝ ܥܠ ܡܦܐܬܢܐ ܗܢܐ (ܠܡܬܚܐ ܥܠܝܐ ܕ $1 {{PLURAL:$1|ܝܘܡܐ|ܝܘܡܬ̈ܐ}})', 'login' => 'ܥܘܠ', 'nav-login-createaccount' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ', 'loginprompt' => 'ܐܠܨܐ ܠܡܦܐܬܢܐ ܕܝܠܟ ܕܣܡܟ ܠܩܘܩܝܙ (cookies) ܠܥܠܠܬܐ ܠ {{SITENAME}}.', @@ -366,6 +371,7 @@ $messages = array( 'gotaccount' => "ܐܝܬ ܠܟ ܚܘܫܒܢܐ؟ '''$1'''.", 'gotaccountlink' => 'ܥܘܠ', 'createaccountmail' => 'ܒܝܕ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ', +'createaccountreason' => 'ܥܠܬܐ', 'badretype' => 'ܡܠܬܐ ܕܥܠܠܐ ܟܬܒܬ ܐܢܬ ܠܐ ܐܘܝܢܬܐ.', 'userexists' => 'ܫܡܐ ܕܡܦܠܚܢܐ ܫܩܝܠܐ. ܓܒܝ ܫܡܐ ܐܚܪܢܐ.', @@ -419,6 +425,7 @@ $messages = array( 'showdiff' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ', 'anoneditwarning' => "'''ܙܘܗܪܐ:''' ܠܐ ܐܝܬܝܟ ܥܠܝܠܐ. ܐܝ ܦܝ (IP) ܕܝܠܟ ܢܬܟܬܒ ܒܬܫܥܝܬܐ ܕܦܐܬܐ.", +'anonpreviewwarning' => '"ܠܐ ܐܝܬܝܟ ܥܠܝܠܐ. ܐܢ ܠܒܟ ܦܐܬܐ ܐܢܬ ܐܝ ܦܝ (IP) ܕܝܠܟ ܢܬܟܬܒ ܒܬܫܥܝܬܐ ܕܫܘܚܠܦܐ ܕܦܐܬܐ."', 'summary-preview' => 'ܚܝܪܐ ܩܕܡܝܐ ܕܦܣܝܩܬ̈ܐ :', 'blockedtitle' => 'ܡܦܠܚܢܐ ܗܘ ܡܚܪܡܐ', 'blockednoreason' => 'ܠܝܬ ܥܠܬܐ ܝܗܝܒܬܐ', @@ -496,6 +503,8 @@ $messages = array( 'revdelete-radio-unset' => 'ܠܐ', 'revdelete-log' => 'ܥܠܬܐ:', 'revdel-restore' => 'ܫܚܠܦ ܚܙܝܬܐ', +'revdel-restore-deleted' => 'ܬܢܝܬ̈ܐ ܫܝܦ̈ܐ', +'revdel-restore-visible' => 'ܬܢܝܬ̈ܐ ܡܬܚܙܝܢܝܬ̈ܐ', 'pagehist' => 'ܬܫܥܝܬܐ ܕܦܐܬܐ', 'deletedhist' => 'ܬܫܥܝܬܐ ܫܝܦܬܐ', 'revdelete-content' => 'ܚܒܝܫܬ̈ܐ', @@ -531,6 +540,8 @@ $messages = array( 'compareselectedversions' => 'ܦܚܘܡ ܒܝܬ ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ', 'showhideselectedversions' => 'ܚܘܝ/ܛܫܝ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ', 'editundo' => 'ܠܐ ܬܥܒܕ', +'diff-multi' => '({{PLURAL:$1|ܚܕܐ ܬܢܝܬܐ ܡܨܥܝܬܐ|$1 ܬܢܝܬ̈ܐ ܡܨܥܝܬ̈ܐ}} ܒܝܕ {{PLURAL:$2|ܚܕ ܡܦܠܚܢܐ ܠܐ ܓܠܝܚܬܐ|$2 ܡܦܠܚܢ̈ܐ ܠܐ ܓܠܝܚܬ̈ܐ}})', +'diff-multi-manyusers' => '({{PLURAL:$1|One ܚܕܐ ܬܢܝܬܐ ܡܨܥܝܬܐ|$1 ܬܢܝܬ̈ܐ ܡܨܥܝܬ̈ܐ}} ܒܝܕ ܝܬܝܪ ܡܢ $2 {{PLURAL:$2|ܚܕ ܡܦܠܚܢܐ ܠܐ ܓܠܝܚܬܐ|ܡܦܠܚܢ̈ܐ ܠܐ ܓܠܝܚܬ̈ܐ}})', # Search results 'searchresults' => 'ܦܠܛ̈ܐ ܕܒܘܨܝܐ', @@ -655,7 +666,7 @@ $messages = array( 'prefs-advancedrendering' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ', 'prefs-advancedsearchoptions' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ', 'prefs-advancedwatchlist' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ', -'prefs-display' => 'ܚܘܝ ܓܒܝܬ̈ܐ', +'prefs-displayrc' => 'ܚܘܝ ܓܒܝܬ̈ܐ', 'prefs-diffs' => 'ܦܪ̈ܝܫܘܝܬܐ', # User rights @@ -736,34 +747,30 @@ $messages = array( 'action-userrights' => 'ܫܚܠܦܬܐ ܕܟܠ ܙܕ̈ܩܐ ܕܡܦܠܚܢܐ', # Recent changes -'nchanges' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ|ܫܘܚܠܦ̈ܐ}}', -'recentchanges' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ', -'recentchanges-legend' => 'ܓܒܝܬ̈ܐ ܕܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ', -'recentchangestext' => 'ܥܩܒ ܫܘܚܠܦ̈ܐ ܚܕܬ ܡܢ ܟܠ ܕܘܝܩܝ ܒܦܐܬܐ ܗܕܐ.', -'recentchanges-label-legend' => 'ܩܠܝܕܐ: $1.', -'recentchanges-legend-newpage' => '$1 - ܦܐܬܐ ܚܕܬܐ', -'recentchanges-label-newpage' => 'ܫܘܚܠܦܐ ܗܢܐ ܒܪܐ ܦܐܬܐ ܚܕܬܐ', -'recentchanges-legend-minor' => '$1 - ܫܘܚܠܦܐ ܙܥܘܪܐ', -'recentchanges-label-minor' => 'ܗܢܐ ܗܘ ܫܘܚܠܦܐ ܙܥܘܪܐ', -'recentchanges-legend-bot' => '$1 - ܫܘܚܠܦܐ ܕܒܘܬ (bot)', -'recentchanges-label-bot' => 'ܒܘܬ (bot) ܥܒܕ ܗܢܐ ܫܘܚܠܦܐ', -'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1', -'rcshowhideminor' => '$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ', -'rcshowhidebots' => '$1 ܒܘܬ̈ܐ (Bots)', -'rcshowhideliu' => '$1 ܡܦܠܚܢ̈ܐ ܥܠܝܠ̈ܐ', -'rcshowhideanons' => '$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ', -'rcshowhidemine' => '$1 ܫܘܚܠܦ̈ܝ', -'rclinks' => 'ܚܘܝ $1 ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ ܒ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܬܐ<br />$3', -'diff' => 'ܦܪܝܫܘܬܐ', -'hist' => 'ܬܫܥܝܬܐ', -'hide' => 'ܛܫܝ', -'show' => 'ܚܘܝ', -'minoreditletter' => 'ܙ', -'newpageletter' => 'ܚ', -'boteditletter' => 'ܒ', -'newsectionsummary' => '/* $1 */ ܡܢܬܐ ܚܕܬܐ', -'rc-enhanced-expand' => 'ܚܘܝ ܐܪ̈ܝܟܬܐ (ܒܥܐ ܠܟ JavaScript)', -'rc-enhanced-hide' => 'ܛܫܝ ܐܪ̈ܝܟܬܐ', +'nchanges' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ|ܫܘܚܠܦ̈ܐ}}', +'recentchanges' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ', +'recentchanges-legend' => 'ܓܒܝܬ̈ܐ ܕܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ', +'recentchangestext' => 'ܥܩܒ ܫܘܚܠܦ̈ܐ ܚܕܬ ܡܢ ܟܠ ܕܘܝܩܝ ܒܦܐܬܐ ܗܕܐ.', +'recentchanges-label-newpage' => 'ܫܘܚܠܦܐ ܗܢܐ ܒܪܐ ܦܐܬܐ ܚܕܬܐ', +'recentchanges-label-minor' => 'ܗܢܐ ܗܘ ܫܘܚܠܦܐ ܙܥܘܪܐ', +'recentchanges-label-bot' => 'ܒܘܬ (bot) ܥܒܕ ܗܢܐ ܫܘܚܠܦܐ', +'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1', +'rcshowhideminor' => '$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ', +'rcshowhidebots' => '$1 ܒܘܬ̈ܐ (Bots)', +'rcshowhideliu' => '$1 ܡܦܠܚܢ̈ܐ ܥܠܝܠ̈ܐ', +'rcshowhideanons' => '$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ', +'rcshowhidemine' => '$1 ܫܘܚܠܦ̈ܝ', +'rclinks' => 'ܚܘܝ $1 ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ ܒ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ<br />$3', +'diff' => 'ܦܪܝܫܘܬܐ', +'hist' => 'ܬܫܥܝܬܐ', +'hide' => 'ܛܫܝ', +'show' => 'ܚܘܝ', +'minoreditletter' => 'ܙ', +'newpageletter' => 'ܚ', +'boteditletter' => 'ܒ', +'newsectionsummary' => '/* $1 */ ܡܢܬܐ ܚܕܬܐ', +'rc-enhanced-expand' => 'ܚܘܝ ܐܪ̈ܝܟܬܐ (ܒܥܐ ܠܟ JavaScript)', +'rc-enhanced-hide' => 'ܛܫܝ ܐܪ̈ܝܟܬܐ', # Recent changes linked 'recentchangeslinked' => 'ܫܘܚܠܦ̈ܐ ܕ̈ܡܝܐ', @@ -796,6 +803,12 @@ $messages = array( 'upload-description' => 'ܫܘܡܗܐ ܕܠܦܦܐ', 'upload-options' => 'ܓܒܝܬ̈ܐ ܕܐܣܩܬܐ ܕܠܦܦܐ', 'watchthisupload' => 'ܪܗܝ ܗܢܐ ܠܦܦܐ', +'upload-success-subj' => 'ܠܦܦܐ ܐܣܩܬ ܢܨܝܚܐܝܬ', +'upload-failure-subj' => 'ܩܛܪܐ ܒܐܣܩܬܐ ܕܠܦܦܐ', +'upload-failure-msg' => 'ܐܝܬ ܗܘܐ ܩܛܪܐ ܒܠܦܦܐ ܕܐܣܩܬ ܡܢ [$2]: + +$1', +'upload-warning-subj' => 'ܙܘܗܪܐ ܥܠ ܐܣܩܬܐ ܕܠܦܦܐ', 'upload-proto-error' => 'ܦܪܘܛܘܩܘܠ ܠܐ ܬܪܝܨܐ', 'upload-file-error' => 'ܦܘܕܐ ܓܘܝܐ', @@ -815,6 +828,7 @@ $messages = array( # Special:ListFiles 'imgfile' => 'ܠܦܦܐ', 'listfiles' => 'ܡܟܬܒܘܬܐ ܕܠܦܦ̈ܐ', +'listfiles_thumb' => 'ܙܘܥܪܐ', 'listfiles_date' => 'ܣܝܩܘܡܐ', 'listfiles_name' => 'ܫܡܐ', 'listfiles_user' => 'ܡܦܠܚܢܐ', @@ -993,7 +1007,7 @@ $messages = array( # Special:ActiveUsers 'activeusers' => 'ܡܟܬܒܘܬܐ ܕܗܕ̈ܡܐ ܟܫܝܪ̈ܐ', -'activeusers-count' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ ܚܕܬܐ|ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ}} ܒ {{PLURAL:$3|ܝܘܡܐ ܐܚܪܝܐ|$3 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܬܐ}}', +'activeusers-count' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ ܚܕܬܐ|ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ}} ܒ {{PLURAL:$3|ܝܘܡܐ ܐܚܪܝܐ|$3 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ}}', 'activeusers-from' => 'ܚܘܝ ܡܦܠܚܢ̈ܐ ܕܫܪܐ ܥܡ:', 'activeusers-hidebots' => 'ܛܫܝ ܒܘܬ̈ܐ (bots)', 'activeusers-hidesysops' => 'ܛܫܝ ܡܕܒܪ̈ܢܐ', @@ -1034,10 +1048,14 @@ $messages = array( 'emailccsubject' => 'ܨܚܚܐ ܕܐܓܪܬܟ ܠ $1: $2', 'emailsent' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܐܫܬܕܪ', +# User Messenger +'usermessage-summary' => 'ܫܒܩܐ ܐܓܪܬܐ ܕܛܟܣܐ', +'usermessage-editor' => 'ܡܫܕܪܢܐ ܕܛܟܣܐ', + # Watchlist 'watchlist' => 'ܪ̈ܗܝܬܝ', 'mywatchlist' => 'ܪ̈ܗܝܬܝ', -'watchlistfor' => "(ܠ'''$1''')", +'watchlistfor2' => 'ܠ $1 $2', 'nowatchlist' => 'ܠܝܬ ܠܟ ܡܕܡ ܒܪ̈ܗܝܬܐ ܕܝܠܟ', 'watchnologin' => 'ܠܝܬܝܟ ܥܠܝܠܐ', 'addedwatch' => 'ܐܘܣܦ ܠܪ̈ܗܝܬܐ', @@ -1047,7 +1065,7 @@ $messages = array( 'watchthispage' => 'ܪܗܝ ܗܕܐ ܦܐܬܐ', 'unwatch' => 'ܠܐ ܪܗܝ', 'unwatchthispage' => 'ܟܠܝ ܪܗܝܐ', -'wlshowlast' => 'ܚܘܝ $1 ܫܥܬ̈ܐ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܬܐ $3', +'wlshowlast' => 'ܚܘܝ $1 ܫܥܬ̈ܐ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ $3', 'watchlist-options' => 'ܓܒܝܬ̈ܐ ܕܪ̈ܗܝܬܐ', # Displayed when you click the "watch" button and it is in the process of watching @@ -1084,6 +1102,9 @@ $messages = array( 'rollbacklink' => 'ܐܦܢܝ', 'editcomment' => "ܦܣܝܩܬ̈ܐ ܕܫܘܚܠܦܐ ܗܘܐ: \"''\$1''\".", +# Edit tokens +'sessionfailure-title' => 'ܡܘܬܒܐ ܠܐ ܢܨܚܬ', + # Protect 'protectlogpage' => 'ܣܓܠܐ ܕܢܛܪܐ', 'protectedarticle' => 'ܢܛܝܪܐ "[[$1]]"', @@ -1297,12 +1318,6 @@ Do you want to change the settings?', 'import-logentry-upload-detail' => '$1 {{PLURAL:$1|ܬܢܝܬܐ |ܬܢܝܬ̈ܐ}}', 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|ܬܢܝܬܐ |ܬܢܝܬ̈ܐ}} ܡܢ $2', -# Tooltip help for the actions -'tooltip-pt-userpage' => '', -'tooltip-pt-mytalk' => '', -'tooltip-search' => 'Search {{SITENAME}}', -'tooltip-t-print' => 'Printable version of this page', - # Attribution 'anonymous' => '{{PLURAL:$1|ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ|ܡܦܠܚܢ̈ܐ ܠܐ ܝܕ̈ܝܥܐ}} ܕ {{SITENAME}}', 'siteuser' => '{{SITENAME}} ܡܦܠܚܢܐ $1', @@ -1338,6 +1353,7 @@ $1', # Media information 'thumbsize' => 'ܥܓܪܐ ܕܨܘܪܬܐ ܙܥܘܪܬܐ:', +'file-info' => 'ܥܓܪܐ ܕܠܦܦܐ: $1, MIME ܐܕܫܐ: $2', 'file-nohires' => '<small>ܠܝܬ ܢܩܕܘܬܐ ܝܬܝܪ ܡܢ ܗܢܐ.</small>', 'show-big-image' => 'ܢܩܕܘܬܐ ܓܡܝܪܬܐ', @@ -1448,6 +1464,7 @@ $1', 'table_pager_prev' => 'ܦܐܬܐ ܩܕܝܡܬܐ', 'table_pager_first' => 'ܦܐܬܐ ܩܕܡܝܬܐ', 'table_pager_last' => 'ܦܐܬܐ ܐܚܪܝܬܐ', +'table_pager_limit_label' => 'ܡܕܡ ܠܟܠ ܕܦܐ:', 'table_pager_limit_submit' => 'ܙܠ', 'table_pager_empty' => 'ܠܝܬ ܦܠܛ̈ܐ', @@ -1472,6 +1489,7 @@ $1', 'version-specialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ', 'version-other' => 'ܐܚܪܢܐ', 'version-version' => '(ܨܚܚܐ $1)', +'version-poweredby-others' => 'ܐܚܪ̈ܢܐ', 'version-software-version' => 'ܨܚܚܐ', # Special:FilePath @@ -1504,6 +1522,13 @@ $1', 'tags-edit' => 'ܫܚܠܦ', 'tags-hitcount' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ|ܫܘܚܠܦ̈ܐ}}', +# Special:ComparePages +'compare-page1' => 'ܕܦܐ 1', +'compare-page2' => 'ܕܦܐ 2', +'compare-rev1' => 'ܬܢܝܬܐ 1', +'compare-rev2' => 'ܬܢܝܬܐ 2', +'compare-submit' => 'ܦܚܘܡ', + # HTML forms 'htmlform-submit' => 'ܫܕܪ', 'htmlform-reset' => 'ܠܐ ܬܥܒܕ ܫܘܚܠܦ̈ܐ', diff --git a/languages/messages/MessagesArn.php b/languages/messages/MessagesArn.php index ebd350f0..e6257b38 100644 --- a/languages/messages/MessagesArn.php +++ b/languages/messages/MessagesArn.php @@ -96,15 +96,11 @@ $messages = array( 'faqpage' => 'Project:FAQ', # Vector skin -'vector-action-delete' => 'Ñamümün', -'vector-namespace-main' => 'Pakina', -'vector-namespace-mediawiki' => 'Yefalzugu', -'vector-namespace-talk' => 'Nvxamkawvn', -'vector-namespace-user' => 'Kellufe', -'vector-view-create' => 'Zewmape', -'vector-view-edit' => 'Pepikan', -'vector-view-history' => 'Pegelpe rupañmael', -'vector-view-view' => 'Chillkatun', +'vector-action-delete' => 'Ñamümün', +'vector-view-create' => 'Zewmape', +'vector-view-edit' => 'Pepikan', +'vector-view-history' => 'Pegelpe rupañmael', +'vector-view-view' => 'Chillkatun', 'returnto' => 'Amutun $1 püle.', 'tagline' => '{{SITENAME}} mew', @@ -302,8 +298,6 @@ $messages = array( 'action-undelete' => 'Namümlay tüfachi pakina', # Recent changes -'recentchanges-legend-newpage' => '$1 - We Pakina', -'recentchanges-legend-minor' => '$1 pichi wirin', 'rcshowhideminor' => '$1 pichi wirin', 'rcshowhidemine' => '$1 tañi wirin', 'hist' => 'rupañ', @@ -388,7 +382,6 @@ $messages = array( 'emailsend' => 'Werkün', # Watchlist -'watchlistfor' => "('''$1''')", 'watchnologin' => 'Petu konlaymi', 'watch' => 'Llaytun', 'watchthispage' => 'Llaytun tüfachi pakina', diff --git a/languages/messages/MessagesAry.php b/languages/messages/MessagesAry.php new file mode 100644 index 00000000..3468cb77 --- /dev/null +++ b/languages/messages/MessagesAry.php @@ -0,0 +1,2099 @@ +<?php +/** Moroccan Spoken Arabic (Maġribi) + * + * See MessagesQqq.php for message documentation incl. usage of parameters + * To improve a translation please visit http://translatewiki.net + * + * @ingroup Language + * @file + * + * @author Daoudata + * @author Enzoreg + * @author MassNssen + * @author Zanatos + */ + +$messages = array( +# User preference toggles +'tog-underline' => 'Ṣetter l-lyanaṫ:', +'tog-highlightbroken' => 'L-Lyanaṫ le ṣefḫaṫ li ma mojodinċ ka iṫ\'afiċaw <a href="" class="new">ḫomer</a> (ola : bḫal haka<a href="" class="internal">?</a>)', +'tog-justify' => 'Jusṫifyé l-paragrafaṫ', +'tog-hideminor' => 'Ĥebbi ṫ-ṫeĝdilaṫ l-leĥĥrin', +'tog-hidepatrolled' => 'Ĥebbi ṫ-ṫeĝdilaṫ l-mraqbin fe ṫ-ṫeĝdilaṫ l-leĥĥrin', +'tog-newpageshidepatrolled' => 'Ĥebbi ṣ-ṣefḫaṫ l-mraqbin men ṣ-ṣefḫaṫ j-jdad', +'tog-extendwatchlist' => 'Kebber l-lista dyal s-suivi baċ bano ṫ-ṫeġyiraṫ kamlin, maċi ġir l-leĥĥrin.', +'tog-usenewrc' => 'Sṫeĝmel ṫ-ṫeġyiraṫ l-leĥĥrin l-mezyanin (kayḫṫaj JavaScript)', +'tog-numberheadings' => 'Nemra otomaṫikiya dyal l-ĝanawin', +'tog-showtoolbar' => 'Werri l-barra dyal ṫ-ṫeĝdilaṫ (kayḫṫaj JavaScript)', +'tog-editondblclick' => 'Baċ ṫṣayeb ṣ-ṣefḫa ĥaṣek ṫbrek 2 merraṫ (kayḫṫaj JavaScript)', +'tog-editsection' => 'Aktivé ṫ-ṫeĝdilaṫ dyal s-seksyon be l-lyanaṫ « [Ĝeddel] »', +'tog-editsectiononrightclick' => 'Baċ ṫbeddel l-ĝonwan dyal ċi seksyon brek ĝlih be l-imniya (kayḫṫaj JavaScript)', +'tog-showtoc' => 'biyn lfahras dyal lmohtawayat (bnisba lsafahat li ktr mn 3 dlaanawin)', +'tog-rememberpassword' => 'Ĝqel ĝla smiyṫi fe had l-ordinaṫør (ġir limoddaṫ {{PLURAL:$1|yom waḫed|$1 iyyam}})', +'tog-watchcreations' => 'zid sfahi li nchatha f qaaimat lmoraqaba', +'tog-watchdefault' => 'zid sfahi li adltha f qaaimat lmoraqaba', +'tog-watchmoves' => 'zid sfahi li bdlt blasstha f qaaimat lmoraqaba', +'tog-watchdeletion' => 'zid sfahi li mshtha f qaaimat lmoraqaba', +'tog-minordefault' => 'alm jmia tadilat tafifa iftiradiyan', +'tog-previewontop' => 'biyn laard lmosbaq qbl sndoq thrir', +'tog-previewonfirst' => 'Ůbiyn moaayana maa awal tadil', +'tog-nocache' => 'attl takhzin lmotassafih lsfha', +'tog-enotifwatchlistpages' => 'sift liya barid electroni ila tbdlat chi sfha f qaaimat lmoraqaba diali', +'tog-enotifusertalkpages' => 'sift liya rissala electronia ila tbdlat sfht niqach dyali', +'tog-enotifminoredits' => 'sift liya risala electronia hta bnisba ltadilat tafifa', +'tog-enotifrevealaddr' => 'biyn lbarid lelectroni dyali f halat rassaail laikhtar', +'tog-shownumberswatching' => 'biyn aadad lmostakhdimin lmoraqibin', +'tog-oldsig' => 'moaayana litawqia lmawjod', +'tog-fancysig' => 'aaml nass bhal nass wiki (bla wsla otomatikia)', +'tog-externaleditor' => 'stakhdm moharrir khariji iftiradiyan(faqat lilkhobaraa, kaybghi iaadadat khassa f lordinator dyalk)', +'tog-externaldiff' => 'stakhdm farq khariji iftiradiyan(faqat lilkhobaraa, kaybghi iaadadat khassa f lordinator dyalk)', +'tog-showjumplinks' => 'mkkn wassalat "sir l" lmossaaida', +'tog-uselivepreview' => 'staml listiarad saria (khasso javascipt) (tjribi)', +'tog-forceeditsummary' => 'nbhni ila kandkhl molkhass taadil khawi', +'tog-watchlisthideown' => 'khbi tadilat dyali mn qaaimat lmoraqaba', +'tog-watchlisthidebots' => 'khbi tadilat lbot mn qaaimat lmoraqaba', +'tog-watchlisthideminor' => 'khbi tadilat tafifa mn qaaimat lmoraqaba', +'tog-watchlisthideliu' => 'khbi tadilat lmostkhdimin lmsjlin mn qaaimat lmoraqaba', +'tog-watchlisthideanons' => 'khbi taadilat lmostkhdimin lmjholin mn qaaimat lmoraqaba', +'tog-watchlisthidepatrolled' => 'khbi tadilat lmorajaaa mn qaaimat lmoraqaba', +'tog-nolangconversion' => 'attl thwil lahajat', +'tog-ccmeonemails' => 'sift liya noskha mn rasaail lbarid lelectroni likansiftha lmostkhdimin lkhrin', +'tog-diffonly' => 'matbiynch mohtawa sfha tht lforoqat', +'tog-showhiddencats' => 'biyn tsnifat lmkhfiya', +'tog-noconvertlink' => 'aattl thwil anwan lwslat', +'tog-norollbackdiff' => 'hiyd lfrq ila drt istirjaa', + +'underline-always' => 'Dima', +'underline-never' => 'Abadan', +'underline-default' => 'reglage dyal lmotassafih', + +# Font style option in Special:Preferences +'editfont-style' => 'namat lkht dyal mintaqat thrir', +'editfont-default' => 'reglage dyal lmotasafih', +'editfont-monospace' => 'ĥtt tabit lġarḍ', +'editfont-sansserif' => 'ĥtt ba ziyada', +'editfont-serif' => 'kht bzwayd', + +# Dates +'sunday' => 'L-Ḫed', +'monday' => 'Ṫ-Ṫnin', +'tuesday' => 'Ṫ-Ṫlaṫ', +'wednesday' => 'L-Arbeĝ', +'thursday' => 'L-Ĥmis', +'friday' => 'J-Jemĝa', +'saturday' => 'S-Sebṫ', +'sun' => 'Ḫed', +'mon' => 'Ṫnin', +'tue' => 'Ṫlaṫ', +'wed' => 'Arbeĝ', +'thu' => 'Ĥmis', +'fri' => 'Jemĝa', +'sat' => 'Sebṫ', +'january' => 'Yanayer', +'february' => 'Febrayer', +'march' => 'Mars', +'april' => 'Abril', +'may_long' => 'May', +'june' => 'Yonyo', +'july' => 'Yolyoz', +'august' => 'Ġoċṫ', +'september' => 'Ċoṫanbir', +'october' => 'Okṫober', +'november' => 'Nowanbir', +'december' => 'Dojanbir', +'january-gen' => 'Yanayer', +'february-gen' => 'Febrayer', +'march-gen' => 'Mars', +'april-gen' => 'Abril', +'may-gen' => 'May', +'june-gen' => 'Yonyo', +'july-gen' => 'Yolyoz', +'august-gen' => 'Ġoċṫ', +'september-gen' => 'Ċoṫambir', +'october-gen' => 'Okṫober', +'november-gen' => 'Nowanbir', +'december-gen' => 'Dojanbir', +'jan' => 'Yan', +'feb' => 'Feb', +'mar' => 'Mar', +'apr' => 'Abr', +'may' => 'May', +'jun' => 'Yon', +'jul' => 'Yol', +'aug' => 'Ġoċ', +'sep' => 'Ċoṫ', +'oct' => 'Okṫ', +'nov' => 'Now', +'dec' => 'Doj', + +# Categories related messages +'pagecategories' => '{{PLURAL:$1|Katégori|Katégoryaṫ}}', +'category_header' => 'ṣ-ṣefḫaṫ fe l-katégori "$1"', +'subcategories' => 'L-katégoriyaṫ ṫ-ṫeḫṫaniya', +'category-media-header' => 'L-fiċyé mulṫimédya li kaynin fe l-katégori "$1"', +'category-empty' => '" Had l-katégori ma fiha ḫṫa ċi ṣefḫa ola fiċyé mulṫimédya. "', +'hidden-categories' => '{{PLURAL:$1|Katégori mĥebya|Katégoryaṫ mĥebyin}}', +'hidden-category-category' => 'Katégoryaṫ mĥebyin', +'category-subcat-count' => 'Had l-katégori fiha {{PLURAL:$2|l-katégori l-ferĝiya|$2 katégoryaṫ ferĝiyin, menhom {{PLURAL:$1|hadi|$1}}}} li l-ṫeḫṫ.', +'category-subcat-count-limited' => 'Had l-katégori fiha {{PLURAL:$1|l-katégori l-ferĝiya|$1 katégoryaṫ ferĝiyin}} l-ṫeḫṫ.', +'category-article-count' => "Had l-katégori fiha {{PLURAL:$2|had 'ṣ-ṣefḫa|$2 ṣefḫaṫ, menhom {{PLURAL:$1|hadi|$1}} li l-ṫeḫṫ}}.", +'category-article-count-limited' => "{{PLURAL:$1|Had 'ṣ-ṣefḫa kayna|Had $1 dyal 'ṣ-ṣefḫaṫ kaynin}} fe had l-katégori.", +'category-file-count' => 'Had l-katégori fiha {{PLURAL:$2|had l-fiċyé|$2 fiċyé, menhom {{PLURAL:$1|hada|$1}} li l-ṫeḫṫ}}.', +'category-file-count-limited' => '{{PLURAL:$1|Had l-fiċyé kayen|Had $1 dyal l-fiċyé kaynin}} fe had l-katégori.', +'listingcontinuesabbrev' => 'L-Kmala', +'index-category' => 'sfahi mfhrssa', +'noindex-category' => 'shat mamfhtsach', + +'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD', +'mainpagetext' => "'''MediaWiki ṫ'instala be najaḫ.'''", +'mainpagedocfooter' => 'Ila bġiṫiw meĝlomaṫ ĥrin baċ ṫesṫeĝmlo had l-lojisyél siro ċofo [http://meta.wikimedia.org/wiki/Aide:Contenu Gid dyal l-mosṫeĥdim] + +== L-bdaya mĝa MediaWiki == +* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista dyal l-paramétraṫ dyal l-konfigurasyon] +* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ fe MediaWiki] +* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista dyal l-modakaraṫ ĝla versyonaṫ jdad dyal MediaWiki]', + +'about' => 'ala', +'article' => 'sfht mohtawa', +'newwindow' => '(kayṫḫell fe ċerjem weḫdaĥor)', +'cancel' => 'Bettel', +'moredotdotdot' => 'Kṫer...', +'mypage' => "'Ṣ-Ṣefḫa dyali", +'mytalk' => 'Ṣefḫa dyal n-niqaċ', +'anontalk' => "hdr maa had l'ip", +'navigation' => 'Navigasyon', +'and' => ' o', + +# Cologne Blue skin +'qbfind' => 'Lqa', +'qbbrowse' => 'Qeleb', +'qbedit' => 'Ĝedel', +'qbpageoptions' => "Had 'ṣ-ṣefḫa", +'qbpageinfo' => 'L-Meḍmon', +'qbmyoptions' => "'Ṣ-Ṣefḫaṫ dyawli", +'qbspecialpages' => 'Ṣefḫaṫ ĥaṣṣin', +'faq' => 'asaila kaytaawdo bzaf', +'faqpage' => 'Project:asaila kaytaawdo', + +# Vector skin +'vector-action-addsection' => 'Zid topic', +'vector-action-delete' => 'Suprimi', +'vector-action-move' => 'Neqel', +'vector-action-protect' => 'Ḫami', +'vector-action-undelete' => 'rja lhadf', +'vector-action-unprotect' => 'Ḫiyed l-ḫimaya', +'vector-view-create' => 'Ĥṫareĝ', +'vector-view-edit' => 'Ĝedel', +'vector-view-history' => 'Ṫariĥ l-fiċyé', +'vector-view-view' => 'Qra', +'vector-view-viewsource' => 'Ċof l-masdar', +'actions' => 'afaal', +'namespaces' => 'Maḫel s-smiyyaṫ :', +'variants' => 'lhja:', + +'errorpagetitle' => "Ĥata'", +'returnto' => 'Rjeĝ le $1', +'tagline' => 'Men', +'help' => 'Mosaĝada', +'search' => 'Qelleb', +'searchbutton' => 'Qelleb', +'go' => 'Sir', +'searcharticle' => 'Sir', +'history' => 'Ṫariĥ ṣ-ṣefḫa', +'history_short' => 'Historik', +'updatedmarker' => 'tam thditha ala akhir ziyara liya', +'info_short' => 'maalomat', +'printableversion' => 'Vérsyon imkenliha ṫṫetbeĝ', +'permalink' => 'Lyan dayem', +'print' => 'Tbeĝ', +'edit' => 'Ṣayeb', +'create' => 'Ĥṫareĝ', +'editthispage' => 'Ĝeddel had ṣ-ṣefḫa', +'create-this-page' => "Ĥṫareĝ had 'ṣ-ṣefḫa", +'delete' => 'Mḫi', +'deletethispage' => "Suprimi had 'ṣ-ṣefḫa", +'undelete_short' => 'strjaa {{PLURAL:$1|wahd taadil|$1 taadil}}', +'protect' => 'Ḫami', +'protect_change' => 'Beddel', +'protectthispage' => "Ḫmi had 's-sefḫa", +'unprotect' => 'Ḫiyed l-ḫimaya', +'unprotectthispage' => 'Ḫiyd lḫimaya ĝla had sfha', +'newpage' => 'Ṣefḫa jdida', +'talkpage' => "Ṫnaqeċ fe had 'ṣ-ṣefḫa", +'talkpagelinktext' => 'Ṫnaqeċ', +'specialpage' => 'Ṣefḫa ĥaṣa', +'personaltools' => 'Adawaṫ ċeĥṣiya', +'postcomment' => 'Seksyon jdida', +'articlepage' => 'Ċof l-li fe ṣ-ṣefḫa', +'talk' => 'Modakara', +'views' => 'Afiċaj', +'toolbox' => "Ṣendoq l-'adawaṫ", +'userpage' => 'Ċof ṣ-ṣefḫa de l-mosṫeĥdim', +'projectpage' => 'Ċof ṣ-ṣefḫa de lmchroa', +'imagepage' => 'ċof ṣ-ṣefḫa dyal l-fiċyé', +'mediawikipage' => 'Ċof ṣ-ṣefḫa de risala', +'templatepage' => 'Ċof ṣ-ṣefḫa de l-modele', +'viewhelppage' => 'Ċof ṣ-ṣefḫa de l-mosaaada', +'categorypage' => 'Ċof l-katégori dyal ṣ-ṣefḫa', +'viewtalkpage' => 'Ċof tadakor', +'otherlanguages' => 'Be loġaṫ ĥrin', +'redirectedfrom' => '(Ṫḫowwlaṫ men $1)', +'redirectpagesub' => 'Ṣefḫa dyal ṫ-ṫeḫwil', +'lastmodifiedat' => 'L-merra l-leĥĥra li ṫsaybaṫ fiha had ṣ-ṣefḫa kaneṫ fe nhar $1, mĝa $2.', +'viewcount' => 'had sfha tchaft {{PLURAL:$1|wa7d lmrra|$1 mrra}}.', +'protectedpage' => 'Ṣefḫa mhmiya', +'jumpto' => 'Sir le:', +'jumptonavigation' => 'Navigasyon', +'jumptosearch' => 'Qelleb', +'view-pool-error' => 'smh lina serveurat ayana +bzzaf dlmostakhdimin bghaw iwslo lhad sfha +aafak hawl mn ba3d wahd chwiya + +$1', +'pool-timeout' => 'Daz l-weqṫ faċ konṫi kaṫṫsenna z-zeqron', +'pool-queuefull' => 'Ṣeff l-ĥedma ĝamṛa', +'pool-errorunknown' => 'khata mjhol', + +# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations). +'aboutsite' => 'Kolċi ĝla {{SITENAME}}', +'aboutpage' => 'Project:Meĝlomaṫ', +'copyright' => 'L-moḫṫawa mojod fe $1', +'copyrightpage' => '{{ns:project}}:Copyrights', +'currentevents' => 'laahdath ljariya', +'currentevents-url' => 'Project:ahdat jariya', +'disclaimers' => 'Inḍaraṫ', +'disclaimerpage' => 'Project:Inḍaraṫ ĝammin', +'edithelp' => 'Mosaĝada', +'edithelppage' => 'Help:Kifaċ tṣayeb ċi ṣ-ṣefḫa', +'helppage' => 'Help:Meḍmon', +'mainpage' => 'Ṣ-Ṣefḫa l-owla', +'mainpage-description' => 'Ṣ-Ṣefḫa l-owla', +'policy-url' => 'Project:siyassa', +'portal' => 'bwabt lmojtamaaa', +'portal-url' => 'Project:bwabt lmojtamaaa', +'privacy' => 'Siyasa ĥoṣoṣiya', +'privacypage' => 'Project:Siyasa ĥoṣoṣiya', + +'badaccess' => 'Ġalat fe s-smaḫ', +'badaccess-group0' => 'mamsmohch lik tdkhl had ttbiq li bghiti', +'badaccess-groups' => 'had laction lli tlbtih msmoh ghir lmostkhdimin li kaynin f {{PLURAL:$2|group|wahd mn had les group}}: $1.', + +'versionrequired' => 'khassak version $1 dial mediawiki', +'versionrequiredtext' => 'noskha $1 dyal mediawiki mtloba bach tstaaml had sfha +chof [[Special:Version|sfht lversion]]', + +'ok' => 'Waĥĥa', +'pagetitle' => '$1 - {{SITENAME}}', +'pagetitle-view-mainpage' => '{{SITENAME}}', +'retrievedfrom' => 'Mrejjĝa men "$1"', +'youhavenewmessages' => 'Ĝendek $1 ($2).', +'newmessageslink' => 'méṣajaṫ jdad', +'newmessagesdifflink' => 'ṫ-ṫeġyir l-leĥĥer', +'youhavenewmessagesmulti' => 'Jawek méṣajaṫ jdad fe $1', +'editsection' => 'Ṣayeb', +'editsection-brackets' => '[$1]', +'editold' => 'ṣayeb', +'viewsourceold' => 'Ċof l-masdar', +'editlink' => 'ṣayeb', +'viewsourcelink' => 'Ċof l-ĝin', +'editsectionhint' => 'Ṣayeb s-séksyon : $1', +'toc' => 'L-Meḍmon', +'showtoc' => 'Werri', +'hidetoc' => 'Ḫebbi', +'thisisdeleted' => 'nĊof onstarjaa $1?', +'viewdeleted' => 'nchof $1?', +'restorelink' => '{{PLURAL:$1|wahd taadil tmsh|$1 taadilat tmshat}}', +'feedlinks' => 'tlqim:', +'feed-invalid' => 'nawaa ichtirak tlqim khata', +'feed-unavailable' => 'tlqimat makaynach', +'site-rss-feed' => 'L-flu RSS dyal $1', +'site-atom-feed' => 'Flu Atom dyal $1', +'page-rss-feed' => 'L-Flu RSS dyal $1', +'page-atom-feed' => 'L-Flu Atom dyal "$1"', +'feed-atom' => 'Atom', +'feed-rss' => 'RSS', +'red-link-title' => '$1 (ṣefḫa ma kaynaċ)', + +# Short words for each namespace, by default used in the namespace tab in monobook +'nstab-main' => 'Ṣefḫa', +'nstab-user' => 'Ṣ-Ṣefḫa dyal l-mosṫeĥdim', +'nstab-media' => 'sfha dyal media', +'nstab-special' => 'Ṣefḫa ĥaṣṣa', +'nstab-project' => 'Ṣefḫa dyal meċroĝ', +'nstab-image' => 'Fiċyé', +'nstab-mediawiki' => 'risala', +'nstab-template' => 'Modél', +'nstab-help' => 'sfhat lmosaaada', +'nstab-category' => 'Katégori', + +# Main script and global functions +'nosuchaction' => 'makaynch fiaal bhal hada', +'nosuchactiontext' => 'lfial li tlbti mashihch +imkn ghltti flktba dyal ladresse +hadchi imkn kadalik ichir lchi khataaa f {{SITENAME}}', +'nosuchspecialpage' => 'makaynach sfha bhad smiya', +'nospecialpagetext' => '<strong>tlbti sfha khassa makaynach</strong> +lista dyal safahat lkhassa ghatlgaha f [[Special:SpecialPages|{{int:specialpages}}]]', + +# General errors +'error' => "Ĥata'", +'databaseerror' => 'khataaa f qaaaidat lbayanat', +'dberrortext' => 'khata fsight amr qaaaidat lbayanat +hadchi iqdr ikon raja lchi khataa f lbrnamaj +akhir amr dyal qaaidat lbayanat kan +<blockquote><tt>$1</tt></blockquote> +dakhl had dalla "<tt>$2</tt>". +qaaidat lbayant rddat bhad lkhataa "<tt>$3: $4</tt>".', +'dberrortextcl' => 'wqĝ waḫd lmoċkil f siġt istiĝlam qaĝidat lbayanat + +aĥir talab istiĝlam qaĝidat lbayanat kan + +"$1" + +li hwa mn daĥl ddala "$2". + +qaĝidat lbayanat rjĝat lĥata\' "$3: $4"', +'laggedslavemode' => "'''attansyo''' sfḫa iqdr mafihach aĥir tḫditaṫ", +'readonly' => 'qaĝidat lbayanat msdoda', +'enterlockreason' => 'dĥl sabab lli ĥllak tsdha, okadalik lwaqt li momkin thll bqdha', +'missing-article' => 'Ma ṫṫelqaċ n-neṣ dyal ċi ṣefḫa l-li kanṫ ĥaṣṣha ṫṫelqa, smiyṫha "$1" $2. + +Ĝomoman had ċ-ċi kay-iwqeĝ faċ kaṫ-ṫbeĝ ċi lyan le waḫed d-diff l-li daz ĝlih l-weqṫ ola le l-historik dyal ċi ṣefḫa memḫiya. + +Ila ma kanṫċ, imken ikon ċi bog fe l-program. +Ĝafak ĝlem [[Special:ListUsers/sysop|l-adminisṫrator]] bla ma ṫnsa ma ṫĝtih l-ĝonwan dyal l-lyan.', +'missingarticle-rev' => '(n-nemra dyal l-vérsyon : $1)', +'missingarticle-diff' => '(lfarq: $1, $2)', +'internalerror' => 'khataaa dakhili', +'internalerror_info' => 'khataaa dakhili : $1', +'fileappenderrorread' => 'manqdroch nqraw "$1" atna\' lidafa.', +'fileappenderror' => 'maymknch ncopie had lfichier "$1" l hada "$2".', +'filecopyerror' => 'maymknch ncopie had lfichier "$1" l hada "$2".', +'filerenameerror' => 'maymknch nsmiw had lfichier "$1" l hada "$2".', +'filedeleteerror' => 'maymknch had lfichier "$1" itmsh .', +'directorycreateerror' => 'maymknch had lmojllad itnchaa "$1".', +'filenotfound' => 'maymknch nlgaw had lfichier"$1".', +'unexpected' => 'qima mamtwqaach: "$1"="$2".', +'formerror' => "khata':listimara matqdrch tnfd", +'badarticleerror' => 'mamyknch tdir had lfiil ala had sfha', +'badtitle' => 'aanwan mamzyanch', +'badtitletext' => 'L-Ĝonwan li tlebṫi ġalet, ĥawi, ola waqila hada ĝonwan fe bezzaf de l-loġaṫ ola fe bezzaf de l-maċariĝ. Imken ikon fih ċi ḫrof li ma imken lekċ ṫesṫeĝmelhom fe l-ĝanawin.', +'viewsource' => 'Ċof l-ĝin', +'viewsourcefor' => 'l $1', +'protectedpagetext' => 'had sfha mhmiya bach mataadlch baqi', +'viewsourcetext' => 'imkn lik tchof otcopie lmasdar dyak had sfha', +'ns-specialprotected' => 'sfahi lkhassa maymknch taadlha', + +# Virus scanner +'virus-scanfailed' => 's-skan fċel (kod $1)', +'virus-unknownscanner' => 'antivirus mjhol :', + +# Login and logout pages +'logouttext' => "''' nta daba kharj.''' + +ila bghiti tqdr tstamr tstaml {{SITENAME}} kamjhol , olla ila bghiti [[Special:UserLogin|tdkhl aawtani]] bnafs smiya ola bsmiya khra. + +tqdr tchof baad sfahi bhal ila msjl hta tfrgh lcache dyalk", +'welcomecreation' => '== mrhba bik, $1! == +lcont dyalk raha mojoda +matnsach tbddl[[Special:Preferences|{{SITENAME}} tfdilat dyal]].', +'yourname' => 'Smiyṫ l-mosṫeĥdim:', +'yourpassword' => 'Saroṫ:', +'yourpasswordagain' => 'aaawd ktb lmot de passe dyalk', +'remembermypassword' => 'Ĝqel ĝla smiyṫ l-ḫsab dyali fe had l-ordinaṫør (ġir limoddaṫ {{PLURAL:$1|yom waḫed|$1 iyyam}})', +'yourdomainname' => 'domain dyalk', +'login' => 'Dĥel', +'nav-login-createaccount' => 'Ṫkonékta / Ĥṫareĝ ċi konṫ', +'userlogin' => 'Ṫkonnékta / Ṣayeb ċi ḫsab', +'userloginnocreate' => 'Ṫkonékta', +'logout' => 'Ṫdékonékta', +'userlogout' => 'Ĥrej', +'notloggedin' => 'nta mamkoniktich', +'nologin' => 'maandkch cont ? $1', +'nologinlink' => 'Ḫell ċi ḫsab', +'createaccount' => 'Ḫell ċi ḫsab', +'gotaccount' => 'aandk deja cont ? $1', +'gotaccountlink' => 'Ṫkonékta', +'createaccountmail' => "b l'email", +'createaccountreason' => 'S-Sbab:', +'loginerror' => 'khataa f dokhol', +'createaccounterror' => "kayn chi mchkil f incha' lcont : $1", +'noname' => 'Ma kṫebṫiċ ċi smiyṫ l-mosṫeĥdim mqadda.', +'loginsuccesstitle' => 'dkhlti mzyan', +'loginsuccess' => 'Dĥelṫi mezyan fe {{SITENAME}} be smiyṫ "$1".', +'nouserspecified' => 'khassk tdkhl ism lmostakhdim.', +'login-userblocked' => 'Had l-mosṫeĥdim meḫbos. Konnéksyon memnoĝa.', +'wrongpassword' => 'S-Saroṫ ĝendek ġalet. +Ĝafak ĝawed keṫbo.', +'wrongpasswordempty' => 'Ma kṫebṫiċ s-saroṫ. +Ĝafak ĝawed ketbo.', +'password-name-match' => 'lmot de pass khassha tkon mkhtalfa ala ism lmostakhdim dyalk', +'mailmypassword' => 'Ṣifet li saroṫ jdid', +'passwordremindertitle' => 'Saroṫ jdid {{SITENAME}} ġir bidman.', +'noemail' => 'L-Mosṫeĥdim "$1" mazal me deĥĥel ḫṫa ċi imayl.', +'noemailcreate' => 'Ĥaṣ l-imayl dyalek ykon ṣaleḫ.', +'passwordsent' => 'Siftna lek saroṫ jdid fe l-imayl dyal "$1". Ĝafak ĝawed dĥel le ḫsabek faċ ywṣel lek.', +'mailerror' => "khata' atna' irsal lbarid: $1", +'emailconfirmlink' => "konfirmasyon dyal l'email", +'accountcreated' => 'lcompt tkriyat', +'loginlanguagelabel' => 'Loġa: $1', + +# Password reset dialog +'resetpass' => 'tbdl lmot de passe', +'resetpass_text' => '<!-- zid chi nass hna -->', +'oldpassword' => 'lmot de passe qdima :', +'newpassword' => 'lmot de passe jdida :', +'retypenew' => 'aaawd ktb lmot de passe jdida :', +'resetpass_submit' => 'rigler lmot de pass odkhl', +'resetpass-submit-loggedin' => 'tbdl lmot de passe', +'resetpass-submit-cancel' => 'Bettel', +'resetpass-temp-password' => 'mot de passe moaqata', + +# Edit page toolbar +'bold_sample' => 'Kṫaba ġliḍa', +'bold_tip' => 'Kṫaba ġliḍa', +'italic_sample' => 'Kṫaba mayla', +'italic_tip' => 'Kṫaba mayla', +'link_sample' => 'Ĝonwan l-lyan', +'link_tip' => 'Lyan daĥili', +'extlink_sample' => 'http://www.example.com Ĝonwan l-lyan', +'extlink_tip' => 'Lyan ĥariji (ĝqel ĝla http:// préfiks)', +'headline_sample' => 'Neṣ de l-ĝonwan.', +'headline_tip' => 'Ĝonwan mosṫawa 2', +'math_sample' => 'Kṫeb ĝalaqa de l-mat hnaya', +'math_tip' => 'Ĝalaqa de l-mat (LaTeX)', +'nowiki_sample' => 'N-Neṣ li ma mformatéċ keṫbo hna', +'nowiki_tip' => 'Ĝti n-neĥĥal le l-formataj', +'image_sample' => 'Example.jpg', +'image_tip' => "Fiċyé m'inséré", +'media_sample' => 'Example.ogg', +'media_tip' => 'Lyan dyal ċi fiċyé médya', +'sig_tip' => 'Ṫ-Ṫowqiĝ dyalek be s-saĝa o ṫ-ṫariĥ', +'hr_tip' => 'Ĥett horizontal (ma ṫkeṫṫerċ menno)', + +# Edit pages +'summary' => 'Moleĥĥaṣ:', +'subject' => 'Mowḍoĝ/Ĝonwan', +'minoredit' => 'Hada ṫeĝdil sġir', +'watchthis' => 'Ṫebbeĝ had ṣ-ṣefḫa', +'savearticle' => 'Ċejjel ṣ-ṣefḫa', +'preview' => 'L-Prévizualizasyon', +'showpreview' => 'Werri l-prévizualizasyon', +'showlivepreview' => 'aard mobachir', +'showdiff' => 'Werri ṫ-ṫeġyiraṫ', +'anoneditwarning' => "'''Ĝendak:''' Ma mkonéktéċ. +Ġayṫċejjel l-ĝonwan IP dyalek fe ṫariĥ had ṣ-ṣefḫa.", +'missingcommenttext' => 'afak dkhl taaliq ltaht', +'summary-preview' => 'Prévizualizasyon dyal l-moleĥĥaṣ:', +'blockedtitle' => 'had lmostakhdim tbloka', +'blockednoreason' => 'ta sabab mamaatich', +'whitelistedittitle' => 'khassk tdkhl bach thrr', +'whitelistedittext' => 'khassk $1 bach taadl sfahi', +'nosuchsectiontitle' => 'maymknch nlgaw lqissm', +'loginreqtitle' => 'khassk tsjl dokhol', +'loginreqlink' => 'Ṫkonékta', +'accmailtitle' => 'lmot de passe tsaft.', +'newarticle' => '(jdid)', +'newarticletext' => "Ṫbeĝṫi waḫed l-lyan li kayddi le waḫed ṣ-ṣefḫa li ṫṫemḫaṫ. +Baċ ṫsayeb had ṣ-ṣefḫa, bda ṫekṫeb fe ṣ-ṣendoq li l-ṫeḫṫ (ċof ila bġiṫi [[{{MediaWiki:Helppage}}|ṣ-ṣefḫa de l-mosaĝada]] le l-mazid de l-meĝlomaṫ). +Ila wṣelṫi hnaya ĝla ġefla, brek ĝla l-boton '''rjeĝ''' dyal n-navigaṫør internet dyalek.", +'noarticletext' => 'Ma kayen fe had s-saĝa ḫṫa neṣ fe had ṣ-ṣefḫa. +Imken lek [[Special:Search/{{PAGENAME}}|ṫqelleb ĝla ṣefḫa be had l-ĝonwan]] fe ṣ-ṣefḫaṫ l-ĥrin, +<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ṫqelleb fe l-ĝamaliyaṫ l-mlaqyin] +ola [{{fullurl:{{FULLPAGENAME}}|action=edit}} ṫsayeb ṣ-ṣefḫa]</span>.', +'noarticletext-nopermission' => 'Ma kayen fe had s-saĝa ḫṫa neṣ fe had ṣ-ṣefḫa. +Imken lek [[Special:Search/{{PAGENAME}}|ṫqelleb ĝla ṣefḫa be had l-ĝonwan]] fe ṣ-ṣefḫaṫ l-ĥrin, +<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ṫqelleb fe l-ĝamaliyaṫ l-mlaqyin] +ola [{{fullurl:{{FULLPAGENAME}}|action=edit}} ṫsayeb ṣ-ṣefḫa]</span>.', +'userpage-userdoesnotexist-view' => 'L-Ḫsab dyal l-mosṫeĥdim "$1" ma mċejjelċ.', +'updated' => '(mohdata)', +'note' => "'''molahada:'''", +'previewnote' => "'''Dir fe balek belli hadċi ġir prévizualizasyon.''' +Dakċi li beddelṫi mazal ma ṫċejjel !", +'editing' => 'Ṫ-Ṫeĝdil dyal $1', +'editingsection' => 'Ṣayeb $1 (séksyon)', +'editingcomment' => 'Ṣayeb $1 (séksyon jdida)', +'editconflict' => 'mdarba f thrir: $1', +'yourtext' => 'N-Neṣ dyalek', +'storedversion' => 'noskha msjla', +'yourdiff' => 'lforoq', +'copyrightwarning' => "L-Mosahamaṫ le {{SITENAME}} kollhom meĝṫabrin bḫal menċorin be ṫetbiq $2 (ċof $1 le mazid l-meĝlomaṫ). Ila ma bġiṫiċ belli n-nṣoṣ dyawlek ma iṫwezzĝoċ o ma iṫṣayboċ ki mma jab L-Lah, ĝafak ġir ma ṫḫetthomċ hnaya.<br /> +Ġadi ṫwaĝedna ayḍan belli nṫa li kṫebṫi hadċi kollo, o ma nqelṫihċ men ċi ĝin jayya men ḍ-ḍamn l-ĝomomi ola men meṣder mefṫoḫ weḫdaĥor. +'''MA ṪESṪEĜMELĊ L-ĤEDMA DYAL N-NAS LI FIHOM COPYRIGHT BLA MA ṪṪAĤOD L-'IDN MENHOM'''", +'templatesused' => 'Had ṣ-ṣefḫa {{PLURAL:$1|kaṫsṫeĝmel had l-modél|kaysṫeĝmel had l-modélaṫ}}:', +'templatesusedpreview' => '{{PLURAL:$1|Modél l-mesṫeĝmel|Modélaṫ l-mesṫeĝmlin}} fe had l-prévizualizasyon:', +'template-protected' => 'Ḫimaya', +'template-semiprotected' => '(ḫimaya ma kamlaċ)', +'hiddencategories' => '{{PLURAL:$1|L-Katégori l-mĥebbya li kaṫmlek|L-Katégoriyaṫ l-mĥebbyin li kaymelko}} had ṣ-ṣefḫa :', +'edittools' => '<!-- nass ghayban hna t7t t3dil ot7t istimarat raf3 sowar. -->', +'permissionserrors' => 'Ġalat fe s-smaḫ', +'permissionserrorstext-withaction' => "Ma ĝendekċ l-ḫaqq baċ $2, ĝlawed had {{PLURAL:$1|s-sabab|l-'asbiba}}", +'log-fulllog' => 'chod sijjil lkamil', +'edit-conflict' => 'mdarba f thrir', + +# Parser/template warnings +'parser-template-loop-warning' => 'tamm kachf halaqat qalab : [[$1]]', + +# Account creation failure +'cantcreateaccounttitle' => 'lcont maymknch tnchaa', + +# History pages +'viewpagelogs' => 'Ċof l-ĝamaliyaṫ dyal had ṣ-ṣefḫa', +'currentrev' => 'Ċof l-versyon l-leĥĥra', +'currentrev-asof' => 'L-Vérsyon l-leĥĥra nhar $2 mĝa s-saĝa $3', +'revisionasof' => 'Morajaĝa $1', +'previousrevision' => 'Morajaĝa qdem', +'nextrevision' => 'L-Vérsyon li mbeĝd →', +'currentrevisionlink' => 'Ċof l-versyon l-leĥĥra', +'cur' => 'daba', +'next' => 'li jay', +'last' => 'qbel', +'page_first' => 'lowla', +'page_last' => 'lkhra', +'histlegend' => 'Meĝlomaṫ ṫefsiriya : ({{MediaWiki:Cur}}) = l-ferq mĝa l-vérsyon dyal daba, ({{MediaWiki:Last}}) = l-ferq mĝa l-vérsyon li qbel, <b>m</b> = ṫeĝdil ma mohimċ bezzaf', +'history-fieldset-title' => 'Qelleb fe ṫ-ṫariĥ', +'history-show-deleted' => 'lmahdofa faqat', +'histfirst' => 'L-Owel', +'histlast' => 'L-Leĥĥer', +'historyempty' => '(khawi)', + +# Revision feed +'history-feed-title' => 'tarikh lmrajaaa', +'history-feed-item-nocomment' => 'Men $1 ḫṫal $2', + +# Revision deletion +'rev-deleted-comment' => '(taaliq thiyd)', +'rev-deleted-user' => '(ism lmostkhdim thiyd)', +'rev-delundel' => 'Biyyen/Ĥebbi', +'rev-showdeleted' => 'Werri', +'revdelete-nologtype-title' => 'la nawa sijil tamma iaataoho', +'revdelete-nologid-title' => 'modkhala sijjil ghayr sahiha', +'revdelete-show-file-submit' => 'iyih', +'revdelete-hide-text' => 'khbbi nass lmorajaa', +'revdelete-hide-image' => 'khbi lmohtawa dyal lfichier', +'revdelete-hide-name' => 'khbi lfiil olhadaf', +'revdelete-hide-comment' => 'khhbi taaliq taadil', +'revdelete-hide-user' => 'khbbi ism lmostakhdim/ip', +'revdelete-radio-same' => '(matghiyrch)', +'revdelete-radio-set' => 'iyih', +'revdelete-radio-unset' => 'la', +'revdelete-log' => 'S-Sbab:', +'revdel-restore' => 'Beddel ċ-ċofa', +'revdel-restore-deleted' => 'morajaaa mahdoufa', +'revdel-restore-visible' => "morajaat mar'iya", +'pagehist' => 'Ṫariĥ ṣ-ṣefḫa', +'deletedhist' => 'tarikh lmhdof', +'revdelete-content' => 'L-Meḍmon', +'revdelete-summary' => 'molkhass taadil', +'revdelete-uname' => 'Smiyṫ l-mosṫeĥdim:', +'revdelete-hid' => 'khbbi $1', +'revdelete-unhid' => 'biyn $1', +'revdelete-otherreason' => 'Sabab weḫdaĥor/zayed:', +'revdelete-reasonotherlist' => 'Sabab weḫdaĥor', +'revdelete-edit-reasonlist' => 'aadl asbab lhadf', +'revdelete-offender' => 'moallif lmorajaa', + +# Suppression log +'suppressionlog' => 'sijil likhfaaa', + +# History merging +'mergehistory' => 'dmj tawarikh sfha', +'mergehistory-from' => 'sfha lmasdar :', +'mergehistory-into' => 'sfha lhadaf :', +'mergehistory-submit' => 'dmj lmorajaat', +'mergehistory-reason' => 'S-Sbab:', + +# Merge log +'mergelog' => 'sjl damj', +'revertmerge' => 'Ḫiyyed ṫ-ṫeĥlat.', + +# Diffs +'history-title' => 'Ṫ-Ṫariĥ dyal lé-vérsyon dyal "$1"', +'difference' => '(Ferq mabin lé-vérsyon)', +'lineno' => 'Ṣter $1:', +'compareselectedversions' => 'Qaren lé-versyon li meĝzolin', +'editundo' => 'Rjeĝ', + +# Search results +'searchresults' => "N-Naṫa'ij dyal l-beḫṫ", +'searchresults-title' => 'N-Naṫa\'ij dyal l-beḫṫ ĝla "$1"', +'searchresulttext' => 'Ila bġiṫi kṫer de l-meĝlomaṫ ĝla {{SITENAME}}, ċof [[{{MediaWiki:Helppage}}|{{int:help}}]].', +'searchsubtitle' => "Qelebṫiw ĝla « '''[[:$1]]''' » ([[Special:Prefixindex/$1|ṣ-ṣefḫaṫ kolhom li badyin be « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ṣ-ṣefḫaṫ kolhom li mlaqyin mĝa « $1 »]])", +'searchsubtitleinvalid' => "Qellebṫi ĝla '''$1'''", +'titlematches' => 'onwan sfha yotabiq', +'notitlematches' => 'Ḫṫa ċi neṣ ma mlaqi mĝa dak ċ-ċi l-li kaṫ-qelleb ĝlih', +'textmatches' => 'neṣ sfha kaytabq', +'notextmatches' => 'Ḫṫa ċi neṣ ma mlaqi mĝa dakċi li kaṫqelleb ĝlih', +'prevn' => 'L-Li qbel {{PLURAL:$1|$1}}', +'nextn' => 'L-Li mbeĝd {{PLURAL:$1|$1}}', +'viewprevnext' => 'Ċof ($1 {{int:pipe-separator}} $2) ($3).', +'searchmenu-legend' => 'khiyarat lbaht', +'searchhelp-url' => 'Help:Meḍmon', +'searchprofile-articles' => 'sfht mohtawa', +'searchprofile-project' => 'sfhai dyal lmossada ol mchroa', +'searchprofile-images' => 'media', +'searchprofile-everything' => 'kolchi', +'searchprofile-advanced' => 'motaqaddim', +'searchprofile-articles-tooltip' => 'qllb f $1', +'searchprofile-project-tooltip' => 'qllb f $1', +'searchprofile-images-tooltip' => 'qllb f tsawr', +'search-result-size' => '$1 ({{PLURAL:$2|kelma weḫda|$2 kelmaṫ}})', +'search-result-score' => 'lirtibat: $1%', +'search-redirect' => '(Ṫeḫwil $1)', +'search-section' => '(seksyon $1)', +'search-suggest' => 'Waċ konṫi baġi ṫqol : $1', +'search-interwiki-caption' => 'Maċariĝ ĥĥoṫ', +'search-interwiki-default' => 'N-Naṫija dyal $1:', +'search-interwiki-more' => '(z-zyada)', +'search-mwsuggest-enabled' => 'be qṫiraḫaṫ', +'search-mwsuggest-disabled' => 'bla qṫiraḫaṫ', +'search-relatedarticle' => 'mortabita', +'mwsuggest-disable' => 'attl liqtirahat dyal AJAX', +'searcheverything-enable' => 'Qelleb fe maḫel s-smiyyaṫ', +'searchrelated' => 'mortabita', +'searchall' => 'kolċi', +'nonefound' => "'''Molaḫada''': Ma kayen ġir weḫdin men l-blaṣaṫ dyal s-smiyyaṫ li kanqellbo ĝlihom otomaṫikiyan. +Jerreb be l-préfiks \"all:\" baċ ṫqelleb ĝla l-meḍmon kollo (o ḫṫa ṣ-ṣefḫaṫ dyal n-niqaċ, l-modélaṫ, etc.) ola ṣṫeĝmel l-blaṣa dyal s-smiyya li bġiṫi bḫal ċi préfiks.", +'powersearch' => 'Ṫeqlab ṣĝib', +'powersearch-legend' => 'Ṫeqlab ṣĝib', +'powersearch-ns' => 'Qelleb fe maḫel s-smiyyaṫ', +'powersearch-redir' => "Lisṫaṫ 'ṫ-ṫeḫwilaṫ", +'powersearch-field' => 'Qeleb ĝla', +'powersearch-togglelabel' => 'Ĥṫar', +'powersearch-toggleall' => 'Kolċi', +'powersearch-togglenone' => 'Walo', +'search-external' => 'Qeleb ĝla bera', +'searchdisabled' => '{{SITENAME}} ma ĥedamċ. +Imken lik ṫqeleb fe google. +Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫin.', + +# Quickbar +'qbsettings' => "L-lawḫa 's-sariĝa", +'qbsettings-none' => 'Ma kaynċ', +'qbsettings-fixedleft' => "Meḫbos fe 'ċ-ċmal", +'qbsettings-fixedright' => "Meḫbos fe 'l-limin", +'qbsettings-floatingleft' => "Ḫor fe 'ċ-ċmal", +'qbsettings-floatingright' => "Ḫor fe 'l-limen", + +# Preferences page +'preferences' => 'Li kaṫfeḍḍel', +'mypreferences' => 'Ḫajaṫ li kanfeḍḍel', +'prefs-edits' => 'adad taadilat :', +'prefsnologin' => 'nta mamkoniktich', +'changepassword' => 'tbdl lmot de passe', +'prefs-skin' => 'frssada', +'skin-preview' => 'L-Prévizualizasyon', +'prefs-math' => 'mat', +'datedefault' => 'la tafdil', +'prefs-datetime' => 'tarikh o ssaa', +'prefs-personal' => 'milf lmostakhdim', +'prefs-rc' => 'Ṫ-Ṫeĝdilaṫ l-leĥĥra', +'prefs-watchlist' => 'qaimat lmoraqaba', +'prefs-watchlist-days' => 'adad kiyam alaard f qaimat lmoraqaba:', +'prefs-watchlist-days-max' => 'Maximmum 7 yam', +'prefs-watchlist-edits-max' => 'maximmum:1000', +'prefs-watchlist-token' => 'miftah qaimat lmoraqaba', +'prefs-misc' => 'motafarriqat', +'prefs-resetpass' => 'tbdl lmot de passe', +'prefs-email' => "reglage dyal l'email", +'prefs-rendering' => "l'apparence", +'saveprefs' => 'sjl', +'resetprefs' => 'hiyd tgyirat li mamsjlach', +'restoreprefs' => 'rjaa kaml liadadat liftiradiya', +'prefs-editing' => 'thrir', +'prefs-edit-boxsize' => 'hajm nafidat thrir', +'rows' => 'sofof:', +'columns' => 'aaamida:', +'searchresultshead' => 'Qelleb', +'resultsperpage' => 'adad nataij f sfha', +'contextlines' => 'adad lastor f kol natija', +'contextchars' => 'adad lahrof f satr:', +'stub-threshold-disabled' => 'makhdamch', +'timezonelegend' => 'lmintaqa zamaniya :', +'localtime' => 'Lwaqt lmahali :', +'timezoneuseserverdefault' => 'stakhdm iftirad serveur', +'timezoneuseoffset' => 'khor (hdd lfarq)', +'timezoneoffset' => 'Lfarq¹:', +'servertime' => 'wqt serveur', +'guesstimezone' => 'dkhl twqit mn navigateur', +'timezoneregion-africa' => 'Ifriqya', +'timezoneregion-america' => 'Mirikan', +'timezoneregion-antarctica' => 'Antarkṫik', +'timezoneregion-arctic' => 'Arkṫik', +'timezoneregion-asia' => 'Asya', +'timezoneregion-atlantic' => 'L-Moḫit L-Atlaṣi', +'timezoneregion-australia' => 'Osṫralya', +'timezoneregion-europe' => 'Oropa', +'timezoneregion-indian' => 'L-Moḫit L-Hindi', +'timezoneregion-pacific' => 'L-Moḫit L-Pasifik', +'allowemail' => "mkn tlqa l'email mn mostakhdimin khrin", +'prefs-searchoptions' => 'khiyarat lbaht', +'prefs-namespaces' => 'Maḫel s-smiyyaṫ :', +'defaultns' => 'olla qlb f had dominat :', +'default' => 'iftiradi', +'prefs-files' => 'Fiċyé', +'prefs-custom-css' => 'personalisé CSS', +'prefs-custom-js' => 'personalisé JavaScript', +'prefs-emailconfirm-label' => "konfirmi l'email:", +'prefs-textboxsize' => 'hajm nafidat tahrir', +'youremail' => 'I-Méyl', +'username' => 'Smiyṫ l-mosṫeĥdim:', +'uid' => 'raqm lmostakhdim :', +'prefs-memberingroups' => 'odw f {{PLURAL:$1|mjmoaa|mjmoaat}}:', +'prefs-registration' => 'wqt tasjil:', +'yourrealname' => 'smiytk lhaqiqiya:', +'yourlanguage' => 'Loġa', +'yourvariant' => 'lhja:', +'yournick' => 'sinyator jdid:', +'yourgender' => 'ljisn :', +'gender-unknown' => 'mamhddch', +'gender-male' => 'Dikr', +'gender-female' => "Mo'enaṫ", +'email' => 'I-Méyl', +'prefs-help-email-required' => "l'email darori", +'prefs-info' => "L-Meĝlomaṫ l-'asasiya", +'prefs-signature' => 'Sinyaṫur', +'prefs-dateformat' => 'sighat lwaqt', +'prefs-timeoffset' => 'lmintaqa zamaniya', +'prefs-advancedediting' => 'khiyarat motaqaddima', +'prefs-advancedrc' => 'khiyarat motaqaddima', +'prefs-advancedrendering' => 'khiyarat motaqaddima', +'prefs-advancedsearchoptions' => 'khiyarat motaqaddima', +'prefs-advancedwatchlist' => 'khiyarat motaqaddima', +'prefs-displayrc' => 'khiyarat laard', +'prefs-displaysearchoptions' => 'khiyarat laard', +'prefs-displaywatchlist' => 'khiyarat laard', +'prefs-diffs' => 'foroqat', + +# User rights +'userrights' => 'idarat salahiyat lmostakhdim', +'userrights-lookup-user' => 'idarat mjmoat lmostkhdim', +'userrights-user-editname' => 'dkhl ism mostakhdim :', +'editusergroup' => 'addl mjmoat lmostakhdim', +'userrights-editusergroup' => 'tadil mjmoaat lmostakhdim', +'saveusergroups' => 'hifd mjmoat lmotakhdim', +'userrights-groupsmember' => 'odw fi :', +'userrights-groupsmember-auto' => 'odw dimni f :', +'userrights-reason' => 'S-Sbab:', +'userrights-changeable-col' => 'lmojmoat li imkn li tghiyrha', +'userrights-unchangeable-col' => 'lmjmoat li maymknch lik tghyrha', +'userrights-irreversible-marker' => '$1*', + +# Groups +'group' => 'majmoaa:', +'group-user' => 'Mosṫeĥdimon', +'group-autoconfirmed' => 'mostakhdimon maakadon automatikiyan', +'group-bot' => 'botat', +'group-sysop' => 'Wébmodirin', +'group-bureaucrat' => 'bitoqratiyon', +'group-suppress' => 'noddar', +'group-all' => '(kolchi)', + +'group-user-member' => 'Mosṫeĥdim', +'group-autoconfirmed-member' => "Mosṫeĥdim moakkad tilqa'iyan", +'group-bot-member' => 'bot', +'group-sysop-member' => 'Wébmodirin', +'group-bureaucrat-member' => 'biroqrat', +'group-suppress-member' => 'nadhir', + +'grouppage-user' => '{{ns:project}}:mostakhdimon', +'grouppage-autoconfirmed' => '{{ns:project}}:mostakhdimon mofaalon tilqaiyan', +'grouppage-bot' => '{{ns:project}}:Botat', +'grouppage-sysop' => '{{ns:project}}:Wébmodirin', +'grouppage-bureaucrat' => '{{ns:project}}:biroqratiyon', +'grouppage-suppress' => '{{ns:project}}:Ouversayt', + +# Rights +'right-read' => 'qra safha', +'right-edit' => 'taadil sfahi', +'right-createpage' => 'inchaa sfahi (li hiya machi sfahi dyal niqach)', +'right-createtalk' => 'inchaa sfahi dyal niqach', +'right-createaccount' => 'inchaa ism mostakhdim jadid', +'right-minoredit' => 'taalim ala koll taadilat katafifa', +'right-move' => 'Neqqel ṣ-ṣefḫa', +'right-move-subpages' => 'naql sfahi maa sfahiha lfariya', +'right-move-rootuserpages' => 'naql sfahi d lmostakhdimin lassassiya', +'right-movefile' => 'naql lfichiyat', +'right-upload' => 'Ṣifet ċi fiċyé', +'right-delete' => "Mḫi had 'ṣ-ṣefḫa", +'right-undelete' => 'rj3 sfha', +'right-suppressionlog' => 'chouf sijillat sirriya', +'right-unblockself' => 'ihiydo lblokage ala ryoshom', +'right-protect' => 'taghyir mostawayat lhimaya wtadil sfahi li mhmiyin', +'right-rollback' => 'srtjaa taadilat akhr mostkhdim adl sfha mayana', +'right-noratelimit' => "mamt'atrch b hodod lmoaddal", +'right-import' => 'importé sfahi mn wikiat khrin', +'right-importupload' => 'importi sfahi mn fichier marfoa', +'right-patrol' => 'allm ala taadilat lkhrin kamorajaa', +'right-autopatrol' => 'alm taadilat lmostakhdim morajaa tilqaiya', +'right-patrolmarks' => 'chof alamat lmorajaa f ahdat tghyirat', +'right-unwatchedpages' => 'chof sfahi li mamraqbinch', +'right-trackback' => 'dir trackback', +'right-mergehistory' => 'dmj tarikh sfahi', +'right-userrights' => 'taadil kol salahiyat lmostkhdimin', +'right-userrights-interwiki' => 'taadil salahiyat lmostkhdim lmostkhdimin f lwikiyat lkhrin', +'right-siteadmin' => 'sd o zl qaidat lbayant', +'right-reset-passwords' => 'awd rigli lmot de passe dyal lmostkhdimin lkhrin', +'right-override-export-depth' => 'tsdir sfahi obinha sfahi lmawsola hta lomq 5', +'right-sendemail' => 'sift email lmostkhdimin lkhrin', + +# User rights log +'rightslog' => 'Ĝamaliyaṫ ḫoqoq l-mosṫeĥdim', +'rightslogtext' => 'hada sijil btaghyirat f salahiyat lmostkhdimin', +'rightslogentry' => 'ghyr salahiyat $1 mn $2 l $3', +'rightsnone' => '(walo)', + +# Associated actions - in the sentence "You do not have permission to X" +'action-read' => "Ĥṫareĝ had 'ṣ-ṣefḫa", +'action-edit' => 'Ṣayeb had ṣ-ṣefḫa', +'action-createpage' => 'inchaa sfahi jdad', +'action-createtalk' => 'inchaa sfahi dyal niqach', +'action-createaccount' => 'inchaa had ism mostakhdim', +'action-minoredit' => 'allm had tghyir katafif', +'action-move' => 'Neqqel had ṣ-ṣefḫa', +'action-move-subpages' => 'nql had sfha osfahi lfaraiya dyalha', +'action-move-rootuserpages' => 'naql sfahi d lmostakhdimin lassassiya', +'action-movefile' => 'Neqqel had lfichier', +'action-upload' => 'Ṣifet ċi fiċyé', +'action-reupload' => 'ktb ala had lfichier li deja kayn', +'action-reupload-shared' => 'ktb ala had lfichier f depot mochtarak', +'action-upload_by_url' => 'rfa had lfichier mn URL', +'action-writeapi' => 'stakhdem lkitaba API', +'action-delete' => 'Mḫi had ṣ-ṣefḫa', +'action-deleterevision' => 'mhi had lmorajaa', +'action-deletedhistory' => 'choof tarikh sfahi lmhdoufa', +'action-browsearchive' => 'qelleb f sfahi lmhdoufa', +'action-undelete' => 'rjaa had ṣ-ṣefḫa', +'action-suppressrevision' => 'reviem o sjl had lmorajaa lmkhfiya', +'action-suppressionlog' => 'chof had sijil lkhass', +'action-block' => 'mnaa had lmostkhdim mn taadil', +'action-protect' => 'ghiyr mostawayat lhimaya dyal had sfha', +'action-import' => 'importi had sfha mn wiki akhr', +'action-importupload' => 'amporti had sfha mn fichier mrfoa', +'action-patrol' => 'alm ala taadilat lkhrin kamorajaa', +'action-autopatrol' => 'alm taadil dualk kamorajaa', +'action-unwatchedpages' => 'chof lista dyal sfahi li mamraqbach', +'action-trackback' => 'dir trackback', +'action-mergehistory' => 'dmj tarikh had sfha', +'action-userrights' => 'taadil kol salahiyat lmostkhdimin', +'action-userrights-interwiki' => 'taadil salahiyat lmostkhdimin f lwikiyat lkhrin', +'action-siteadmin' => 'sd o7l qaidat lbayant', + +# Recent changes +'nchanges' => '{{PLURAL:$1|ṫeġyira weḫda|$1 dyal ṫ-ṫeġyiraṫ}}', +'recentchanges' => 'Ṫ-Ṫeĝdilaṫ l-leĥĥra', +'recentchanges-legend' => 'Opsyon dyal ṫ-ṫeġyiraṫ l-leĥĥra', +'recentchangestext' => 'Ṫebbeĝ ṫ-ṫeĝdilaṫ l-leĥĥrin dyal had l-wiki fe waḫed l-flu.', +'recentchanges-feed-description' => 'Ṫebbeĝ ṫ-ṫeĝdilaṫ l-leĥĥrin dyal had l-wiki fe waḫed l-flu.', +'recentchanges-label-newpage' => "anch' had tadil sfha jdida", +'recentchanges-label-minor' => 'Hada ṫeĝdil sġir', +'recentchanges-label-bot' => 'had taadil darou bot', +'recentchanges-label-unpatrolled' => 'had taadil matrajach', +'rcnote' => 'Hnaya ġaṫelqaw {{PLURAL:$1|ṫ-ṫeġyira l-leĥĥra li ṫdareṫ|l-$1 dyal ṫ-ṫeġyiraṫ l-leĥĥrin li ṫdaro}} tol {{PLURAL:$2|l-yom l-leĥĥer|l-<b>$2</b> iyam l-leĥĥra}} ḫtal nhar $4 mĝa s-saĝa $5.', +'rcnotefrom' => "hna taghirat mn '''$2''' (tal '''$1''' maaroda).", +'rclistfrom' => 'Werri ṫeġyiraṫ jdad badyen men $1', +'rcshowhideminor' => '$1 Ṫeĝdilaṫ ma mohimminċ bezzaf', +'rcshowhidebots' => '$1 R-Robowaṫ', +'rcshowhideliu' => '$1 l-mosṫeĥdimin l-mċejjlin', +'rcshowhideanons' => '$1 mosṫeĥdimin mĥebbyin', +'rcshowhidepatr' => '$1 taadilat lmorajaa', +'rcshowhidemine' => '$1 ṫ-ṫeĝdilaṫ dyawli', +'rclinks' => 'Werri l-$1 dyal ṫ-ṫeġyiraṫ l-leĥĥrin li ṫdaro fe had l-$2 l-iyam l-leĥĥrin<br />$3.', +'diff' => 'ferq', +'hist' => 'Ṫariĥ', +'hide' => 'Ĥebbi', +'show' => 'Werri', +'minoreditletter' => 'ṣ', +'newpageletter' => 'J', +'boteditletter' => 'b', +'sectionlink' => '→', +'number_of_watching_users_pageview' => '[$1 katchof {{PLURAL:$1|mostkhdim|mostkhdimin}}]', +'rc_categories' => 'limiti tsnifat (frqha b "|")', +'rc_categories_any' => 'ay wahd', +'rc-change-size' => '$1', +'newsectionsummary' => '/* $1 */ qism jdid', +'rc-enhanced-expand' => 'Werri ṫ-ṫafaṣil (kayḫṫaj JavaScript)', +'rc-enhanced-hide' => 'Ĥebbi ṫ-ṫafaṣil', + +# Recent changes linked +'recentchangeslinked' => 'L-mṫidad dyal ṣ-ṣefḫaṫ l-li mlaqyin', +'recentchangeslinked-feed' => 'L-mṫidad dyal ṣ-ṣefḫaṫ l-li mlaqyin', +'recentchangeslinked-toolbox' => 'L-mṫidad dyal ṣ-ṣefḫaṫ l-li mlaqyin', +'recentchangeslinked-title' => 'Ṫ-Ṫeġyiraṫ li mlaqyin mĝa "$1"', +'recentchangeslinked-backlink' => '← $1', +'recentchangeslinked-noresult' => 'ta tghyir f sfahi mrtabta f lmodda li drtiha', +'recentchangeslinked-summary' => "Hadi lista dial 'ṫ-ṫeġyiraṫ li ṫdaro mo'aĥarane le 'ṣ-ṣefḫaṫ li mlaqyin mĝa 'ṣ-ṣefḫa l-meĝniya (ola le 'aĝda' dial ċi ṣefa mĝayana). 'Ṣ-Ṣefḫaṫ li [[Special:Watchlist|mṫebeĝ]] mekṫobine be ḫrof ġlaḍ.", +'recentchangeslinked-page' => 'Smiyṫ ṣ-ṣefḫa', +'recentchangeslinked-to' => 'Ċof ṫ-ṫeġyiraṫ dyal ṣ-ṣefḫaṫ li fihom ċi lyan kayddik le ṣ-ṣefḫa li bġiṫi fe blaṣt ma ṫdir l-ĝeks', + +# Upload +'upload' => 'Ṣifet ċi fiċyé', +'uploadbtn' => 'Ṣifet ċi fiċyé', +'reuploaddesc' => "ilgha' rojoa orjaa l upload form", +'upload-tryagain' => 'fist lmodifikasyon', +'uploadnologin' => 'nta mamkoniktich', +'uploadnologintext' => 'khassk [[Special:UserLogin|tsjl]] bach tsift fichier.', +'uploadlog' => 'Øplowdaṫ', +'uploadlogpage' => 'Øplowdaṫ', +'filename' => 'smiyt lfichier', +'filedesc' => 'Moleĥĥaṣ:', +'fileuploadsummary' => 'Summary:', +'filereuploadsummary' => 'Ṫ-Ṫeġyiraṫ de l-fichier', +'filestatus' => 'halat hoqoq naskh:', +'filesource' => 'masdar :', +'uploadedfiles' => 'Ṣifet chi fiċyé', +'ignorewarnings' => 'tjahl thdirat', +'file-too-large' => 'lfichier kbir bzzaf', +'filename-tooshort' => 'smiyt lfichier qssira bzaf', +'filetype-banned' => 'had nawa lmilf mamnoa', +'verification-error' => 'had lfichier fih chi defout', +'hookaborted' => 'taadil li bghiti dirou ojhida mn tamdid lhook', +'illegal-filename' => 'had smiyt lmillaf mamnoaa', +'overwrite' => 'maymknch tktb fog fichier deja kayn', +'unknown-error' => "khata' mjhol wqaa", +'tmp-create-error' => 'maymknch nkriyiw fichier temporaire.', +'tmp-write-error' => "khata' f kitabat lmilaf lmo'aqqat", +'uploadwarning' => 'tahdir rafaa', +'uploadwarning-text' => 'afak bdl description dyal lmilaf ltaht ohawl awtani', +'savefile' => 'sjjl had lfichier', +'uploadedimage' => 'øplowda "[[$1]]"', +'overwroteimage' => 'sift noskha jdida dyal "[[$1]]"', +'uploaddisabled' => 'upload maatl', +'copyuploaddisabled' => 'sift b URL makhdamch', +'uploadfromurl-queued' => 'sift dyamlk tzad l servic', +'uploaddisabledtext' => 'sift dyal lfichier makhdamch', +'upload-source' => 'lmilffat lmasdariya', +'sourcefilename' => 'ism milf lmasdar :', +'sourceurl' => 'URL dyal lmasdar:', +'destfilename' => 'lmif lmostadhdaf:', +'upload-maxfilesize' => 'lhajm laqssa : $1', +'upload-description' => 'wasi lfichier', +'upload-options' => 'khiyarat rafa', +'watchthisupload' => 'Watch this file', +'filename-prefix-blacklist' => ' #<!-- khlli had str kima hwa --> <pre> +# sigha bhal hakka: +# * aych haja mn "#" tal akhir nass rah taaliq +# * Every non-blank line is a prefix for typical file names assigned automatically by digital cameras +CIMG # Casio +DSC_ # Nikon +DSCF # Fuji +DSCN # Nikon +DUW # some mobile phones +IMG # generic +JD # Jenoptik +MGP # Pentax +PICT # misc. + #</pre> <!-- khlli had str kima hwa -->', +'upload-failure-subj' => 'mochila f sift dyal lfichier', +'upload-warning-subj' => 'tahdir rafaa', + +'upload-proto-error' => 'protocol machi hwa hadak', +'upload-file-error' => 'khataaa dakhili', +'upload-unknown-size' => 'hakm mamaarofch', +'upload-http-error' => "lgina wahd khata' HTTP : $1", + +# img_auth script messages +'img-auth-accessdenied' => 'lwosol trfd', +'img-auth-streaming' => 'ard "$1".', + +# HTTP errors +'http-invalid-url' => 'URL makhdamch : $1', +'http-read-error' => "khata' qira'at HTTP.", +'http-timed-out' => 'salat moddat mohlat talab dyal HTTp.', +'http-curl-error' => "khata' f jalb lmassar: $1", +'http-host-unreachable' => 'manqdroch nwslo l had lmassar.', + +# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html> +'upload-curl-error6' => 'manqdroch nwslo l had lmassar.', +'upload-curl-error28' => 'salat moddat rafa', + +'license' => 'tarkhiss :', +'license-header' => 'tarkhiss', +'nolicense' => 'ta wahd mamhddch', +'license-nopreview' => '(lpreview makaynch)', +'upload_source_url' => '(massar shih,imkn twssl lih)', +'upload_source_file' => '(fichier f lpc dyalk)', + +# Special:ListFiles +'imgfile' => 'Fiċyé', +'listfiles' => 'lista dyal lfichiyat', +'listfiles_date' => 'tarikh', +'listfiles_name' => 'smiya', +'listfiles_user' => 'Mosṫeĥdim', +'listfiles_size' => 'lhajm', +'listfiles_description' => 'wasf', +'listfiles_count' => 'naskh', + +# File description page +'file-anchor-link' => 'Fiċyé', +'filehist' => 'Ṫariĥ l-fiċyé', +'filehist-help' => 'Brek ĝla ṫ-ṫariĥ o s-saĝa baċ ṫċof l-fiċyé bḫal li kan fe hadik l-owqiṫa.', +'filehist-deleteall' => 'Suprimi kolchi', +'filehist-deleteone' => 'Suprimi', +'filehist-revert' => 'Rejjeĝ', +'filehist-current' => 'dyal daba', +'filehist-datetime' => 'Nhar/Saĝa', +'filehist-thumb' => 'Ṫeṣwira mṣeġġra', +'filehist-thumbtext' => 'Ṫ-Ṫeṣġir dyal l-vérsyon dyal nhar $2 mĝa s-saĝa $3', +'filehist-nothumb' => 'la tasghir', +'filehist-user' => 'Mosṫeĥdim', +'filehist-dimensions' => 'T-Tol o l-ĝerḍ', +'filehist-filesize' => 'hajm lfichier', +'filehist-comment' => 'Ĝelleq', +'filehist-missing' => 'fichier makaynch', +'imagelinks' => 'Lyanaṫ l-fiċyé', +'linkstoimage' => '{{PLURAL:$1|Had ṣ-ṣefḫa kaṫsṫeĝmel|Had l-$1 de ṣ-ṣefḫaṫ kaysṫeĝmlo}}:', +'sharedupload' => 'Had l-fiċyé jay men $1 o maċariĝ ĥrin imken lhom isṫeĝmloh.', +'uploadnewversion-linktext' => 'Øplowdi vérsyon jdida dyal had l-fiċyé', +'shared-repo-from' => 'mn $1', +'shared-repo' => 'depot mochtarak', + +# File reversion +'filerevert' => 'rjjea $1', +'filerevert-backlink' => '← $1', +'filerevert-legend' => 'rjjea lfichier', +'filerevert-comment' => 'S-Sbab:', +'filerevert-submit' => 'Rejjeĝ', + +# File deletion +'filedelete' => 'suprimi $1', +'filedelete-backlink' => '← $1', +'filedelete-legend' => 'quprimi kolchi', +'filedelete-comment' => 'S-Sbab:', +'filedelete-submit' => 'Suprimi', +'filedelete-otherreason' => 'Sabab weḫdaĥor/zayed:', +'filedelete-reason-otherlist' => 'Sabab weḫdaĥor', + +# MIME search +'mimetype' => 'nawa lmilf:', +'download' => 'telecharji', + +# Unwatched pages +'unwatchedpages' => 'sfahi mamraqbach', + +# List redirects +'listredirects' => "Lisṫaṫ 'ṫ-ṫeḫwilaṫ", + +# Unused templates +'unusedtemplates' => 'qwalb mamstkhmdach', +'unusedtemplateswlh' => 'wslat khrin', + +# Random page +'randompage' => 'sfahi achwaiya', + +# Statistics +'statistics' => 'Staṫisṫik', +'statistics-header-pages' => "ihsa'at sfahi", +'statistics-header-edits' => "ihsa'at taadilat", +'statistics-header-views' => "ihsa'at lmochahada", +'statistics-header-users' => "ihsa'at lmstkhdimin", +'statistics-header-hooks' => "ihsa'at khra", +'statistics-articles' => 'sfht mohtawa', +'statistics-pages' => 'Ṣefḫa', +'statistics-files' => 'Ṣifet ci fiċyé', +'statistics-edits-average' => 'otawassit taadilat lkol sfha', +'statistics-views-total' => 'chof total', +'statistics-views-peredit' => 'lmochahadat lkol taadil', +'statistics-users-active' => 'mostakhdimon nachtin', +'statistics-mostpopular' => 'aktar sfahi mochahada', + +'disambiguations' => 'sfahi dyal tawdih', +'disambiguationspage' => 'Template:tawdih', + +'double-redirect-fixer' => 'mosslih tahwil', + +'brokenredirects' => 'tahwilat makhddamach', +'brokenredirects-edit' => 'Ĝedel', +'brokenredirects-delete' => 'Suprimi', + +'withoutinterwiki-legend' => 'prifix', +'withoutinterwiki-submit' => 'Werri', + +# Miscellaneous special pages +'nbytes' => '$1 {{PLURAL:$1|okté|okté}}', +'nmembers' => "$1 {{PLURAL:$1|Ĝoḍw|Aĝḍa'}}", +'lonelypages' => 'sfahi itima', +'uncategorizedpages' => 'sfahi mamsnfinch', +'uncategorizedcategories' => 'tsnifat mamsnfinch', +'uncategorizedimages' => 'fichiyat mamsnfinch', +'uncategorizedtemplates' => 'qwalb mamsnfinch', +'unusedcategories' => 'tsnifat mabqatch mstaamla', +'unusedimages' => 'milfat mamstkhdmach', +'popularpages' => 'sfahi mchhora', +'wantedcategories' => 'tsnifat mtloba', +'wantedpages' => 'sfahi mtloba', +'wantedfiles' => 'milfat mtloba', +'wantedtemplates' => 'qwalb mtloba', +'mostlinked' => 'akta sfahi waslan', +'mostlinkedcategories' => 'aktar tsnifat irtibatan', +'mostlinkedtemplates' => 'aktar lqwalb waslan', +'mostcategories' => 'aktar sfahi tsnifan', +'mostimages' => 'aktar lmilfat irtibatan', +'mostrevisions' => 'aktar sfahi taadilan', +'prefixindex' => 'Ṣ-Ṣefḫaṫ kolhom be l-prefiks', +'shortpages' => 'sfahi qssar', +'longpages' => 'sfahi twila', +'deadendpages' => 'sfahi andha nihaya msdoda', +'protectedpages' => 'Ṣfaḫi mhmiya', +'protectedtitles' => 'Ĝanawin meḫmiya', +'listusers' => 'lista dyal lmostkhdimin', +'listusers-editsonly' => 'Werri ġir l-mosṫeĥdimin li fayeṫ sahmo.', +'listusers-creationsort' => 'Jmeĝ ĝla ḫsab ṫariĥ l-ĥṫiraĝ', +'usereditcount' => '$1 ṫeĝdil{{PLURAL:$1||aṫ}}', +'usercreated' => "tnch' f $1 saaa $2", +'newpages' => 'Ṣefḫaṫ jdad', +'newpages-username' => 'Smiyṫ l-mosṫeĥdim:', +'ancientpages' => 'aqdam sfahi', +'move' => 'Neqqel', +'movethispage' => 'Neqqel had ṣ-ṣefḫa', +'notargettitle' => 'makanch hadaf', +'notargettext' => 'mahdditch sfha lhadaf ola lmostkhdim bach tdir had lkhassiya', +'nopagetitle' => 'makaynach sfha hadaf bhal hadi', +'nopagetext' => 'sfha lhadaf li hdditiha makaynach', +'pager-newer-n' => '{{PLURAL:$1|l-leĥĥra|$1 l-leĥĥrin}}', +'pager-older-n' => '{{PLURAL:$1|l-qdima gaĝ|l-qdam gaĝ $1}}', +'suppress' => 'Oversight', + +# Book sources +'booksources' => 'Ĝyon l-kṫab', +'booksources-search-legend' => 'Qelleb ĝla l-kṫoba', +'booksources-isbn' => 'ISBN:', +'booksources-go' => 'Sir', + +# Special:Log +'specialloguserlabel' => 'Mosṫeĥdim:', +'speciallogtitlelabel' => "l'adresse:", +'log' => 'Ĝamaliyaṫ', +'all-logs-page' => 'kol sijillat laama', + +# Special:AllPages +'allpages' => 'Ṣ-Ṣefḫaṫ kamlin', +'alphaindexline' => 'Men $1 ḫṫal $2', +'nextpage' => 'sfha jaya ($1)', +'prevpage' => 'Ṣ-Ṣefḫa li qbel ($1)', +'allpagesfrom' => 'Werri ṣ-ṣefḫaṫ li badyin men:', +'allpagesto' => 'Werri ṣ-ṣefḫaṫ ḫṫal:', +'allarticles' => 'Ṣ-Ṣefḫaṫ kolhom', +'allinnamespace' => 'kol sfahi (f nitaq $1)', +'allnotinnamespace' => 'kol sfahi (machi f nitaq $1)', +'allpagesprev' => 'li sbq', +'allpagesnext' => 'li jay', +'allpagessubmit' => 'Sir', +'allpagesprefix' => 'biyn sfahi katbda b:', + +# Special:Categories +'categories' => 'tsnifat', +'special-categories-sort-count' => 'rttb bladad', +'special-categories-sort-abc' => 'rttb blhorof', |