r96498 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r96497‎ | r96498 | r96499 >
Date:21:04, 7 September 2011
Author:catrope
Status:ok
Tags:
Comment:
1.18: MFT r95171, r95409, r95436, r95458, r95467, r95470, r95475, r95493, r95521, r95525, r95540. Also merged r93382, r93383, r94236 (which got reverted in a later merged revision) because that made the merge easier.
Modified paths:
  • /branches/REL1_18/extensions/CreateBox/CreateBox.php (modified) (history)
  • /branches/REL1_18/extensions/ParserFunctions/Convert.php (modified) (history)
  • /branches/REL1_18/extensions/ParserFunctions/ParserFunctions.i18n.php (modified) (history)
  • /branches/REL1_18/extensions/ParserFunctions/convertTests.txt (modified) (history)
  • /branches/REL1_18/phase3/RELEASE-NOTES-1.18 (modified) (history)
  • /branches/REL1_18/phase3/includes/AutoLoader.php (modified) (history)
  • /branches/REL1_18/phase3/includes/Exception.php (modified) (history)
  • /branches/REL1_18/phase3/includes/GlobalFunctions.php (modified) (history)
  • /branches/REL1_18/phase3/includes/HTMLForm.php (modified) (history)
  • /branches/REL1_18/phase3/includes/OutputPage.php (modified) (history)
  • /branches/REL1_18/phase3/includes/Preferences.php (modified) (history)
  • /branches/REL1_18/phase3/includes/Title.php (modified) (history)
  • /branches/REL1_18/phase3/includes/Wiki.php (modified) (history)
  • /branches/REL1_18/phase3/includes/parser/Parser.php (modified) (history)
  • /branches/REL1_18/phase3/languages/messages/MessagesEn.php (modified) (history)
  • /branches/REL1_18/phase3/maintenance/Maintenance.php (modified) (history)
  • /branches/REL1_18/phase3/maintenance/refreshImageMetadata.php (added) (history)
  • /branches/REL1_18/phase3/resources/Resources.php (modified) (history)
  • /branches/REL1_18/phase3/resources/mediawiki.page/mediawiki.page.mwsuggest.js (deleted) (history)
  • /branches/REL1_18/phase3/resources/mediawiki.special/mediawiki.special.preferences.js (modified) (history)
  • /branches/REL1_18/phase3/skins/common/commonPrint.css (modified) (history)
  • /branches/REL1_18/phase3/skins/common/mwsuggest.js (added) (history)
  • /branches/REL1_18/phase3/skins/common/shared.css (modified) (history)
  • /branches/REL1_18/phase3/skins/monobook/main.css (modified) (history)

Diff [purge]

Index: branches/REL1_18/extensions/CreateBox/CreateBox.php
@@ -63,7 +63,7 @@
6464 $title = Title::newFromText( $prefix . $text );
6565 if( is_null( $title ) ) {
6666 global $wgTitle;
67 - $wgTitle = new BadTitle;
 67+ $wgTitle = SpecialPage::getTitleFor( 'Badtitle' );
6868 throw new ErrorPageError( 'badtitle', 'badtitletext' );
6969 } elseif( $title->getArticleID() == 0 ) {
7070 acRedirect( $title, 'edit' );
Index: branches/REL1_18/extensions/ParserFunctions/convertTests.txt
@@ -203,7 +203,7 @@
204204 <ul><li>0.01 kilometres
205205 </li><li>0.01kilometres
206206 </li><li>10,000 metres
207 -</li><li>0.1 milimetres of mercury
 207+</li><li>0.1 millimetres of mercury
208208 </li></ul>
209209
210210 !! end
@@ -220,7 +220,7 @@
221221 <ul><li>0.01 meters
222222 </li><li>10,000,000 meters
223223 </li><li>0.01 megameters
224 -</li><li>0.1 milimeters of mercury
 224+</li><li>0.1 millimeters of mercury
225225 </li><li><strong class="error">Error: unknown unit "pa"</strong>
226226 </li></ul>
227227
Index: branches/REL1_18/extensions/ParserFunctions/Convert.php
@@ -563,7 +563,7 @@
564564
565565 'bar' => array( 100000, 'bar', false ),
566566 'decibar' => array( 10000, 'dbar', false ),
567 - 'milibar' => array( 100 , 'mbar|mb', false ),
 567+ 'millibar' => array( 100 , 'mbar|mb', false ),
568568 'kilobarye' => array( 100, 'kba', false ),
569569 'barye' => array( 0.1, 'ba', false ),
570570
@@ -588,7 +588,7 @@
589589 */
590590 protected static $prefixes = array(
591591 'kilo' => array( 1E3, 'k' ),
592 - 'mili' => array( 1E-3, 'm' ),
 592+ 'milli' => array( 1E-3, 'm' ),
593593 'centi' => array( 1E-2, 'c' ),
594594 'giga' => array( 1E9, 'G' ),
595595 'micro' => array( 1E-6, '(?:\x{03BC}|\x{00B5})' ), # There are two similar mu characters
Index: branches/REL1_18/extensions/ParserFunctions/ParserFunctions.i18n.php
@@ -69,7 +69,7 @@
7070 'pfunc-convert-prefix-deca' => 'deca',
7171 'pfunc-convert-prefix-deci' => 'deci',
7272 'pfunc-convert-prefix-centi' => 'centi',
73 - 'pfunc-convert-prefix-mili' => 'mili',
 73+ 'pfunc-convert-prefix-milli' => 'milli',
7474 'pfunc-convert-prefix-micro' => 'micro',
7575 'pfunc-convert-prefix-nano' => 'nano',
7676 'pfunc-convert-prefix-pico' => 'pico',
@@ -90,7 +90,7 @@
9191 'pfunc-convert-prefix-deca-abbr' => 'da',
9292 'pfunc-convert-prefix-deci-abbr' => 'd',
9393 'pfunc-convert-prefix-centi-abbr' => 'c',
94 - 'pfunc-convert-prefix-mili-abbr' => 'm',
 94+ 'pfunc-convert-prefix-milli-abbr' => 'm',
9595 'pfunc-convert-prefix-micro-abbr' => 'μ',
9696 'pfunc-convert-prefix-nano-abbr' => 'n',
9797 'pfunc-convert-prefix-pico-abbr' => 'p',
@@ -250,14 +250,14 @@
251251 'pfunc-convert-unit-pressure-barye' => 'barye',
252252 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosphere|atmospheres}}',
253253 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|Torr|Torr}}',
254 - 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|milimeter of mercury|milimeters of mercury}}',
 254+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|millimeter of mercury|millimeters of mercury}}',
255255 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|inch of mercury|inches of mercury}}',
256256 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|pound per square-inch|pounds per square-inch}}',
257257
258258 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
259259 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
260260 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
261 - 'pfunc-convert-unit-pressure-milibar-abbr' => 'mbar',
 261+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
262262 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
263263 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
264264 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
@@ -431,6 +431,54 @@
432432 'pfunc_expr_unknown_error' => "Error d'espresión: Error desconocíu ($1)",
433433 'pfunc_expr_not_a_number' => 'En $1: el resultáu nun ye un númberu',
434434 'pfunc_string_too_long' => 'Error: la cadena pasa la llende de $1 caráuteres',
 435+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2metru|$2metros}}',
 436+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|angstrom|angstroms}}',
 437+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|milla|milles}}',
 438+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|yarda|yardes}}',
 439+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|pie|pies}}',
 440+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|quilómetru cuadráu|quilómetros cuadraos}}',
 441+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|metru cuadráu|metros cuadraos}}',
 442+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
 443+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
 444+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
 445+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
 446+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
 447+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|segundu|segundos}}',
 448+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2añu|$2años}}',
 449+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|día|díes}}',
 450+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|hora|hores}}',
 451+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minutu|minutos}}',
 452+ 'pfunc-convert-unit-time-second-abbr' => 's',
 453+ 'pfunc-convert-unit-time-year-abbr' => '$2añ',
 454+ 'pfunc-convert-unit-time-day-abbr' => 'día',
 455+ 'pfunc-convert-unit-time-hour-abbr' => 'h',
 456+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
 457+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|metru cúbicu|metros cúbicos}}',
 458+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|centímetru cúbicu|centímetros cúbicos}}',
 459+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|milímetru cúbicu|milímetros cúbicos}}',
 460+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|kilollitru|kilollitros}}',
 461+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|llitru|llitros}}',
 462+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|centillitru|centillitros}}',
 463+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|millillitru|millillitros}}',
 464+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
 465+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
 466+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
 467+ 'pfunc-convert-unit-volume-litre-abbr' => '$2l',
 468+ 'pfunc-convert-unit-speed-mile-hour' => 'milles por hora',
 469+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2pascal|$2pascales}}',
 470+ 'pfunc-convert-unit-pressure-bar' => 'bar',
 471+ 'pfunc-convert-unit-pressure-decibar' => 'decibar',
 472+ 'pfunc-convert-unit-pressure-millibar' => 'millibar',
 473+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilobario',
 474+ 'pfunc-convert-unit-pressure-barye' => 'bario',
 475+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmósfera|atmósferes}}',
 476+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
 477+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
 478+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
 479+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
 480+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
 481+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
 482+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
435483 );
436484
437485 /** Azerbaijani (Azərbaycanca)
@@ -685,6 +733,59 @@
686734 'pfunc_expr_unknown_error' => 'Chyba ve výrazu: Neznámá chyba ($1)',
687735 'pfunc_expr_not_a_number' => 'V $1: výsledkem není číslo',
688736 'pfunc_string_too_long' => 'Chyba: Řetězec je delší než $1 {{PLURAL:$1|znak|znaky|znaků}}, což je limit',
 737+ 'pfunc-convert-dimensionmismatch' => 'Chyba: Nelze převést mezi jednotkami „$1“ a „$2“.',
 738+ 'pfunc-convert-unknownunit' => 'Chyba: Neznámá jednotka „$1“.',
 739+ 'pfunc-convert-unknowndimension' => 'Chyba: Neznámý rozměr „$1“',
 740+ 'pfunc-convert-invalidcompoundunit' => 'Chyba: Neplatná složená jednotka „$1“.',
 741+ 'pfunc-convert-nounit' => 'Chyba: Nebyla zadána zdrojová jednotka.',
 742+ 'pfunc-convert-doublecompoundunit' => 'Chyba: Nelze zpracovat dvojitě složené jednotky, jako je „$1“.',
 743+ 'pfunc-convert-dimension-length' => 'délka',
 744+ 'pfunc-convert-dimension-area' => 'plocha',
 745+ 'pfunc-convert-dimension-volume' => 'objem',
 746+ 'pfunc-convert-dimension-time' => 'čas',
 747+ 'pfunc-convert-dimension-timesquared' => 'čas²',
 748+ 'pfunc-convert-dimension-mass' => 'hmotnost',
 749+ 'pfunc-convert-dimension-speed' => 'rychlost',
 750+ 'pfunc-convert-dimension-temperature' => 'teplota',
 751+ 'pfunc-convert-dimension-acceleration' => 'zrychlení',
 752+ 'pfunc-convert-dimension-force' => 'síla',
 753+ 'pfunc-convert-dimension-torque' => 'točivý moment',
 754+ 'pfunc-convert-dimension-energy' => 'energie',
 755+ 'pfunc-convert-dimension-power' => 'výkon',
 756+ 'pfunc-convert-dimension-pressure' => 'tlak',
 757+ 'pfunc-convert-dimension-density' => 'hustota',
 758+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'spotřeba',
 759+ 'pfunc-convert-prefix-yotta' => 'yotta',
 760+ 'pfunc-convert-prefix-zetta' => 'zetta',
 761+ 'pfunc-convert-prefix-exa' => 'exa',
 762+ 'pfunc-convert-prefix-peta' => 'peta',
 763+ 'pfunc-convert-prefix-tera' => 'tera',
 764+ 'pfunc-convert-prefix-giga' => 'giga',
 765+ 'pfunc-convert-prefix-mega' => 'mega',
 766+ 'pfunc-convert-prefix-kilo' => 'kilo',
 767+ 'pfunc-convert-prefix-hecto' => 'hekto',
 768+ 'pfunc-convert-prefix-deca' => 'deka',
 769+ 'pfunc-convert-prefix-deci' => 'deci',
 770+ 'pfunc-convert-prefix-centi' => 'centi',
 771+ 'pfunc-convert-prefix-milli' => 'milli',
 772+ 'pfunc-convert-prefix-micro' => 'mikro',
 773+ 'pfunc-convert-prefix-nano' => 'nano',
 774+ 'pfunc-convert-prefix-pico' => 'piko',
 775+ 'pfunc-convert-prefix-femto' => 'femto',
 776+ 'pfunc-convert-prefix-atto' => 'atto',
 777+ 'pfunc-convert-prefix-zepto' => 'zepto',
 778+ 'pfunc-convert-prefix-yocto' => 'yokto',
 779+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2metr|$2metry|$2metrů}}',
 780+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|míle|míle|mil}}',
 781+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|stopa|stopy|stop}}',
 782+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|palec|palce|palců}}',
 783+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2parsek|$2parseky|$2parseků}}',
 784+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|astronomická jednotka|astronomické jednotky|astronomických jednotek}}',
 785+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|kilometr čtvereční|kilometry čtvereční|kilometrů čtverečních}}',
 786+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hektar|hektary|hektarů}}',
 787+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|akr|akry|akrů}}',
 788+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|čtvereční stopa|čtvereční stopy|čtverečních stop}}',
 789+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|čtvereční palec|čtvereční palce|čtverečních palců}}',
689790 );
690791
691792 /** Danish (Dansk)
@@ -850,7 +951,7 @@
851952 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|$2litre|$2litres}}',
852953
853954 # PRESSURE
854 - 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|milimetre of mercury|milimetres of mercury}}',
 955+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|millimetre of mercury|miillimetres of mercury}}',
855956 );
856957
857958 /** Esperanto (Esperanto)
@@ -1002,25 +1103,94 @@
10031104 */
10041105 $messages['fr'] = array(
10051106 'pfunc_desc' => 'Améliore le parseur avec des fonctions logiques',
1006 - 'pfunc_time_error' => 'Erreur : durée invalide',
1007 - 'pfunc_time_too_long' => 'Erreur : appels trop nombreux à <code>#time</code>',
1008 - 'pfunc_time_too_big' => 'Erreur : #time prend uniquement en charge des années jusqu’à 9999',
1009 - 'pfunc_rel2abs_invalid_depth' => 'Erreur: profondeur invalide dans le chemin « $1 » (a essayé d’accéder à un niveau au-dessus du nœud racine)',
1010 - 'pfunc_expr_stack_exhausted' => 'Erreur d’expression : pile épuisée',
1011 - 'pfunc_expr_unexpected_number' => 'Erreur d’expression : nombre inattendu',
1012 - 'pfunc_expr_preg_match_failure' => 'Erreur d’expression : échec inattendu de <code>preg_match</code>',
1013 - 'pfunc_expr_unrecognised_word' => 'Erreur d’expression : mot « $1 » non reconnu',
1014 - 'pfunc_expr_unexpected_operator' => "Erreur d’expression : opérateur '''$1''' inattendu",
1015 - 'pfunc_expr_missing_operand' => "Erreur d’expression : opérande manquant pour '''$1'''",
1016 - 'pfunc_expr_unexpected_closing_bracket' => 'Erreur d’expression : parenthèse fermante inattendue',
1017 - 'pfunc_expr_unrecognised_punctuation' => 'Erreur d’expression : caractère de ponctuation « $1 » non reconnu',
1018 - 'pfunc_expr_unclosed_bracket' => 'Erreur d’expression : parenthèse non fermée',
1019 - 'pfunc_expr_division_by_zero' => 'Division par zéro',
1020 - 'pfunc_expr_invalid_argument' => "Argument incorrect pour '''$1''' : &lt; -1 ou &gt; 1",
1021 - 'pfunc_expr_invalid_argument_ln' => "Argument incorrect pour '''ln''' : ≤ 0",
1022 - 'pfunc_expr_unknown_error' => 'Erreur d’expression : erreur inconnue ($1)',
1023 - 'pfunc_expr_not_a_number' => 'Dans $1 : le résultat n’est pas un nombre',
1024 - 'pfunc_string_too_long' => 'Erreur : La chaîne dépasse la limite maximale de $1 caractère{{PLURAL:$1||s}}',
 1107+ 'pfunc_time_error' => 'Erreur : durée invalide.',
 1108+ 'pfunc_time_too_long' => 'Erreur : appels trop nombreux à <code>#time</code>.',
 1109+ 'pfunc_time_too_big' => 'Erreur : #time prend uniquement en charge des années jusqu’à 9999.',
 1110+ 'pfunc_rel2abs_invalid_depth' => 'Erreur : profondeur invalide dans le chemin « $1 » (a essayé d’accéder à un niveau au-dessus du nœud racine).',
 1111+ 'pfunc_expr_stack_exhausted' => 'Erreur d’expression : pile épuisée.',
 1112+ 'pfunc_expr_unexpected_number' => 'Erreur d’expression : nombre inattendu.',
 1113+ 'pfunc_expr_preg_match_failure' => 'Erreur d’expression : échec inattendu de <code>preg_match</code>.',
 1114+ 'pfunc_expr_unrecognised_word' => 'Erreur d’expression : mot « $1 » non reconnu.',
 1115+ 'pfunc_expr_unexpected_operator' => "Erreur d’expression : opérateur '''$1''' inattendu.",
 1116+ 'pfunc_expr_missing_operand' => "Erreur d’expression : opérande manquant pour '''$1'''.",
 1117+ 'pfunc_expr_unexpected_closing_bracket' => 'Erreur d’expression : parenthèse fermante inattendue.',
 1118+ 'pfunc_expr_unrecognised_punctuation' => 'Erreur d’expression : caractère de ponctuation « $1 » non reconnu.',
 1119+ 'pfunc_expr_unclosed_bracket' => 'Erreur d’expression : parenthèse non fermée.',
 1120+ 'pfunc_expr_division_by_zero' => 'Division par zéro.',
 1121+ 'pfunc_expr_invalid_argument' => "Paramètre incorrect pour '''$1''' : < -1 ou > 1.",
 1122+ 'pfunc_expr_invalid_argument_ln' => "Paramètre incorrect pour '''ln''' : ≤ 0.",
 1123+ 'pfunc_expr_unknown_error' => 'Erreur d’expression : erreur inconnue ($1).',
 1124+ 'pfunc_expr_not_a_number' => 'Dans $1 : le résultat n’est pas un nombre.',
 1125+ 'pfunc_string_too_long' => 'Erreur : La chaîne dépasse la limite maximale de $1 caractère{{PLURAL:$1||s}}.',
 1126+ 'pfunc-convert-unknownunit' => 'Erreur : "$1" est une unité inconnue.',
 1127+ 'pfunc-convert-unknowndimension' => 'Erreur : "$1" est une dimension inconnue.',
 1128+ 'pfunc-convert-dimension-length' => 'longueur',
 1129+ 'pfunc-convert-dimension-area' => 'aire',
 1130+ 'pfunc-convert-dimension-volume' => 'volume',
 1131+ 'pfunc-convert-dimension-time' => 'temps',
 1132+ 'pfunc-convert-dimension-timesquared' => 'temps<sup>2</sup>',
 1133+ 'pfunc-convert-dimension-mass' => 'masse',
 1134+ 'pfunc-convert-dimension-speed' => 'vitesse',
 1135+ 'pfunc-convert-dimension-temperature' => 'température',
 1136+ 'pfunc-convert-dimension-acceleration' => 'accélération',
 1137+ 'pfunc-convert-dimension-force' => 'force',
 1138+ 'pfunc-convert-dimension-torque' => 'couple',
 1139+ 'pfunc-convert-dimension-energy' => 'énergie',
 1140+ 'pfunc-convert-dimension-power' => 'puissance',
 1141+ 'pfunc-convert-dimension-pressure' => 'pression',
 1142+ 'pfunc-convert-dimension-density' => 'densité',
 1143+ 'pfunc-convert-prefix-yotta' => 'yotta',
 1144+ 'pfunc-convert-prefix-zetta' => 'zetta',
 1145+ 'pfunc-convert-prefix-exa' => 'exa',
 1146+ 'pfunc-convert-prefix-peta' => 'peta',
 1147+ 'pfunc-convert-prefix-tera' => 'tera',
 1148+ 'pfunc-convert-prefix-giga' => 'giga',
 1149+ 'pfunc-convert-prefix-mega' => 'mega',
 1150+ 'pfunc-convert-prefix-kilo' => 'kilo',
 1151+ 'pfunc-convert-prefix-hecto' => 'hecto',
 1152+ 'pfunc-convert-prefix-deca' => 'deca',
 1153+ 'pfunc-convert-prefix-deci' => 'deci',
 1154+ 'pfunc-convert-prefix-centi' => 'centi',
 1155+ 'pfunc-convert-prefix-milli' => 'milli',
 1156+ 'pfunc-convert-prefix-micro' => 'micro',
 1157+ 'pfunc-convert-prefix-nano' => 'nano',
 1158+ 'pfunc-convert-prefix-pico' => 'pico',
 1159+ 'pfunc-convert-prefix-femto' => 'femto',
 1160+ 'pfunc-convert-prefix-atto' => 'atto',
 1161+ 'pfunc-convert-prefix-zepto' => 'zepto',
 1162+ 'pfunc-convert-prefix-yocto' => 'yocto',
 1163+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|brasse|brasses}}',
 1164+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|pied|pieds}}',
 1165+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|main|mains}}',
 1166+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|pouce|pouces}}',
 1167+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|unité astronomique|unités astronomiques}}',
 1168+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hectare|hectares}}',
 1169+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
 1170+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
 1171+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
 1172+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
 1173+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|seconde|secondes}}',
 1174+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|jour|jours}}',
 1175+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|heure|heures}}',
 1176+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minute|minutes}}',
 1177+ 'pfunc-convert-unit-time-second-abbr' => 's',
 1178+ 'pfunc-convert-unit-time-year-abbr' => '$2an',
 1179+ 'pfunc-convert-unit-time-day-abbr' => 'j',
 1180+ 'pfunc-convert-unit-time-hour-abbr' => 'h',
 1181+ 'pfunc-convert-unit-time-minute-abbr' => 'm',
 1182+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|litre|litres}}',
 1183+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|centilitre|centilitres}}',
 1184+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|millilitre|millilitres}}',
 1185+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|boisseau|boisseaux}}',
 1186+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
 1187+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
 1188+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
 1189+ 'pfunc-convert-unit-volume-litre-abbr' => '$2l',
 1190+ 'pfunc-convert-unit-speed-mile-hour' => 'miles par heure',
 1191+ 'pfunc-convert-unit-pressure-bar' => 'bar',
 1192+ 'pfunc-convert-unit-pressure-decibar' => 'decibar',
 1193+ 'pfunc-convert-unit-pressure-millibar' => 'millibar',
 1194+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
10251195 );
10261196
10271197 /** Franco-Provençal (Arpetan)
@@ -1056,25 +1226,62 @@
10571227 */
10581228 $messages['gl'] = array(
10591229 'pfunc_desc' => 'Mellora o analizador con funcións lóxicas',
1060 - 'pfunc_time_error' => 'Erro: hora non válida',
1061 - 'pfunc_time_too_long' => 'Erro: demasiadas chamadas #time',
1062 - 'pfunc_time_too_big' => 'Erro: #time só permite anos ata o 9999',
1063 - 'pfunc_rel2abs_invalid_depth' => 'Erro: profundidade da ruta non válida: "$1" (tentouse acceder a un nodo por riba do nodo raíz)',
1064 - 'pfunc_expr_stack_exhausted' => 'Erro de expresión: pila esgotada',
1065 - 'pfunc_expr_unexpected_number' => 'Erro de expresión: número inesperado',
1066 - 'pfunc_expr_preg_match_failure' => 'Erro de expresión: fallo de preg_match inesperado',
1067 - 'pfunc_expr_unrecognised_word' => 'Erro de expresión: descoñécese a palabra "$1"',
1068 - 'pfunc_expr_unexpected_operator' => 'Erro de expresión: operador "$1" inesperado',
1069 - 'pfunc_expr_missing_operand' => 'Erro de expresión: falta un operador para $1',
1070 - 'pfunc_expr_unexpected_closing_bracket' => 'Erro de expresión: corchete de peche inesperado',
1071 - 'pfunc_expr_unrecognised_punctuation' => 'Erro de expresión: descoñécese o signo de puntuación "$1"',
1072 - 'pfunc_expr_unclosed_bracket' => 'Erro de expresión: paréntese sen pechar',
1073 - 'pfunc_expr_division_by_zero' => 'División por cero',
1074 - 'pfunc_expr_invalid_argument' => 'Argumento inválido para $1: < -1 ou > 1',
1075 - 'pfunc_expr_invalid_argument_ln' => 'Argumento inválido para ln: <= 0',
1076 - 'pfunc_expr_unknown_error' => 'Erro de expresión: erro descoñecido ($1)',
1077 - 'pfunc_expr_not_a_number' => 'En $1: o resultado non é un número',
1078 - 'pfunc_string_too_long' => 'Erro: a cadea excede o límite de $1 caracteres',
 1230+ 'pfunc_time_error' => 'Erro: Hora non válida.',
 1231+ 'pfunc_time_too_long' => 'Erro: Demasiadas chamadas #time.',
 1232+ 'pfunc_time_too_big' => 'Erro: #time só permite anos ata o 9999.',
 1233+ 'pfunc_rel2abs_invalid_depth' => 'Erro: Profundidade da ruta non válida: "$1" (intentouse acceder a un nodo por riba do nodo raíz).',
 1234+ 'pfunc_expr_stack_exhausted' => 'Erro de expresión: Pila esgotada.',
 1235+ 'pfunc_expr_unexpected_number' => 'Erro de expresión: Número inesperado.',
 1236+ 'pfunc_expr_preg_match_failure' => 'Erro de expresión: Fallo de preg_match inesperado.',
 1237+ 'pfunc_expr_unrecognised_word' => 'Erro de expresión: Descoñécese a palabra "$1".',
 1238+ 'pfunc_expr_unexpected_operator' => 'Erro de expresión: Operador "$1" inesperado.',
 1239+ 'pfunc_expr_missing_operand' => 'Erro de expresión: Falta un operador para $1.',
 1240+ 'pfunc_expr_unexpected_closing_bracket' => 'Erro de expresión: Corchete de peche inesperado.',
 1241+ 'pfunc_expr_unrecognised_punctuation' => 'Erro de expresión: Descoñécese o signo de puntuación "$1".',
 1242+ 'pfunc_expr_unclosed_bracket' => 'Erro de expresión: Paréntese sen pechar.',
 1243+ 'pfunc_expr_division_by_zero' => 'División por cero.',
 1244+ 'pfunc_expr_invalid_argument' => 'Argumento inválido para $1: < -1 ou > 1.',
 1245+ 'pfunc_expr_invalid_argument_ln' => 'Argumento inválido para ln: <= 0.',
 1246+ 'pfunc_expr_unknown_error' => 'Erro de expresión: Erro descoñecido ($1).',
 1247+ 'pfunc_expr_not_a_number' => 'En $1: O resultado non é un número.',
 1248+ 'pfunc_string_too_long' => 'Erro: A cadea excede o límite de $1 caracteres.',
 1249+ 'pfunc-convert-dimension-length' => 'lonxitude',
 1250+ 'pfunc-convert-dimension-area' => 'área',
 1251+ 'pfunc-convert-dimension-volume' => 'volume',
 1252+ 'pfunc-convert-dimension-time' => 'tempo',
 1253+ 'pfunc-convert-dimension-timesquared' => 'tempo<sup>2</sup>',
 1254+ 'pfunc-convert-dimension-mass' => 'masa',
 1255+ 'pfunc-convert-dimension-speed' => 'velocidade',
 1256+ 'pfunc-convert-dimension-temperature' => 'temperatura',
 1257+ 'pfunc-convert-dimension-acceleration' => 'aceleración',
 1258+ 'pfunc-convert-dimension-force' => 'forza',
 1259+ 'pfunc-convert-dimension-torque' => 'torque',
 1260+ 'pfunc-convert-dimension-energy' => 'enerxía',
 1261+ 'pfunc-convert-dimension-power' => 'potencia',
 1262+ 'pfunc-convert-dimension-pressure' => 'presión',
 1263+ 'pfunc-convert-dimension-density' => 'densidade',
 1264+ 'pfunc-convert-prefix-yotta' => 'yotta',
 1265+ 'pfunc-convert-prefix-zetta' => 'zetta',
 1266+ 'pfunc-convert-prefix-exa' => 'exa',
 1267+ 'pfunc-convert-prefix-peta' => 'peta',
 1268+ 'pfunc-convert-prefix-tera' => 'tera',
 1269+ 'pfunc-convert-prefix-giga' => 'xiga',
 1270+ 'pfunc-convert-prefix-mega' => 'mega',
 1271+ 'pfunc-convert-prefix-kilo' => 'quilo',
 1272+ 'pfunc-convert-prefix-hecto' => 'hecto',
 1273+ 'pfunc-convert-prefix-deca' => 'deca',
 1274+ 'pfunc-convert-prefix-deci' => 'deci',
 1275+ 'pfunc-convert-prefix-centi' => 'centi',
 1276+ 'pfunc-convert-prefix-milli' => 'milli',
 1277+ 'pfunc-convert-prefix-micro' => 'micro',
 1278+ 'pfunc-convert-prefix-nano' => 'nano',
 1279+ 'pfunc-convert-prefix-pico' => 'pico',
 1280+ 'pfunc-convert-prefix-femto' => 'femto',
 1281+ 'pfunc-convert-prefix-atto' => 'atto',
 1282+ 'pfunc-convert-prefix-zepto' => 'zepto',
 1283+ 'pfunc-convert-prefix-yocto' => 'yocto',
 1284+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
 1285+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
10791286 );
10801287
10811288 /** Ancient Greek (Ἀρχαία ἑλληνικὴ)
@@ -1134,6 +1341,122 @@
11351342 'pfunc_expr_unknown_error' => 'שגיאה בביטוי: שגיאה בלתי ידועה ($1)',
11361343 'pfunc_expr_not_a_number' => 'התוצאה של $1 אינה מספר',
11371344 'pfunc_string_too_long' => 'שגיאה: המחרוזת עוברת את גבול התווים המותר, $1',
 1345+ 'pfunc-convert-dimensionmismatch' => 'שגיאה: לא ניתן להמיר בין יחידות של "$1" ושל "$2".',
 1346+ 'pfunc-convert-unknownunit' => 'שגיאה: יחידה לא ידועה "$1".',
 1347+ 'pfunc-convert-unknowndimension' => 'שגיאה: ממד לא ידוע "$1".',
 1348+ 'pfunc-convert-invalidcompoundunit' => 'שגיאה: יחידה מורכבת לא ידועה "$1".',
 1349+ 'pfunc-convert-nounit' => 'שגיאה: לא ניתנה יחידה התחלתית.',
 1350+ 'pfunc-convert-doublecompoundunit' => 'שגיאה: לא ניתן לפענח יחידות מורכבות כפולות כמו "$1".',
 1351+ 'pfunc-convert-dimension-length' => 'אורך',
 1352+ 'pfunc-convert-dimension-area' => 'שטח',
 1353+ 'pfunc-convert-dimension-volume' => 'נפח',
 1354+ 'pfunc-convert-dimension-time' => 'זמן',
 1355+ 'pfunc-convert-dimension-timesquared' => 'זמן<sup>2</sup>',
 1356+ 'pfunc-convert-dimension-mass' => 'מסה',
 1357+ 'pfunc-convert-dimension-speed' => 'מהירות',
 1358+ 'pfunc-convert-dimension-temperature' => 'חום',
 1359+ 'pfunc-convert-dimension-acceleration' => 'תאוצה',
 1360+ 'pfunc-convert-dimension-force' => 'כוח',
 1361+ 'pfunc-convert-dimension-torque' => 'מומנט הסיבוב',
 1362+ 'pfunc-convert-dimension-energy' => 'אנרגיה',
 1363+ 'pfunc-convert-dimension-power' => 'הספק',
 1364+ 'pfunc-convert-dimension-pressure' => 'לחץ',
 1365+ 'pfunc-convert-dimension-density' => 'צפיפות',
 1366+ 'pfunc-convert-prefix-yotta' => 'יוטא',
 1367+ 'pfunc-convert-prefix-zetta' => 'זטא',
 1368+ 'pfunc-convert-prefix-exa' => 'אקסה',
 1369+ 'pfunc-convert-prefix-peta' => 'פטה',
 1370+ 'pfunc-convert-prefix-tera' => 'טרה',
 1371+ 'pfunc-convert-prefix-giga' => 'גיגה',
 1372+ 'pfunc-convert-prefix-mega' => 'מגה',
 1373+ 'pfunc-convert-prefix-kilo' => 'קילו',
 1374+ 'pfunc-convert-prefix-hecto' => 'הקטו',
 1375+ 'pfunc-convert-prefix-deca' => 'דקה',
 1376+ 'pfunc-convert-prefix-deci' => 'דצי',
 1377+ 'pfunc-convert-prefix-centi' => 'סנטי',
 1378+ 'pfunc-convert-prefix-milli' => 'מילי',
 1379+ 'pfunc-convert-prefix-micro' => 'מיקרו',
 1380+ 'pfunc-convert-prefix-nano' => 'ננו',
 1381+ 'pfunc-convert-prefix-pico' => 'פיקו',
 1382+ 'pfunc-convert-prefix-femto' => 'פמטו',
 1383+ 'pfunc-convert-prefix-atto' => 'אטו',
 1384+ 'pfunc-convert-prefix-zepto' => 'זפטו',
 1385+ 'pfunc-convert-prefix-yocto' => 'יוקטו',
 1386+ 'pfunc-convert-unit-length-furlong-abbr' => 'פרלונג',
 1387+ 'pfunc-convert-unit-length-chain-abbr' => 'שלשלת',
 1388+ 'pfunc-convert-unit-length-rod-abbr' => 'מַטֶּה',
 1389+ 'pfunc-convert-unit-length-fathom-abbr' => 'פאתום',
 1390+ 'pfunc-convert-unit-length-yard-abbr' => 'יארד',
 1391+ 'pfunc-convert-unit-length-foot-abbr' => 'רגל',
 1392+ 'pfunc-convert-unit-length-hand-abbr' => 'כף־יד',
 1393+ 'pfunc-convert-unit-length-inch-abbr' => 'אינץ׳',
 1394+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'מיל ימי',
 1395+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'מיל ימי (אנגלי)',
 1396+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'מיל ימי (ארה״ב לפני 1954)',
 1397+ 'pfunc-convert-unit-length-parsec-abbr' => '$2 פארסק',
 1398+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2 שנות אור',
 1399+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'יחידה אסטרונומית',
 1400+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'קמ״ר',
 1401+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'מ״ר',
 1402+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'סמ״ר',
 1403+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'ממ״ר',
 1404+ 'pfunc-convert-unit-area-hectare-abbr' => 'הקטאר',
 1405+ 'pfunc-convert-unit-area-squaremile-abbr' => 'מיל רבוע',
 1406+ 'pfunc-convert-unit-area-acre-abbr' => 'אקר',
 1407+ 'pfunc-convert-unit-area-squareyard-abbr' => 'יארד רבוע',
 1408+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'רגל רבועה',
 1409+ 'pfunc-convert-unit-area-squareinch-abbr' => 'אינץ׳ רבוע',
 1410+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'מיל ימי רבוע',
 1411+ 'pfunc-convert-unit-area-dunam-abbr' => 'דונם',
 1412+ 'pfunc-convert-unit-area-tsubo-abbr' => 'צובו',
 1413+ 'pfunc-convert-unit-time-second-abbr' => 'שנייה',
 1414+ 'pfunc-convert-unit-time-day-abbr' => 'יום',
 1415+ 'pfunc-convert-unit-time-hour-abbr' => 'שעה',
 1416+ 'pfunc-convert-unit-time-minute-abbr' => 'דקה',
 1417+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'מטר מעוקב',
 1418+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'ס״מ מעוקב',
 1419+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'מ״מ מעוקב',
 1420+ 'pfunc-convert-unit-volume-litre-abbr' => '$2 ל׳',
 1421+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'יארד מעוקב',
 1422+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'רגל מעוקבת',
 1423+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'אינץ׳ מעוקב',
 1424+ 'pfunc-convert-unit-volume-barrel-abbr' => 'חבית',
 1425+ 'pfunc-convert-unit-volume-bushel-abbr' => 'בושל',
 1426+ 'pfunc-convert-unit-volume-gallon-abbr' => 'גלון',
 1427+ 'pfunc-convert-unit-volume-quart-abbr' => 'קווארטה',
 1428+ 'pfunc-convert-unit-volume-pint-abbr' => 'פיינט',
 1429+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'אונקייה',
 1430+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'חבית אמריקאית',
 1431+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'חבית',
 1432+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'חבית',
 1433+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'גלון אמריקאי',
 1434+ 'pfunc-convert-unit-volume-usquart-abbr' => 'קווארטה אמריקאית',
 1435+ 'pfunc-convert-unit-volume-uspint-abbr' => 'פיינט אמריקאי',
 1436+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'אונקייה אמריקאית',
 1437+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'חבית אמריקאית',
 1438+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'בושל אמריקאי',
 1439+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'גלון יבש אמריקאי',
 1440+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'קווארטה יבשה אמריקאית',
 1441+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'פיינט יבש אמריקאי',
 1442+ 'pfunc-convert-unit-speed-mile-hour' => 'מיל לשעה',
 1443+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
 1444+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'מיל לשעה',
 1445+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
 1446+ 'pfunc-convert-unit-pressure-bar' => 'בר',
 1447+ 'pfunc-convert-unit-pressure-decibar' => 'דציבר',
 1448+ 'pfunc-convert-unit-pressure-millibar' => 'מיליבר',
 1449+ 'pfunc-convert-unit-pressure-kilobarye' => 'קילובָּרְיֶה',
 1450+ 'pfunc-convert-unit-pressure-barye' => 'בָּרְיֶה',
 1451+ 'pfunc-convert-unit-pressure-bar-abbr' => 'בר',
 1452+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'דציבר',
 1453+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'מיליבר',
 1454+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'קילובָּרְיֶה',
 1455+ 'pfunc-convert-unit-pressure-barye-abbr' => 'בָּרְיֶה',
 1456+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'אטמ׳',
 1457+ 'pfunc-convert-unit-pressure-torr-abbr' => 'טור',
 1458+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'מ״מ כספית',
 1459+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'אינץ׳ כספית',
 1460+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
11381461 );
11391462
11401463 /** Hindi (हिन्दी)
@@ -1264,6 +1587,55 @@
12651588 'pfunc_expr_unknown_error' => 'Error de expression: Error incognite ($1)',
12661589 'pfunc_expr_not_a_number' => 'In $1: le resultato non es un numero',
12671590 'pfunc_string_too_long' => 'Error: Le catena excede le limite de $1 {{PLURAL:$1|character|characteres}}',
 1591+ 'pfunc-convert-dimensionmismatch' => 'Error: Impossibile converter inter unitates de "$1" e "$2".',
 1592+ 'pfunc-convert-unknownunit' => 'Error: Unitate "$1" incognite.',
 1593+ 'pfunc-convert-unknowndimension' => 'Error: Dimension "$1" incognite.',
 1594+ 'pfunc-convert-invalidcompoundunit' => 'Error: Unitate composite "$1" invalide.',
 1595+ 'pfunc-convert-nounit' => 'Error: Nulle unitate de origine specificate.',
 1596+ 'pfunc-convert-doublecompoundunit' => 'Error: Non pote processar unitates composite duplice como "$1".',
 1597+ 'pfunc-convert-dimension-length' => 'longitude',
 1598+ 'pfunc-convert-dimension-area' => 'area',
 1599+ 'pfunc-convert-dimension-volume' => 'volumine',
 1600+ 'pfunc-convert-dimension-time' => 'tempore',
 1601+ 'pfunc-convert-dimension-timesquared' => 'tempore<sup>2</sup>',
 1602+ 'pfunc-convert-dimension-mass' => 'massa',
 1603+ 'pfunc-convert-dimension-speed' => 'velocitate',
 1604+ 'pfunc-convert-dimension-temperature' => 'temperatura',
 1605+ 'pfunc-convert-dimension-acceleration' => 'acceleration',
 1606+ 'pfunc-convert-dimension-force' => 'fortia',
 1607+ 'pfunc-convert-dimension-torque' => 'torsion',
 1608+ 'pfunc-convert-dimension-energy' => 'energia',
 1609+ 'pfunc-convert-dimension-power' => 'potentia',
 1610+ 'pfunc-convert-dimension-pressure' => 'pression',
 1611+ 'pfunc-convert-dimension-density' => 'densitate',
 1612+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'efficientiaenergeticpositive',
 1613+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'efficientiaenergeticnegative',
 1614+ 'pfunc-convert-prefix-yotta' => 'yotta',
 1615+ 'pfunc-convert-prefix-zetta' => 'zetta',
 1616+ 'pfunc-convert-prefix-exa' => 'exa',
 1617+ 'pfunc-convert-prefix-peta' => 'peta',
 1618+ 'pfunc-convert-prefix-tera' => 'tera',
 1619+ 'pfunc-convert-prefix-giga' => 'giga',
 1620+ 'pfunc-convert-prefix-mega' => 'mega',
 1621+ 'pfunc-convert-prefix-kilo' => 'kilo',
 1622+ 'pfunc-convert-prefix-hecto' => 'hecto',
 1623+ 'pfunc-convert-prefix-deca' => 'deca',
 1624+ 'pfunc-convert-prefix-deci' => 'deci',
 1625+ 'pfunc-convert-prefix-centi' => 'centi',
 1626+ 'pfunc-convert-prefix-milli' => 'milli',
 1627+ 'pfunc-convert-prefix-micro' => 'micro',
 1628+ 'pfunc-convert-prefix-nano' => 'nano',
 1629+ 'pfunc-convert-prefix-pico' => 'pico',
 1630+ 'pfunc-convert-prefix-femto' => 'femto',
 1631+ 'pfunc-convert-prefix-atto' => 'atto',
 1632+ 'pfunc-convert-prefix-zepto' => 'zepto',
 1633+ 'pfunc-convert-prefix-yocto' => 'yocto',
 1634+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2metro|$2metros}}',
 1635+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|ångström|ångströmes}}',
 1636+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|millia|millias}}',
 1637+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlongs}}',
 1638+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|catena|catenas}}',
 1639+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|pertica|perticas}}',
12681640 );
12691641
12701642 /** Indonesian (Bahasa Indonesia)
@@ -1519,6 +1891,38 @@
15201892 'pfunc_expr_unknown_error' => 'Fähler en enem Ußdrock: Unbikannt ($1)',
15211893 'pfunc_expr_not_a_number' => 'Fähler en enem Ußdrock: En <code>$1</code> es dat wat erus kütt kein Zahl.',
15221894 'pfunc_string_too_long' => 'Fähler en enem Ußdrock: En Zeijshereih es länger wi $1 Zeijshe.',
 1895+ 'pfunc-convert-dimension-length' => 'Längemohß',
 1896+ 'pfunc-convert-dimension-area' => 'Flächemohß',
 1897+ 'pfunc-convert-dimension-volume' => 'Hohlmohß',
 1898+ 'pfunc-convert-dimension-time' => 'Ziggmohß',
 1899+ 'pfunc-convert-dimension-timesquared' => 'Zigg<sup>2</sup>-Mohß',
 1900+ 'pfunc-convert-dimension-mass' => 'Mohß för de Mass',
 1901+ 'pfunc-convert-dimension-speed' => 'Jeschwendechkeit',
 1902+ 'pfunc-convert-dimension-pressure' => 'Drock',
 1903+ 'pfunc-convert-prefix-yotta' => 'Yotta',
 1904+ 'pfunc-convert-prefix-zetta' => 'Zetta',
 1905+ 'pfunc-convert-prefix-exa' => 'Exa',
 1906+ 'pfunc-convert-prefix-tera' => 'Tera',
 1907+ 'pfunc-convert-prefix-giga' => 'Giga',
 1908+ 'pfunc-convert-prefix-mega' => 'Mega',
 1909+ 'pfunc-convert-prefix-kilo' => 'Killo',
 1910+ 'pfunc-convert-prefix-hecto' => 'Häkto',
 1911+ 'pfunc-convert-prefix-deca' => 'Dekka',
 1912+ 'pfunc-convert-prefix-deci' => 'Dezi',
 1913+ 'pfunc-convert-prefix-centi' => 'Cänti',
 1914+ 'pfunc-convert-prefix-milli' => 'Milli',
 1915+ 'pfunc-convert-prefix-micro' => 'Mikro',
 1916+ 'pfunc-convert-prefix-nano' => 'Nanno',
 1917+ 'pfunc-convert-prefix-pico' => 'Picko',
 1918+ 'pfunc-convert-prefix-femto' => 'Fämto',
 1919+ 'pfunc-convert-prefix-atto' => 'Atto',
 1920+ 'pfunc-convert-prefix-zepto' => 'Zäpto',
 1921+ 'pfunc-convert-prefix-yocto' => 'Jokto',
 1922+ 'pfunc-convert-unit-length-metre' => 'Meeter',
 1923+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|Meil|Meile|Meile}}',
 1924+ 'pfunc-convert-unit-area-squarekilometre' => 'Quadraatkillomeetere',
 1925+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
 1926+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm²',
15231927 );
15241928
15251929 /** Luxembourgish (Lëtzebuergesch)
@@ -1612,6 +2016,217 @@
16132017 'pfunc_expr_unknown_error' => 'Грешка во изразот: Непозната грешка ($1)',
16142018 'pfunc_expr_not_a_number' => 'Во $1: резултатот не е број',
16152019 'pfunc_string_too_long' => 'Грешка: низата го надминува ограничувањето од $1 знаци',
 2020+ 'pfunc-convert-dimensionmismatch' => 'Грешка: претворањето од единицата „$1“ во единицата „$2“ е невозможно',
 2021+ 'pfunc-convert-unknownunit' => 'Грешка: непозната единица „$1“',
 2022+ 'pfunc-convert-unknowndimension' => 'Грешка: непозната димензија „$1“',
 2023+ 'pfunc-convert-invalidcompoundunit' => 'Грешка: неважечка мешовита единица „$1“',
 2024+ 'pfunc-convert-nounit' => 'Грешка: нема наведено изворна единица',
 2025+ 'pfunc-convert-doublecompoundunit' => 'Грешка: не можам да парсирам двојни мешовити единици како „$1“',
 2026+ 'pfunc-convert-dimension-length' => 'должина',
 2027+ 'pfunc-convert-dimension-area' => 'плоштина',
 2028+ 'pfunc-convert-dimension-volume' => 'волумен',
 2029+ 'pfunc-convert-dimension-time' => 'време',
 2030+ 'pfunc-convert-dimension-timesquared' => 'време<sup>2</sup>',
 2031+ 'pfunc-convert-dimension-mass' => 'маса',
 2032+ 'pfunc-convert-dimension-speed' => 'брзина',
 2033+ 'pfunc-convert-dimension-temperature' => 'температура',
 2034+ 'pfunc-convert-dimension-acceleration' => 'забрзување',
 2035+ 'pfunc-convert-dimension-force' => 'сила',
 2036+ 'pfunc-convert-dimension-torque' => 'момент на сила',
 2037+ 'pfunc-convert-dimension-energy' => 'енергија',
 2038+ 'pfunc-convert-dimension-power' => 'моќ',
 2039+ 'pfunc-convert-dimension-pressure' => 'притисок',
 2040+ 'pfunc-convert-dimension-density' => 'густина',
 2041+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'позитивна горивна ефикасност',
 2042+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'негативна горивна ефикасност',
 2043+ 'pfunc-convert-prefix-yotta' => 'јота',
 2044+ 'pfunc-convert-prefix-zetta' => 'зета',
 2045+ 'pfunc-convert-prefix-exa' => 'екса',
 2046+ 'pfunc-convert-prefix-peta' => 'пета',
 2047+ 'pfunc-convert-prefix-tera' => 'тера',
 2048+ 'pfunc-convert-prefix-giga' => 'гига',
 2049+ 'pfunc-convert-prefix-mega' => 'мега',
 2050+ 'pfunc-convert-prefix-kilo' => 'кило',
 2051+ 'pfunc-convert-prefix-hecto' => 'хекто',
 2052+ 'pfunc-convert-prefix-deca' => 'дека',
 2053+ 'pfunc-convert-prefix-deci' => 'деци',
 2054+ 'pfunc-convert-prefix-centi' => 'санти',
 2055+ 'pfunc-convert-prefix-milli' => 'мили',
 2056+ 'pfunc-convert-prefix-micro' => 'микро',
 2057+ 'pfunc-convert-prefix-nano' => 'нано',
 2058+ 'pfunc-convert-prefix-pico' => 'пико',
 2059+ 'pfunc-convert-prefix-femto' => 'фемто',
 2060+ 'pfunc-convert-prefix-atto' => 'ато',
 2061+ 'pfunc-convert-prefix-zepto' => 'зепто',
 2062+ 'pfunc-convert-prefix-yocto' => 'јокто',
 2063+ 'pfunc-convert-prefix-yotta-abbr' => 'Ј',
 2064+ 'pfunc-convert-prefix-zetta-abbr' => 'З',
 2065+ 'pfunc-convert-prefix-exa-abbr' => 'Е',
 2066+ 'pfunc-convert-prefix-peta-abbr' => 'П',
 2067+ 'pfunc-convert-prefix-tera-abbr' => 'Т',
 2068+ 'pfunc-convert-prefix-giga-abbr' => 'Г',
 2069+ 'pfunc-convert-prefix-mega-abbr' => 'М',
 2070+ 'pfunc-convert-prefix-kilo-abbr' => 'к',
 2071+ 'pfunc-convert-prefix-hecto-abbr' => 'х',
 2072+ 'pfunc-convert-prefix-deca-abbr' => 'да',
 2073+ 'pfunc-convert-prefix-deci-abbr' => 'д',
 2074+ 'pfunc-convert-prefix-centi-abbr' => 'с',
 2075+ 'pfunc-convert-prefix-milli-abbr' => 'м',
 2076+ 'pfunc-convert-prefix-micro-abbr' => 'μ',
 2077+ 'pfunc-convert-prefix-nano-abbr' => 'н',
 2078+ 'pfunc-convert-prefix-pico-abbr' => 'п',
 2079+ 'pfunc-convert-prefix-femto-abbr' => 'ф',
 2080+ 'pfunc-convert-prefix-atto-abbr' => 'а',
 2081+ 'pfunc-convert-prefix-zepto-abbr' => 'з',
 2082+ 'pfunc-convert-prefix-yocto-abbr' => 'ј',
 2083+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|метар|метри}}',
 2084+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|ангстрем|ангстреми}}',
 2085+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|милја|милји}}',
 2086+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|фурлонг|фурлонзи}}',
 2087+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|ланец|ланци}}',
 2088+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|прачка|прачки}}',
 2089+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|фатом|фатоми}}',
 2090+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|јарда|јарди}}',
 2091+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|стапка|стапки}}',
 2092+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|дланка|дланки}}',
 2093+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|инч|инчи}}',
 2094+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|наутичка милја|наутички милји}}',
 2095+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|наутичка милја (британска, пред 1970)|наутички милји (британска, пред 1970)}}',
 2096+ 'pfunc-convert-unit-length-nauticalmileus' => '{PLURAL:$1|наутичка милја (американска, пред 1954)|наутички милји (американски, пред 1954)}}',
 2097+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2 парсек|$2 парсеци}}',
 2098+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|светлосна година|светлосни години}}',
 2099+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|астрономска единица|астрономски единици}}',
 2100+ 'pfunc-convert-unit-length-metre-abbr' => '$2 м',
 2101+ 'pfunc-convert-unit-length-mile-abbr' => 'ми',
 2102+ 'pfunc-convert-unit-length-furlong-abbr' => 'фурлонг',
 2103+ 'pfunc-convert-unit-length-chain-abbr' => 'ланец',
 2104+ 'pfunc-convert-unit-length-rod-abbr' => 'пр',
 2105+ 'pfunc-convert-unit-length-fathom-abbr' => 'фатом',
 2106+ 'pfunc-convert-unit-length-yard-abbr' => 'јд',
 2107+ 'pfunc-convert-unit-length-foot-abbr' => 'ст',
 2108+ 'pfunc-convert-unit-length-hand-abbr' => 'дл',
 2109+ 'pfunc-convert-unit-length-inch-abbr' => 'ин',
 2110+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'нми',
 2111+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'нми (брит)',
 2112+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'нми (амер. пред 1954)',
 2113+ 'pfunc-convert-unit-length-parsec-abbr' => '$2 пс',
 2114+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2 сг',
 2115+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'ae',
 2116+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|квадратен километар|квадратни километри}}',
 2117+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|квадратен метар|квадратни метри}}',
 2118+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|квадратен сантиметар|квадратни сантиметри}}',
 2119+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|квадратен милиметар|квадратни милиметри}}',
 2120+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|хектар|хектари}}',
 2121+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|квадратна милја|квадратни милји}}',
 2122+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|акр|акри}}',
 2123+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|квадратна јарда|квадратни јарди}}',
 2124+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|квадратна стапка|квадратни стапки}}',
 2125+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|квадратен инч|квадратни инчи}}',
 2126+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|квадратна наутичка милја|квадратни наутички милји}}',
 2127+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|дунум|дунуми}}',
 2128+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|цубо|цуба}}',
 2129+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'км<sup>2</sup>',
 2130+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'м<sup>2</sup>',
 2131+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'см<sup>2</sup>',
 2132+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'мм<msup>2</sup>',
 2133+ 'pfunc-convert-unit-area-hectare-abbr' => 'ха',
 2134+ 'pfunc-convert-unit-area-squaremile-abbr' => 'ми<sup>2</sup>',
 2135+ 'pfunc-convert-unit-area-acre-abbr' => 'акр',
 2136+ 'pfunc-convert-unit-area-squareyard-abbr' => 'јд<sup>2</sup>',
 2137+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'ст<sup>2</sup>',
 2138+ 'pfunc-convert-unit-area-squareinch-abbr' => 'ин<sup>2</sup>',
 2139+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'нми<sup>2</sup>',
 2140+ 'pfunc-convert-unit-area-dunam-abbr' => 'дунум',
 2141+ 'pfunc-convert-unit-area-tsubo-abbr' => 'цубо',
 2142+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|секунда|секунди}}',
 2143+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|година|години}}',
 2144+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|ден|дена}}',
 2145+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|час|часа}}',
 2146+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|минута|минути}}',
 2147+ 'pfunc-convert-unit-time-second-abbr' => 'с',
 2148+ 'pfunc-convert-unit-time-year-abbr' => '$2 г',
 2149+ 'pfunc-convert-unit-time-day-abbr' => 'ден',
 2150+ 'pfunc-convert-unit-time-hour-abbr' => 'ч',
 2151+ 'pfunc-convert-unit-time-minute-abbr' => 'мин',
 2152+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|кубен метар|кубни метри}}',
 2153+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|кубен сантиметар|кубни сантиметри}}',
 2154+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|кубен милиметар|кубни милиметри}}',
 2155+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|килолитар|килолитри}}',
 2156+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|литар|литри}}',
 2157+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|центилитар|центилитри}}',
 2158+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|милилитар|милилитри}}',
 2159+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|кубна јарда|кубни јарди}}',
 2160+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|кубна стапка|кубни стапки}}',
 2161+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|кубен инч|кубни инчи}}',
 2162+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|барел|барели}}',
 2163+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|бушел|бушели}}',
 2164+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|галон|галони}}',
 2165+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|кварта|кварти}}',
 2166+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|пинта|пинти}}',
 2167+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|течна унца|течни унци}}',
 2168+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|американски барел|американски барели}}',
 2169+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|барел|барели}}',
 2170+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|барел|барели}}',
 2171+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|американски галон|американски галони}}',
 2172+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|американска кварта|американски кварти}}',
 2173+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|американска пинта|американски пинти}}',
 2174+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|американска течна унца|американски течни унци}}',
 2175+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|американски сув барел|американски суви барели}}',
 2176+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|американски бушел|американски бушели}}',
 2177+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|американски сув галон|американски суви галони}}',
 2178+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|американска сува кварта|американски суви кварти}}',
 2179+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|американска сува пинта|американски суви пинти}}',
 2180+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'м<sup>3</sup>',
 2181+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'см<sup>3</sup>',
 2182+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'мм<sup>3</sup>',
 2183+ 'pfunc-convert-unit-volume-litre-abbr' => '$2 л',
 2184+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'јд<sup>3</sup>',
 2185+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'ст<sup>3</sup>',
 2186+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'ин<sup>3</sup>',
 2187+ 'pfunc-convert-unit-volume-barrel-abbr' => 'ббл',
 2188+ 'pfunc-convert-unit-volume-bushel-abbr' => 'бш',
 2189+ 'pfunc-convert-unit-volume-gallon-abbr' => 'гал',
 2190+ 'pfunc-convert-unit-volume-quart-abbr' => 'кт',
 2191+ 'pfunc-convert-unit-volume-pint-abbr' => 'пт',
 2192+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'тч уц',
 2193+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'ббл (САД)',
 2194+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'ббл',
 2195+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'ббл',
 2196+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'гал (САД)',
 2197+ 'pfunc-convert-unit-volume-usquart-abbr' => 'кт (САД)',
 2198+ 'pfunc-convert-unit-volume-uspint-abbr' => 'пт (САД)',
 2199+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'тч уц (САД)',
 2200+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'ббл (САД)',
 2201+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'бш (САД)',
 2202+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'сув гал (САД)',
 2203+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'сув кт (САД)',
 2204+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'сув пт (САД)',
 2205+ 'pfunc-convert-unit-speed-mile-hour' => 'милји на час',
 2206+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
 2207+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'ми/ч',
 2208+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
 2209+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|паскал|паскали}}',
 2210+ 'pfunc-convert-unit-pressure-bar' => 'бар',
 2211+ 'pfunc-convert-unit-pressure-decibar' => 'децибар',
 2212+ 'pfunc-convert-unit-pressure-millibar' => 'милибар',
 2213+ 'pfunc-convert-unit-pressure-kilobarye' => 'килобарија',
 2214+ 'pfunc-convert-unit-pressure-barye' => 'барија',
 2215+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|атмосфера|атмосфери}}',
 2216+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|тор|тора}}',
 2217+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|милиметар живин столб|милиметри живин столб}}',
 2218+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|инч живин столб|инчи живин столб}}',
 2219+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|фунта на квадратен инч|фунти на квадратен инч}}',
 2220+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2 Па',
 2221+ 'pfunc-convert-unit-pressure-bar-abbr' => 'бар',
 2222+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'дбар',
 2223+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'мбар',
 2224+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'кБа',
 2225+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ба',
 2226+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'атм',
 2227+ 'pfunc-convert-unit-pressure-torr-abbr' => 'тор',
 2228+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'ммHg',
 2229+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'инHg',
 2230+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
16162231 );
16172232
16182233 /** Malayalam (മലയാളം)
@@ -1694,6 +2309,195 @@
16952310 'pfunc_expr_unknown_error' => 'Ralat ungkapan: Ralat tidak diketahui ($1)',
16962311 'pfunc_expr_not_a_number' => 'Dalam $1: hasil bukan nombor',
16972312 'pfunc_string_too_long' => 'Ralat: Rentetan melampaui batas aksara $1',
 2313+ 'pfunc-convert-dimensionmismatch' => 'Ralat: Tidak boleh menukar antara unit-unit "$1" dan "$2".',
 2314+ 'pfunc-convert-unknownunit' => 'Ralat: Unit "$1" tidak dikenali.',
 2315+ 'pfunc-convert-unknowndimension' => 'Ralat: Matra "$1" tidak dikenali.',
 2316+ 'pfunc-convert-invalidcompoundunit' => 'Ralat: Unit majmuk "$1" tidak sah.',
 2317+ 'pfunc-convert-nounit' => 'Ralat: Tiada unit sumber yang diberikan.',
 2318+ 'pfunc-convert-doublecompoundunit' => 'Ralat: Unit majmuk berganda seperti "$1" tidak boleh dihuraikan.',
 2319+ 'pfunc-convert-dimension-length' => 'panjang',
 2320+ 'pfunc-convert-dimension-area' => 'luas',
 2321+ 'pfunc-convert-dimension-volume' => 'isipadu',
 2322+ 'pfunc-convert-dimension-time' => 'masa',
 2323+ 'pfunc-convert-dimension-timesquared' => 'masa<sup>2</sup>',
 2324+ 'pfunc-convert-dimension-mass' => 'jisim',
 2325+ 'pfunc-convert-dimension-speed' => 'kelajuan',
 2326+ 'pfunc-convert-dimension-temperature' => 'suhu',
 2327+ 'pfunc-convert-dimension-acceleration' => 'pecutan',
 2328+ 'pfunc-convert-dimension-force' => 'daya',
 2329+ 'pfunc-convert-dimension-torque' => 'tork',
 2330+ 'pfunc-convert-dimension-energy' => 'tenaga',
 2331+ 'pfunc-convert-dimension-power' => 'kuasa',
 2332+ 'pfunc-convert-dimension-pressure' => 'tekanan',
 2333+ 'pfunc-convert-dimension-density' => 'ketumpatan',
 2334+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'kecekapanbahanapipositif',
 2335+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'kecekapanbahanapinegatif',
 2336+ 'pfunc-convert-prefix-yotta' => 'yotta',
 2337+ 'pfunc-convert-prefix-zetta' => 'zetta',
 2338+ 'pfunc-convert-prefix-exa' => 'eksa',
 2339+ 'pfunc-convert-prefix-peta' => 'peta',
 2340+ 'pfunc-convert-prefix-tera' => 'tera',
 2341+ 'pfunc-convert-prefix-giga' => 'giga',
 2342+ 'pfunc-convert-prefix-mega' => 'mega',
 2343+ 'pfunc-convert-prefix-kilo' => 'kilo',
 2344+ 'pfunc-convert-prefix-hecto' => 'hekto',
 2345+ 'pfunc-convert-prefix-deca' => 'deka',
 2346+ 'pfunc-convert-prefix-deci' => 'desi',
 2347+ 'pfunc-convert-prefix-centi' => 'senti',
 2348+ 'pfunc-convert-prefix-milli' => 'milli',
 2349+ 'pfunc-convert-prefix-micro' => 'mikro',
 2350+ 'pfunc-convert-prefix-nano' => 'nano',
 2351+ 'pfunc-convert-prefix-pico' => 'piko',
 2352+ 'pfunc-convert-prefix-femto' => 'femto',
 2353+ 'pfunc-convert-prefix-atto' => 'atto',
 2354+ 'pfunc-convert-prefix-zepto' => 'zepto',
 2355+ 'pfunc-convert-prefix-yocto' => 'yokto',
 2356+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2meter|$2meter}}',
 2357+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|angstrom|angstrom}}',
 2358+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|batu|batu}}',
 2359+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlong}}',
 2360+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|rantai|rantai}}',
 2361+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|pol|pol}}',
 2362+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|fatom|fatom}}',
 2363+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|ela|ela}}',
 2364+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|kaki|kaki}}',
 2365+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|tangan|tangan}}',
 2366+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|inci|inci}}',
 2367+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|batu nautika|batu nautika}}',
 2368+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|batu nautika (British pra-1970)|batu nautika (British pra-1970)}}',
 2369+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|batu nautika (AS pra-1954)|batu nautika (AS pra-1954)}}',
 2370+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2parsek|$2parsek}}',
 2371+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|$2tahun cahaya|$2tahun cahaya}}',
 2372+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|unit astronomi|unit astronomi}}',
 2373+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
 2374+ 'pfunc-convert-unit-length-chain-abbr' => 'rantai',
 2375+ 'pfunc-convert-unit-length-rod-abbr' => 'pol',
 2376+ 'pfunc-convert-unit-length-fathom-abbr' => 'fatom',
 2377+ 'pfunc-convert-unit-length-yard-abbr' => 'ela',
 2378+ 'pfunc-convert-unit-length-foot-abbr' => 'kaki',
 2379+ 'pfunc-convert-unit-length-hand-abbr' => 'tgn',
 2380+ 'pfunc-convert-unit-length-inch-abbr' => 'in',
 2381+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'batu n',
 2382+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'batu n (Brit)',
 2383+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'batu n (AS pra-1954)',
 2384+ 'pfunc-convert-unit-length-parsec-abbr' => '$2pc',
 2385+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2tc',
 2386+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'AU',
 2387+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|kilometer persegi|kilometer persegi}}',
 2388+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|meter persegi|meter persegi}}',
 2389+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|sentimeter persegi|sentimeter persegi}}',
 2390+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|millimeter persegi|millimeter persegi}}',
 2391+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hektar|hektar}}',
 2392+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|batu persegi|batu persegi}}',
 2393+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|ekar|ekar}}',
 2394+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|ela persegi|ela persegi}}',
 2395+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|kaki persegi|kaki persegi}}',
 2396+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|inci persegi|inci persegi}}',
 2397+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|batu nautika persegi|batu nautika persegi}}',
 2398+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|dunam|dunam}}',
 2399+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|tsubo|tsubo}}',
 2400+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
 2401+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
 2402+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
 2403+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
 2404+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
 2405+ 'pfunc-convert-unit-area-squaremile-abbr' => 'batu<sup>2</sup>',
 2406+ 'pfunc-convert-unit-area-acre-abbr' => 'ekar',
 2407+ 'pfunc-convert-unit-area-squareyard-abbr' => 'ela<sup>2</sup>',
 2408+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'kaki<sup>2</sup>',
 2409+ 'pfunc-convert-unit-area-squareinch-abbr' => 'inci<sup>2</sup>',
 2410+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'batu n<sup>2</sup>',
 2411+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
 2412+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
 2413+ 'pfunc-convert-unit-time-second' => '{{PLURAL: $1|saat|saat}}',
 2414+ 'pfunc-convert-unit-time-year' => '{{PLURAL: $1|$2tahun|$2tahun}}',
 2415+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|hari|hari}}',
 2416+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|jam|jam}}',
 2417+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minit|minit}}',
 2418+ 'pfunc-convert-unit-time-second-abbr' => 's',
 2419+ 'pfunc-convert-unit-time-year-abbr' => '$2thn',
 2420+ 'pfunc-convert-unit-time-day-abbr' => 'hari',
 2421+ 'pfunc-convert-unit-time-hour-abbr' => 'jam',
 2422+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
 2423+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|meter padu|meter padu}}',
 2424+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|sentimeter padu|sentimeter padu}}',
 2425+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|millimeter padu|millimeter padu}}',
 2426+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|kilolite|kiloliter}}',
 2427+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|liter|liter}}',
 2428+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|sentiliter|sentiliter}}',
 2429+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|milliliter|milliliter}}',
 2430+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|ela padu|ela padu}}',
 2431+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|kaki padu|kaki padu}}',
 2432+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|inci padu|inci padu}}',
 2433+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|tong|tong}}',
 2434+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|busyel|busyel}}',
 2435+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|gelen|gelen}}',
 2436+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|kuart|kuart}}',
 2437+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|pain|pain}}',
 2438+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|auns bendalir|auns bendalir}}',
 2439+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|tong AS|tong AS}}',
 2440+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|tong|tong}}',
 2441+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|tong|tong}}',
 2442+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|gelen AS|gelen AS}}',
 2443+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|kuart AS|kuart AS}}',
 2444+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|pain AS|pain AS}}',
 2445+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|auns bendalir AS|auns bendalir AS}}',
 2446+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|tong kering AS|tong kering AS}}',
 2447+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|busyel AS|busyel AS}}',
 2448+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|gelen kering AS|gelen kering AS}}',
 2449+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|kuart kering AS|kuart kering AS}}',
 2450+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|pain kering AS|pain kering AS}}',
 2451+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
 2452+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
 2453+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
 2454+ 'pfunc-convert-unit-volume-litre-abbr' => '$2l',
 2455+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'ela<sup>3</sup>',
 2456+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'kaki<sup>3</sup>',
 2457+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'inci<sup>3</sup>',
 2458+ 'pfunc-convert-unit-volume-barrel-abbr' => 'tong',
 2459+ 'pfunc-convert-unit-volume-bushel-abbr' => 'bsh',
 2460+ 'pfunc-convert-unit-volume-gallon-abbr' => 'gal',
 2461+ 'pfunc-convert-unit-volume-quart-abbr' => 'qt',
 2462+ 'pfunc-convert-unit-volume-pint-abbr' => 'pt',
 2463+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'fl oz',
 2464+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'tong AS',
 2465+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'tong',
 2466+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'tong',
 2467+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'gal AS',
 2468+ 'pfunc-convert-unit-volume-usquart-abbr' => 'qt AS',
 2469+ 'pfunc-convert-unit-volume-uspint-abbr' => 'pt AS',
 2470+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'fl oz AS',
 2471+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'tong AS',
 2472+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'bsh AS',
 2473+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'gal kering AS',
 2474+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'qt kering AS',
 2475+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'pt kering AS',
 2476+ 'pfunc-convert-unit-speed-mile-hour' => 'batu sejam',
 2477+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
 2478+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'bsj',
 2479+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
 2480+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2pascal|$2pascal}}',
 2481+ 'pfunc-convert-unit-pressure-bar' => 'bar',
 2482+ 'pfunc-convert-unit-pressure-decibar' => 'desibar',
 2483+ 'pfunc-convert-unit-pressure-millibar' => 'millibar',
 2484+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilobarye',
 2485+ 'pfunc-convert-unit-pressure-barye' => 'barye',
 2486+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosfera|atmosfera}}',
 2487+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|Torr|Torr}}',
 2488+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|millimeter raksa|millimeter raksa}}',
 2489+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|inci raksa|inci raksa}}',
 2490+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|paun seinci persegi|paun seinci persegi}}',
 2491+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
 2492+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
 2493+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
 2494+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
 2495+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
 2496+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
 2497+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
 2498+ 'pfunc-convert-unit-pressure-torr-abbr' => 'Torr',
 2499+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
 2500+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'inHg',
 2501+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
16982502 );
16992503
17002504 /** Erzya (Эрзянь)
@@ -1768,6 +2572,195 @@
17692573 'pfunc_expr_unknown_error' => 'Fout in uitdrukking: onbekende fout ($1)',
17702574 'pfunc_expr_not_a_number' => 'In $1: resultaat is geen getal',
17712575 'pfunc_string_too_long' => 'Fout: De tekst is langer dan de limiet van $1 {{PLURAL:$1|karakter|karakters}}',
 2576+ 'pfunc-convert-dimensionmismatch' => 'Fout: het is niet mogelijk te converteren tussen de eenheden van "$1" en "$2".',
 2577+ 'pfunc-convert-unknownunit' => 'Fout: onbekende eenheid "$1".',
 2578+ 'pfunc-convert-unknowndimension' => 'Fout: Onbekende afmeting "$1".',
 2579+ 'pfunc-convert-invalidcompoundunit' => 'Fout: Ongeldige samengestelde eenheid "$1".',
 2580+ 'pfunc-convert-nounit' => 'Fout: Geen broneenheid opgegeven.',
 2581+ 'pfunc-convert-doublecompoundunit' => 'Fout: het is niet mogelijk samengestelde eenheden zoals "$1" te verwerken.',
 2582+ 'pfunc-convert-dimension-length' => 'lengte',
 2583+ 'pfunc-convert-dimension-area' => 'oppervlakte',
 2584+ 'pfunc-convert-dimension-volume' => 'inhoud',
 2585+ 'pfunc-convert-dimension-time' => 'tijd',
 2586+ 'pfunc-convert-dimension-timesquared' => 'tijd<sup>2</sup>',
 2587+ 'pfunc-convert-dimension-mass' => 'massa',
 2588+ 'pfunc-convert-dimension-speed' => 'snelheid',
 2589+ 'pfunc-convert-dimension-temperature' => 'temperatuur',
 2590+ 'pfunc-convert-dimension-acceleration' => 'versnelling',
 2591+ 'pfunc-convert-dimension-force' => 'kracht',
 2592+ 'pfunc-convert-dimension-torque' => 'koppel',
 2593+ 'pfunc-convert-dimension-energy' => 'energie',
 2594+ 'pfunc-convert-dimension-power' => 'vermogen',
 2595+ 'pfunc-convert-dimension-pressure' => 'druk',
 2596+ 'pfunc-convert-dimension-density' => 'dichtheid',
 2597+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'brandstofefficientiepositief',
 2598+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'brandstofefficientienegatief',
 2599+ 'pfunc-convert-prefix-yotta' => 'yotta',
 2600+ 'pfunc-convert-prefix-zetta' => 'zetta',
 2601+ 'pfunc-convert-prefix-exa' => 'exa',
 2602+ 'pfunc-convert-prefix-peta' => 'peta',
 2603+ 'pfunc-convert-prefix-tera' => 'tera',
 2604+ 'pfunc-convert-prefix-giga' => 'giga',
 2605+ 'pfunc-convert-prefix-mega' => 'mega',
 2606+ 'pfunc-convert-prefix-kilo' => 'kilo',
 2607+ 'pfunc-convert-prefix-hecto' => 'hecto',
 2608+ 'pfunc-convert-prefix-deca' => 'deca',
 2609+ 'pfunc-convert-prefix-deci' => 'deci',
 2610+ 'pfunc-convert-prefix-centi' => 'centi',
 2611+ 'pfunc-convert-prefix-milli' => 'milli',
 2612+ 'pfunc-convert-prefix-micro' => 'micro',
 2613+ 'pfunc-convert-prefix-nano' => 'nano',
 2614+ 'pfunc-convert-prefix-pico' => 'pico',
 2615+ 'pfunc-convert-prefix-femto' => 'femto',
 2616+ 'pfunc-convert-prefix-atto' => 'atto',
 2617+ 'pfunc-convert-prefix-zepto' => 'zepto',
 2618+ 'pfunc-convert-prefix-yocto' => 'yocto',
 2619+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|meter|meter}}',
 2620+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|angstrom|angstrom}}',
 2621+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|mijl|mijl}}',
 2622+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlong}}',
 2623+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|chain|chains}}',
 2624+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|roede|roede}}',
 2625+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|vadem|vadem}}',
 2626+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|yard|yards}}',
 2627+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|voet|voet}}',
 2628+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|hand|handen}}',
 2629+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|inch|inches}}',
 2630+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|nautische mijl|nautische mijlen}}',
 2631+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|nautische mijl (Brits, voor 1970)|nautische mijlen (Brits, voor 1970)}}',
 2632+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|nautische mijl (VS, voor 1954)|nautische mijlen (VS, voor 1954)}}',
 2633+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2 parsec|$2 parsecs}}',
 2634+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|$2 lichtjaar|$2 lichtjaren}}',
 2635+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|astronomische eenheid|astronomische eenheden}}',
 2636+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
 2637+ 'pfunc-convert-unit-length-chain-abbr' => 'chain',
 2638+ 'pfunc-convert-unit-length-rod-abbr' => 'rd',
 2639+ 'pfunc-convert-unit-length-fathom-abbr' => 'fath',
 2640+ 'pfunc-convert-unit-length-yard-abbr' => 'yd',
 2641+ 'pfunc-convert-unit-length-foot-abbr' => 'ft',
 2642+ 'pfunc-convert-unit-length-hand-abbr' => 'h',
 2643+ 'pfunc-convert-unit-length-inch-abbr' => 'in',
 2644+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'NM',
 2645+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'MN (Brits)',
 2646+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'MN (VS voor 1954)',
 2647+ 'pfunc-convert-unit-length-parsec-abbr' => '$2pc',
 2648+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2lj',
 2649+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'AE',
 2650+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|vierkante kilometer|vierkante kilometer}}',
 2651+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|vierkante meter|vierkante meter}}',
 2652+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|vierkante centimeter|vierkante centimeter}}',
 2653+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|vierkante millimeter|vierkante millimeter}}',
 2654+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hectare|hectare}}',
 2655+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|vierkante mijl|vierkante mijl}}',
 2656+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|acre|acres}}',
 2657+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|vierkante yard|vierkante yards}}',
 2658+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|voerkante foot|vierkante foot}}',
 2659+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|vierkante inch|vierkante inches}}',
 2660+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|vierkante nautische mijl|vierkante nautische mijlen}}',
 2661+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|dunam|dunams}}',
 2662+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|tsubo|tsubo}}',
 2663+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
 2664+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
 2665+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
 2666+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
 2667+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
 2668+ 'pfunc-convert-unit-area-squaremile-abbr' => 'sq mi',
 2669+ 'pfunc-convert-unit-area-acre-abbr' => 'acre',
 2670+ 'pfunc-convert-unit-area-squareyard-abbr' => 'sq yd',
 2671+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'sq ft',
 2672+ 'pfunc-convert-unit-area-squareinch-abbr' => 'sq in',
 2673+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'vierkante mijl',
 2674+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
 2675+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
 2676+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|seconde|seconden}}',
 2677+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2jaar|$2jaren}}',
 2678+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|dag|dagen}}',
 2679+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|uur|uur}}',
 2680+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minuut|minuten}}',
 2681+ 'pfunc-convert-unit-time-second-abbr' => 'sec.',
 2682+ 'pfunc-convert-unit-time-year-abbr' => '$2jaar',
 2683+ 'pfunc-convert-unit-time-day-abbr' => 'dag',
 2684+ 'pfunc-convert-unit-time-hour-abbr' => 'uur',
 2685+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
 2686+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1| kubieke meter|kubieke meter}}',
 2687+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|kubieke centimeter|kubieke centimeter}}',
 2688+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|kubieke millimeter|kubieke millimeter}}',
 2689+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|kiloliter|kiloliter}}',
 2690+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|liter|liter}}',
 2691+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|centiliters|centiliter}}',
 2692+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|milliliter|milliliter}}',
 2693+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|kubieke yard|kubieke yard}}',
 2694+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|kubieke voet|kubieke voet}}',
 2695+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|kubieke inch|kubieke inch}}',
 2696+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|vat|vaten}}',
 2697+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|bushel|bushels}}',
 2698+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|gallon|gallon}}',
 2699+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|quart|quart}}',
 2700+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|pint|pints}}',
 2701+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|fluid ounce|fluid ounces}}',
 2702+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|VS-vat|VS-vaten}}',
 2703+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|vat|vaten}}',
 2704+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|vat|vaten}}',
 2705+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|VS-gallon|VS-gallon}}',
 2706+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|VS-quart|VS-quart}}',
 2707+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|VS-pint|VS-pints}}',
 2708+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|VS-fluid ounce|VS-fluid ounces}}',
 2709+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|VS-droog vat|VS-droge vaten}}',
 2710+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|VS-bushel|VS-bushels}}',
 2711+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|VS-droge gallon|VS-droge gallon}}',
 2712+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|VS-droge quart|VS-droge quart}}',
 2713+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|VS-droge pint|VS-droge pints}}',
 2714+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
 2715+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
 2716+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
 2717+ 'pfunc-convert-unit-volume-litre-abbr' => 'l',
 2718+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'yd<sup>3</sup>',
 2719+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'ft<sup>3</sup>',
 2720+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'in<sup>3</sup>',
 2721+ 'pfunc-convert-unit-volume-barrel-abbr' => 'bbl',
 2722+ 'pfunc-convert-unit-volume-bushel-abbr' => 'bsh',
 2723+ 'pfunc-convert-unit-volume-gallon-abbr' => 'gal',
 2724+ 'pfunc-convert-unit-volume-quart-abbr' => 'qt',
 2725+ 'pfunc-convert-unit-volume-pint-abbr' => 'pt',
 2726+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'fl.oz.',
 2727+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'VS bbl',
 2728+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'bbl',
 2729+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'bbl',
 2730+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'VS gal',
 2731+ 'pfunc-convert-unit-volume-usquart-abbr' => 'VS qt',
 2732+ 'pfunc-convert-unit-volume-uspint-abbr' => 'VS pt',
 2733+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'VS fl.oz.',
 2734+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'VS bbl',
 2735+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'VS bsh',
 2736+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'VS drg.gal',
 2737+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'VS drg.qt',
 2738+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'VS drg.pt',
 2739+ 'pfunc-convert-unit-speed-mile-hour' => 'mijl per uur',
 2740+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
 2741+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'mpu',
 2742+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
 2743+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2pascal|$2pascal}}',
 2744+ 'pfunc-convert-unit-pressure-bar' => 'bar',
 2745+ 'pfunc-convert-unit-pressure-decibar' => 'decibar',
 2746+ 'pfunc-convert-unit-pressure-millibar' => 'millibar',
 2747+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilobarn',
 2748+ 'pfunc-convert-unit-pressure-barye' => 'barye',
 2749+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosfeer|atmosfeer}}',
 2750+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|Torr|Torr}}',
 2751+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|millimeter kwik|millimeter kwik}}',
 2752+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|duim kwik|duimen kwik}}',
 2753+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|pond per vierkante inch|pond per vierkante inch}}',
 2754+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
 2755+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
 2756+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
 2757+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
 2758+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
 2759+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
 2760+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
 2761+ 'pfunc-convert-unit-pressure-torr-abbr' => 'Torr',
 2762+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
 2763+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'inHg',
 2764+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
17722765 );
17732766
17742767 /** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
@@ -1875,6 +2868,142 @@
18762869 'pfunc_expr_unknown_error' => 'Błąd w wyrażeniu – nieznany błąd ($1)',
18772870 'pfunc_expr_not_a_number' => 'W $1 – wynik nie jest liczbą',
18782871 'pfunc_string_too_long' => 'Błąd – długość ciągu znaków przekracza dopuszczalne $1',
 2872+ 'pfunc-convert-dimensionmismatch' => 'Błąd – nie można konwertować pomiędzy jednostkami „$1” i „$2”',
 2873+ 'pfunc-convert-unknownunit' => 'Błąd – nieznana jednostka „$1”',
 2874+ 'pfunc-convert-unknowndimension' => 'Błąd – nieznana jednostka „$1”',
 2875+ 'pfunc-convert-invalidcompoundunit' => 'Błąd – nieprawidłowa jednostka złożona „$1”',
 2876+ 'pfunc-convert-nounit' => 'Błąd – brak jednostki źródłowej',
 2877+ 'pfunc-convert-doublecompoundunit' => 'Błąd – nie można przetworzyć jednostki podwójnie złożonej jak „$1”',
 2878+ 'pfunc-convert-dimension-length' => 'długość',
 2879+ 'pfunc-convert-dimension-area' => 'powierzchnia',
 2880+ 'pfunc-convert-dimension-volume' => 'objętość',
 2881+ 'pfunc-convert-dimension-time' => 'czas',
 2882+ 'pfunc-convert-dimension-timesquared' => 'czas<sup>2</sup>',
 2883+ 'pfunc-convert-dimension-mass' => 'masa',
 2884+ 'pfunc-convert-dimension-speed' => 'prędkość',
 2885+ 'pfunc-convert-dimension-temperature' => 'temperatura',
 2886+ 'pfunc-convert-dimension-acceleration' => 'przyspieszenie',
 2887+ 'pfunc-convert-dimension-force' => 'siła',
 2888+ 'pfunc-convert-dimension-torque' => 'moment obrotowy',
 2889+ 'pfunc-convert-dimension-energy' => 'energia',
 2890+ 'pfunc-convert-dimension-power' => 'moc',
 2891+ 'pfunc-convert-dimension-pressure' => 'ciśnienie',
 2892+ 'pfunc-convert-dimension-density' => 'gęstość',
 2893+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'bezwzględne zużycie paliwa',
 2894+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'nieprawidłowe zużycie paliwa',
 2895+ 'pfunc-convert-prefix-yotta' => 'jotta',
 2896+ 'pfunc-convert-prefix-zetta' => 'zetta',
 2897+ 'pfunc-convert-prefix-exa' => 'eksa',
 2898+ 'pfunc-convert-prefix-peta' => 'peta',
 2899+ 'pfunc-convert-prefix-tera' => 'tera',
 2900+ 'pfunc-convert-prefix-giga' => 'giga',
 2901+ 'pfunc-convert-prefix-mega' => 'mega',
 2902+ 'pfunc-convert-prefix-kilo' => 'kilo',
 2903+ 'pfunc-convert-prefix-hecto' => 'hekto',
 2904+ 'pfunc-convert-prefix-deca' => 'deka',
 2905+ 'pfunc-convert-prefix-deci' => 'decy',
 2906+ 'pfunc-convert-prefix-centi' => 'centy',
 2907+ 'pfunc-convert-prefix-milli' => 'milli',
 2908+ 'pfunc-convert-prefix-micro' => 'mikro',
 2909+ 'pfunc-convert-prefix-nano' => 'nano',
 2910+ 'pfunc-convert-prefix-pico' => 'piko',
 2911+ 'pfunc-convert-prefix-femto' => 'femto',
 2912+ 'pfunc-convert-prefix-atto' => 'atto',
 2913+ 'pfunc-convert-prefix-zepto' => 'zepto',
 2914+ 'pfunc-convert-prefix-yocto' => 'jokto',
 2915+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2 metr|$2 metry|$2 metrów}}',
 2916+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|angstrem|angstremy|angstremów}}',
 2917+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|mila|mile|mil}}',
 2918+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlongi|furlongów}}',
 2919+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|łańcuch|łańcuchy|łańcuchów}}',
 2920+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|pręt|pręty|prętów}}',
 2921+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|sążeń|sążnie|sążni}}',
 2922+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|jard|jardy|jardów}}',
 2923+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|stopa|stopy|stóp}}',
 2924+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|dłoń|dłonie|dłoni}}',
 2925+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|cal|cale|cali}}',
 2926+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|mila morska|mile morskie|mil morskich}}',
 2927+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|mila morska brytyjska|mile morskie brytyjskie|mil morskich brytyjskich}} sprzed 1970 roku',
 2928+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|mila morska amerykańska|mile morskie amerykańskie|mil morskich amerykańskich}} sprzed 1954 roku',
 2929+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2 parsek|$2 parseki|$2 parseków}}',
 2930+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|$2 rok świetlny|$2 lata świetlne|$2 lat świetlnych}}',
 2931+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|jednostka astronomiczna|jednostki astronomiczne|jednostek astronomicznych}}',
 2932+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
 2933+ 'pfunc-convert-unit-length-chain-abbr' => 'łańcuch',
 2934+ 'pfunc-convert-unit-length-rod-abbr' => 'rd',
 2935+ 'pfunc-convert-unit-length-fathom-abbr' => 'sążeń',
 2936+ 'pfunc-convert-unit-length-yard-abbr' => 'jard',
 2937+ 'pfunc-convert-unit-length-foot-abbr' => 'stopa',
 2938+ 'pfunc-convert-unit-length-hand-abbr' => 'dłoń',
 2939+ 'pfunc-convert-unit-length-inch-abbr' => 'cal',
 2940+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'INM',
 2941+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'angielska mila morska',
 2942+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'amerykańska mila morska sprzed 1954 roku',
 2943+ 'pfunc-convert-unit-length-parsec-abbr' => '$2 pc',
 2944+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2 lat świetlnych',
 2945+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'j.a.',
 2946+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|kilometr kwadratowy|kilometry kwadratowe|kilometrów kwadratowych}}',
 2947+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|metr kwadratowy|metry kwadratowe|metrów kwadratowych}}',
 2948+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|centymetr kwadratowy|centymetry kwadratowe|centymetrów kwadratowych}}',
 2949+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|millimetr kwadratowy|millimetry kwadratowe|millimetrów kwadratowych}}',
 2950+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hektar|hektary|hektarów}}',
 2951+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|mila kwadratowa|mile kwadratowe|mil kwadratowych}}',
 2952+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|akr|akry|akrów}}',
 2953+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|jard kwadratowy|jardy kwadratowe|jardów kwadratowych}}',
 2954+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|stopa kwadratowa|stopy kwadratowe|stóp kwadratowych}}',
 2955+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|cal kwadratowy|cale kwadratowe|cali kwadratowych}}',
 2956+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|mila morska kwadratowa|mile morskie kwadratowe|mil morskich kwadratowych}}',
 2957+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|dunam|dunamy|dunamów}}',
 2958+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|tsubo|tsubo|tsubo}}',
 2959+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
 2960+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
 2961+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
 2962+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
 2963+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
 2964+ 'pfunc-convert-unit-area-squaremile-abbr' => 'mila<sup>2</sup>',
 2965+ 'pfunc-convert-unit-area-acre-abbr' => 'akr',
 2966+ 'pfunc-convert-unit-area-squareyard-abbr' => 'jard<sup>2</sup>',
 2967+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'stopa<sup>2</sup>',
 2968+ 'pfunc-convert-unit-area-squareinch-abbr' => 'cal<sup>2</sup>',
 2969+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'mila morska<sup>2</sup>',
 2970+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
 2971+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
 2972+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|sekunda|sekundy|sekund}}',
 2973+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2 rok|$2 lata|$2 lat}}',
 2974+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|dzień|dni}}',
 2975+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|godzina|godziny|godzin}}',
 2976+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minuta|minuty|minut}}',
 2977+ 'pfunc-convert-unit-time-second-abbr' => 's',
 2978+ 'pfunc-convert-unit-time-year-abbr' => '$2 jard',
 2979+ 'pfunc-convert-unit-time-day-abbr' => 'doba',
 2980+ 'pfunc-convert-unit-time-hour-abbr' => 'h',
 2981+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
 2982+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|metr sześcienny|metry sześcienne|metrów sześciennych}}',
 2983+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|centymetr sześcienny|centymetry sześcienne|centymetrów sześciennych}}',
 2984+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|millimetr sześcienny|millimetry sześcienne|millimetrów sześciennych}}',
 2985+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|tysiąc litrów|tysiące litrów|tysięcy litrów}}',
 2986+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|litr|litry|litrów}}',
 2987+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|dziesiąta część|dziesiąte części|dziesiątych części}} litra',
 2988+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|millilitr|millilitry|millilitrów}}',
 2989+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|jard|jardów}}',
 2990+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
 2991+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
 2992+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
 2993+ 'pfunc-convert-unit-volume-litre-abbr' => '$2 l',
 2994+ 'pfunc-convert-unit-speed-mile-hour' => 'mil na godzinę',
 2995+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2paskal|$2paskali}}',
 2996+ 'pfunc-convert-unit-pressure-bar' => 'barów',
 2997+ 'pfunc-convert-unit-pressure-decibar' => 'decybarów',
 2998+ 'pfunc-convert-unit-pressure-millibar' => 'millibarów',
 2999+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilobarów',
 3000+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosfera|atmosfer}}',
 3001+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|millimtr słupka rtęci|millimetrów słupka rtęci}}',
 3002+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|cal słupka rtęci|cali słupka rtęci}}',
 3003+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
 3004+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar.',
 3005+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
 3006+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
 3007+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
18793008 );
18803009
18813010 /** Piedmontese (Piemontèis)
@@ -1904,6 +3033,134 @@
19053034 'pfunc_string_too_long' => 'Eror: la stringa a passa ël lìmit ëd $1 caràter',
19063035 );
19073036
 3037+/** Western Punjabi (پنجابی)
 3038+ * @author Khalid Mahmood
 3039+ */
 3040+$messages['pnb'] = array(
 3041+ 'pfunc-convert-dimension-length' => 'لمبائی',
 3042+ 'pfunc-convert-dimension-area' => 'تھاں',
 3043+ 'pfunc-convert-dimension-volume' => 'والیوم',
 3044+ 'pfunc-convert-dimension-time' => 'ویلہ',
 3045+ 'pfunc-convert-dimension-timesquared' => 'واری<sup>2</sup>',
 3046+ 'pfunc-convert-dimension-mass' => 'ماس',
 3047+ 'pfunc-convert-dimension-speed' => 'دوڑ',
 3048+ 'pfunc-convert-dimension-temperature' => 'گرمی ناپ',
 3049+ 'pfunc-convert-dimension-acceleration' => 'سدی دوڑ',
 3050+ 'pfunc-convert-dimension-force' => 'زور',
 3051+ 'pfunc-convert-dimension-torque' => 'ٹارک',
 3052+ 'pfunc-convert-dimension-energy' => 'انرجی',
 3053+ 'pfunc-convert-dimension-power' => 'پاور',
 3054+ 'pfunc-convert-dimension-pressure' => 'دبآ',
 3055+ 'pfunc-convert-dimension-density' => 'گوڑا',
 3056+ 'pfunc-convert-prefix-yotta' => 'یوٹا',
 3057+ 'pfunc-convert-prefix-zetta' => 'زیٹا',
 3058+ 'pfunc-convert-prefix-exa' => 'ایکسا',
 3059+ 'pfunc-convert-prefix-peta' => 'پیٹا',
 3060+ 'pfunc-convert-prefix-tera' => 'ٹیرا',
 3061+ 'pfunc-convert-prefix-giga' => 'گیگا',
 3062+ 'pfunc-convert-prefix-mega' => 'میگا',
 3063+ 'pfunc-convert-prefix-kilo' => 'کلو',
 3064+ 'pfunc-convert-prefix-hecto' => 'ہیکٹو',
 3065+ 'pfunc-convert-prefix-deca' => 'ڈیکا',
 3066+ 'pfunc-convert-prefix-deci' => 'ڈیسی',
 3067+ 'pfunc-convert-prefix-centi' => 'سنٹی',
 3068+ 'pfunc-convert-prefix-milli' => 'ملی',
 3069+ 'pfunc-convert-prefix-micro' => 'مائکرو',
 3070+ 'pfunc-convert-prefix-nano' => 'نینو',
 3071+ 'pfunc-convert-prefix-pico' => 'پکو',
 3072+ 'pfunc-convert-prefix-femto' => 'فمٹو',
 3073+ 'pfunc-convert-prefix-atto' => 'اٹو',
 3074+ 'pfunc-convert-prefix-zepto' => 'زپٹو',
 3075+ 'pfunc-convert-prefix-yocto' => 'یوکٹو',
 3076+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2میٹر}}',
 3077+ 'pfunc-convert-unit-length-furlong-abbr' => 'فرلانگ',
 3078+ 'pfunc-convert-unit-length-chain-abbr' => 'زنجیر',
 3079+ 'pfunc-convert-unit-length-rod-abbr' => 'رداس',
 3080+ 'pfunc-convert-unit-length-fathom-abbr' => 'فیدم',
 3081+ 'pfunc-convert-unit-length-yard-abbr' => 'گز',
 3082+ 'pfunc-convert-unit-length-foot-abbr' => 'فٹ',
 3083+ 'pfunc-convert-unit-length-hand-abbr' => 'کینٹہ',
 3084+ 'pfunc-convert-unit-length-inch-abbr' => 'انچ',
 3085+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'سمندری میل',
 3086+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'سمندری میل (برطانیہ)',
 3087+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'سمندری میل (امریکہ 1954 توں پہلے)',
 3088+ 'pfunc-convert-unit-length-parsec-abbr' => '$2کمپیوٹر',
 3089+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2ly',
 3090+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'اسمانی ناپ',
 3091+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|مربع کلومیٹر|مربع کلومیٹر}}',
 3092+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|مربع میٹر|مربع میٹر}}',
 3093+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|مربع سینٹیمیٹر|مربع سینٹیمیٹر}}',
 3094+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|مربع میلیمیٹر|مربع میلیمیٹر}}',
 3095+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|ہیکٹر|ہیکٹر}}',
 3096+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|مربع میلیمیٹر|مربع میل}}',
 3097+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|ایکڑ|ایکڑ}}',
 3098+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|مربع گز|مربع گز}}',
 3099+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|مربع فٹ|مربع فٹ}}',
 3100+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|مربع انچ|مربع انچ}}',
 3101+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|مربع سمندری میل|مربع سمندری میل}}',
 3102+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|ڈنام|ڈنام}}',
 3103+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|زوبو|زوبو}}',
 3104+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'کلومیٹر<sup>2</sup>',
 3105+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
 3106+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
 3107+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
 3108+ 'pfunc-convert-unit-area-hectare-abbr' => 'ہیکٹر',
 3109+ 'pfunc-convert-unit-area-squaremile-abbr' => 'مربع میل',
 3110+ 'pfunc-convert-unit-area-acre-abbr' => 'ایکڑ',
 3111+ 'pfunc-convert-unit-area-squareyard-abbr' => 'مربع گز',
 3112+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'مربع فٹ',
 3113+ 'pfunc-convert-unit-area-squareinch-abbr' => 'مربع انچ',
 3114+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'مربع سمندری میل',
 3115+ 'pfunc-convert-unit-area-dunam-abbr' => 'دونام',
 3116+ 'pfunc-convert-unit-area-tsubo-abbr' => 'سوبو',
 3117+ 'pfunc-convert-unit-time-second' => '$1 {{PLURAL:$1|سکنٹ|سکنٹاں}}',
 3118+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2ورہ|$2ورے}}',
 3119+ 'pfunc-convert-unit-time-day' => ' {{PLURAL:$1|دن|دناں}}',
 3120+ 'pfunc-convert-unit-time-hour' => ' {{PLURAL:$1|کینٹا|کینٹے}}',
 3121+ 'pfunc-convert-unit-time-minute' => ' {{PLURAL:$1|منٹ|منٹاں}}',
 3122+ 'pfunc-convert-unit-time-second-abbr' => 'سکنث',
 3123+ 'pfunc-convert-unit-time-year-abbr' => '$2ورہ',
 3124+ 'pfunc-convert-unit-time-day-abbr' => 'دیاڑھ',
 3125+ 'pfunc-convert-unit-time-hour-abbr' => 'کینٹہ',
 3126+ 'pfunc-convert-unit-time-minute-abbr' => 'منٹ',
 3127+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|مربع میٹر|مربع میٹر}}',
 3128+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|مربع سینٹیمیٹر|مربع سینٹیمیٹر}}',
 3129+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|مربع میلیمیٹر|مربع میلیمیٹر}}',
 3130+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|کلولٹر|کلولٹر}}',
 3131+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|لٹر|لٹر}}',
 3132+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|سینٹیلٹر}}',
 3133+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|ملیلٹر}}',
 3134+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|مربع گز}}',
 3135+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|مربع فٹ}}',
 3136+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|مربع انچ}}',
 3137+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|بیرل}}',
 3138+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|بشل}}',
 3139+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|گیلن}}',
 3140+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|کوارٹز}}',
 3141+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|پنٹ}}',
 3142+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|پانیسر اونس}}',
 3143+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|بیرل}}',
 3144+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|بیرل}}',
 3145+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|بیرل}}',
 3146+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|گیلن}}',
 3147+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|کوارٹز}}',
 3148+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|پنٹ}}',
 3149+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|پانیسر اونس}}',
 3150+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|بیرل}}',
 3151+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|بشل}}',
 3152+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|گیلن}}',
 3153+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|کوارٹز}}',
 3154+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|پنٹ}}',
 3155+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>2</sup>',
 3156+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'سینٹی میٹر<sup>3</sup>',
 3157+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'ملی میٹر<sup>3</sup>',
 3158+ 'pfunc-convert-unit-volume-litre-abbr' => '$2ly',
 3159+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'مربع گز',
 3160+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'مربع فٹ',
 3161+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'مکعب انچ',
 3162+ 'pfunc-convert-unit-volume-barrel-abbr' => 'bbl',
 3163+);
 3164+
19083165 /** Pashto (پښتو)
19093166 * @author Ahmed-Najib-Biabani-Ibrahimkhel
19103167 */
@@ -2069,6 +3326,195 @@
20703327 'pfunc_expr_unknown_error' => 'Ошибка выражения: неизвестная ошибка ($1)',
20713328 'pfunc_expr_not_a_number' => 'В $1: результат не является числом',
20723329 'pfunc_string_too_long' => 'Ошибка: строка превышает ограничение в $1 символов',
 3330+ 'pfunc-convert-dimensionmismatch' => 'Ошибка. Не удается преобразовать единицы измерения «$1» и «$2».',
 3331+ 'pfunc-convert-unknownunit' => 'Ошибка. Неизвестная единица «$1».',
 3332+ 'pfunc-convert-unknowndimension' => 'Ошибка. Неизвестная размерность «$1».',
 3333+ 'pfunc-convert-invalidcompoundunit' => 'Ошибка. Недопустимая составная единица «$1».',
 3334+ 'pfunc-convert-nounit' => 'Ошибка. Не указана исходная единица.',
 3335+ 'pfunc-convert-doublecompoundunit' => 'Ошибка. Невозможно разобрать двойные составные единицы вида «$1».',
 3336+ 'pfunc-convert-dimension-length' => 'длина',
 3337+ 'pfunc-convert-dimension-area' => 'площадь',
 3338+ 'pfunc-convert-dimension-volume' => 'объём',
 3339+ 'pfunc-convert-dimension-time' => 'время',
 3340+ 'pfunc-convert-dimension-timesquared' => 'время<sup>2</sup>',
 3341+ 'pfunc-convert-dimension-mass' => 'масса',
 3342+ 'pfunc-convert-dimension-speed' => 'скорость',
 3343+ 'pfunc-convert-dimension-temperature' => 'температура',
 3344+ 'pfunc-convert-dimension-acceleration' => 'ускорение',
 3345+ 'pfunc-convert-dimension-force' => 'сила',
 3346+ 'pfunc-convert-dimension-torque' => 'крутящий момент',
 3347+ 'pfunc-convert-dimension-energy' => 'энергия',
 3348+ 'pfunc-convert-dimension-power' => 'мощность',
 3349+ 'pfunc-convert-dimension-pressure' => 'давление',
 3350+ 'pfunc-convert-dimension-density' => 'плотность',
 3351+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'позитивная топливная эффективность',
 3352+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'негативная топливная эффективность',
 3353+ 'pfunc-convert-prefix-yotta' => 'йотта',
 3354+ 'pfunc-convert-prefix-zetta' => 'зетта',
 3355+ 'pfunc-convert-prefix-exa' => 'экса',
 3356+ 'pfunc-convert-prefix-peta' => 'пета',
 3357+ 'pfunc-convert-prefix-tera' => 'тера',
 3358+ 'pfunc-convert-prefix-giga' => 'гига',
 3359+ 'pfunc-convert-prefix-mega' => 'мега',
 3360+ 'pfunc-convert-prefix-kilo' => 'кило',
 3361+ 'pfunc-convert-prefix-hecto' => 'гекто',
 3362+ 'pfunc-convert-prefix-deca' => 'дека',
 3363+ 'pfunc-convert-prefix-deci' => 'деци',
 3364+ 'pfunc-convert-prefix-centi' => 'санти',
 3365+ 'pfunc-convert-prefix-milli' => 'милли',
 3366+ 'pfunc-convert-prefix-micro' => 'микро',
 3367+ 'pfunc-convert-prefix-nano' => 'нано',
 3368+ 'pfunc-convert-prefix-pico' => 'пико',
 3369+ 'pfunc-convert-prefix-femto' => 'фемто',
 3370+ 'pfunc-convert-prefix-atto' => 'атто',
 3371+ 'pfunc-convert-prefix-zepto' => 'зепто',
 3372+ 'pfunc-convert-prefix-yocto' => 'йокто',
 3373+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2метр|$2метра|$2метров}}',
 3374+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|ангстрем|ангстрема|ангстрем}}',
 3375+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|миля|мили|миль}}',
 3376+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|фурлонг|фурлонга|фурлонгов}}',
 3377+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|чейн|чейна|чейнов}}',
 3378+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|род|рода|родов}}',
 3379+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|фатом|фатома|фатомов}}',
 3380+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|ярд|ярда|ярдов}}',
 3381+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|фут|фута|футов}}',
 3382+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|хэнд|хэнда|хэндов}}',
 3383+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|дюйм|дюйма|дюймов}}',
 3384+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|морская миля|морские мили|морских милей}}',
 3385+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|морская миля (британская до 1970)|морские мили (британских до 1970)|морских миль (британских до 1970)}}',
 3386+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|морская миля (США до 1970)|морские мили (США до 1970)|морских миль (США до 1970)}}',
 3387+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2парсек|$2парсека|$2парсек}}',
 3388+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|$2 световой год|$2 световых года|$2 световых лет}}',
 3389+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|астрономическая единица|астрономические единицы|астрономических единиц}}',
 3390+ 'pfunc-convert-unit-length-furlong-abbr' => 'фурлонг',
 3391+ 'pfunc-convert-unit-length-chain-abbr' => 'чейн',
 3392+ 'pfunc-convert-unit-length-rod-abbr' => 'род',
 3393+ 'pfunc-convert-unit-length-fathom-abbr' => 'фатом',
 3394+ 'pfunc-convert-unit-length-yard-abbr' => 'ярд',
 3395+ 'pfunc-convert-unit-length-foot-abbr' => 'фут',
 3396+ 'pfunc-convert-unit-length-hand-abbr' => 'хэнд',
 3397+ 'pfunc-convert-unit-length-inch-abbr' => 'дюйм',
 3398+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'морская миля',
 3399+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'брит. морская миля',
 3400+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'морская миля (США до 1954)',
 3401+ 'pfunc-convert-unit-length-parsec-abbr' => '$2 пк',
 3402+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2 св. г.',
 3403+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'а. е.',
 3404+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|квадратный километр|квадратных километра|квадратных километров}}',
 3405+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|квадратный метр|квадратных метра|квадратных метров}}',
 3406+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|квадратный сантиметр|квадратных сантиметра|квадратных сантиметров}}',
 3407+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|квадратный миллиметр|квадратных миллиметра|квадратных миллиметров}}',
 3408+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|гектар|гектара|гектар}}',
 3409+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|квадратная миля|квадратных мили|квадратных миль}}',
 3410+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|акр|акра|акров}}',
 3411+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|квадратный ярд|квадратных ярда|квадратных ярдов}}',
 3412+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|квадратный фут|квадратных фута|квадратных футов}}',
 3413+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|квадратный дюйм|квадратных дюйма|квадратных дюймов}}',
 3414+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|квадратная морская миля|квадратные морские мили|квадратных морских миль}}',
 3415+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|дунам|дунама|дунамов}}',
 3416+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|цубо|цубо|цубо}}',
 3417+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'км<sup>2</sup>',
 3418+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'м<sup>2</sup>',
 3419+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'см<sup>2</sup>',
 3420+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'мм<sup>2</sup>',
 3421+ 'pfunc-convert-unit-area-hectare-abbr' => 'га',
 3422+ 'pfunc-convert-unit-area-squaremile-abbr' => 'кв. ми',
 3423+ 'pfunc-convert-unit-area-acre-abbr' => 'акр',
 3424+ 'pfunc-convert-unit-area-squareyard-abbr' => 'кв. ярд',
 3425+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'кв. м',
 3426+ 'pfunc-convert-unit-area-squareinch-abbr' => 'кв. дюйм',
 3427+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'кв. м. ми',
 3428+ 'pfunc-convert-unit-area-dunam-abbr' => 'дунам',
 3429+ 'pfunc-convert-unit-area-tsubo-abbr' => 'цубо',
 3430+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|секунда|секунды|секунд}}',
 3431+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2год|$2года|$2лет}}',
 3432+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|день|дня|дней}}',
 3433+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|час|часа|часов}}',
 3434+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|минута|минуты|минут}}',
 3435+ 'pfunc-convert-unit-time-second-abbr' => 'с',
 3436+ 'pfunc-convert-unit-time-year-abbr' => '$2 г',
 3437+ 'pfunc-convert-unit-time-day-abbr' => 'дн',
 3438+ 'pfunc-convert-unit-time-hour-abbr' => 'ч.',
 3439+ 'pfunc-convert-unit-time-minute-abbr' => 'м.',
 3440+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|кубический метр|кубических метра|кубических метров}}',
 3441+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|кубический сантиметр|кубических сантиметра|кубических сантиметров}}',
 3442+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|кубический миллиметр|кубических миллиметра|кубических миллиметров}}',
 3443+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|килолитр|килолитра|килолитров}}',
 3444+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|литр|литра|литров}}',
 3445+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|сантилитр|сантилитра|сантилитров}}',
 3446+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|миллилитр|миллилитра|миллилитров}}',
 3447+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|кубический ярд|кубических ярда|кубических ярдов}}',
 3448+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|кубический фут|кубических фута|кубических футов}}',
 3449+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|кубический дюйм|кубических дюйма|кубических дюймов}}',
 3450+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|баррель|барреля|баррелей}}',
 3451+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|бушель|бушеля|бушелей}}',
 3452+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|галлон|галлона|галлонов}}',
 3453+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|кварта|кварты|кварт}}',
 3454+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|пинта|пинты|пинт}}',
 3455+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|жидкая унция|жидких унции|жидких унций}}',
 3456+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|баррель США|барреля США|баррелей США}}',
 3457+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|баррель|барреля|баррелей}}',
 3458+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|баррель|барреля|баррелей}}',
 3459+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|галлон США|галлона США|галлонов США}}',
 3460+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|кварта США|кварты США|кварт США}}',
 3461+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|пинта США|пинты США|пинт США}}',
 3462+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|жидкая унция США|жидких унции США|жидких унций США}}',
 3463+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|сухой баррель США|сухих барреля США|сухих баррелей США}}',
 3464+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|бушель США|бушеля США|бушелей США}}',
 3465+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|сухой галлон США|сухих галлона США|сухих галлонов США}}',
 3466+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|сухая кварта США|сухие кварты США|сухих кварт США}}',
 3467+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|сухая пинта США|сухих пинты США|сухих пинт США}}',
 3468+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'м<sup>3</sup>',
 3469+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'см<sup>3</sup>',
 3470+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'мм<sup>3</sup>',
 3471+ 'pfunc-convert-unit-volume-litre-abbr' => '$2 л',
 3472+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'куб. ярд',
 3473+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'куб. фут',
 3474+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'куб. дюйм',
 3475+ 'pfunc-convert-unit-volume-barrel-abbr' => 'бр.',
 3476+ 'pfunc-convert-unit-volume-bushel-abbr' => 'бш.',
 3477+ 'pfunc-convert-unit-volume-gallon-abbr' => 'гал.',
 3478+ 'pfunc-convert-unit-volume-quart-abbr' => 'кв.',
 3479+ 'pfunc-convert-unit-volume-pint-abbr' => 'пт.',
 3480+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'жид. унц.',
 3481+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'бр. США',
 3482+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'бр.',
 3483+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'бр.',
 3484+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'гал. США',
 3485+ 'pfunc-convert-unit-volume-usquart-abbr' => 'кт. США',
 3486+ 'pfunc-convert-unit-volume-uspint-abbr' => 'пт. США',
 3487+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'жид. унц. США',
 3488+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'бр. США',
 3489+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'вш. США',
 3490+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'сух. гал. США',
 3491+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'сух. кт. США',
 3492+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'сух. пт. США',
 3493+ 'pfunc-convert-unit-speed-mile-hour' => 'миль/час',
 3494+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
 3495+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'миль/ч',
 3496+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
 3497+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2паскаль|$2паскаля|$2паскалей}}',
 3498+ 'pfunc-convert-unit-pressure-bar' => 'бар',
 3499+ 'pfunc-convert-unit-pressure-decibar' => 'децибар',
 3500+ 'pfunc-convert-unit-pressure-millibar' => 'миллибар',
 3501+ 'pfunc-convert-unit-pressure-kilobarye' => 'килобария',
 3502+ 'pfunc-convert-unit-pressure-barye' => 'бария',
 3503+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|атмосфера|атмосферы|атмосфер}}',
 3504+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|торр|торра|торр}}',
 3505+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|миллиметр ртутного столба|миллиметра ртутного столба|миллиметров ртутного столба}}',
 3506+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|дюйм ртутного столба|дюйма ртутного столба|дюймов ртутного столба}}',
 3507+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|фунт на квадратный дюйм|фунта на квадратный дюйм|фунтов на квадратный дюйм}}',
 3508+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Па',
 3509+ 'pfunc-convert-unit-pressure-bar-abbr' => 'бар',
 3510+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'дбар',
 3511+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'мбар',
 3512+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'КБа',
 3513+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ба',
 3514+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'атм',
 3515+ 'pfunc-convert-unit-pressure-torr-abbr' => 'торр',
 3516+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'мм рт. ст.',
 3517+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'дюйм. рт. ст.',
 3518+ 'pfunc-convert-unit-pressure-psi-abbr' => 'фунт. на кв. дюйм',
20733519 );
20743520
20753521 /** Rusyn (Русиньскый)
@@ -2223,6 +3669,197 @@
22243670 'pfunc_expr_unknown_error' => 'Napaka v izrazu: Neznana napaka ($1)',
22253671 'pfunc_expr_not_a_number' => 'V $1: rezultat ni število',
22263672 'pfunc_string_too_long' => 'Napaka: Niz presega omejitev $1 {{PLURAL:$1|znaka|znakov}}',
 3673+ 'pfunc-convert-dimensionmismatch' => 'Napaka: Ne morem pretvoriti med enotama »$1« in »$2«.',
 3674+ 'pfunc-convert-unknownunit' => 'Napaka: Neznana enota »$1«.',
 3675+ 'pfunc-convert-unknowndimension' => 'Napaka: Neznana razsežnost »$1«.',
 3676+ 'pfunc-convert-invalidcompoundunit' => 'Napaka: Neveljavna sestavljena enota »$1«.',
 3677+ 'pfunc-convert-nounit' => 'Napaka: Izvirna enota ni podana.',
 3678+ 'pfunc-convert-doublecompoundunit' => 'Napaka: Ne morem razčleniti dvojne sestavljene enote, kot je »$1«.',
 3679+ 'pfunc-convert-dimension-length' => 'dolžina',
 3680+ 'pfunc-convert-dimension-area' => 'ploščina',
 3681+ 'pfunc-convert-dimension-volume' => 'prostornina',
 3682+ 'pfunc-convert-dimension-time' => 'čas',
 3683+ 'pfunc-convert-dimension-timesquared' => 'čas<sup>2</sup>',
 3684+ 'pfunc-convert-dimension-mass' => 'masa',
 3685+ 'pfunc-convert-dimension-speed' => 'hitrost',
 3686+ 'pfunc-convert-dimension-temperature' => 'temperatura',
 3687+ 'pfunc-convert-dimension-acceleration' => 'pospešek',
 3688+ 'pfunc-convert-dimension-force' => 'sila',
 3689+ 'pfunc-convert-dimension-torque' => 'navor',
 3690+ 'pfunc-convert-dimension-energy' => 'energija',
 3691+ 'pfunc-convert-dimension-power' => 'moč',
 3692+ 'pfunc-convert-dimension-pressure' => 'tlak',
 3693+ 'pfunc-convert-dimension-density' => 'gostota',
 3694+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'pozitivna učinkovitost goriva',
 3695+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'negativna učinkovitost goriva',
 3696+ 'pfunc-convert-prefix-yotta' => 'jota',
 3697+ 'pfunc-convert-prefix-zetta' => 'zeta',
 3698+ 'pfunc-convert-prefix-exa' => 'eksa',
 3699+ 'pfunc-convert-prefix-peta' => 'peta',
 3700+ 'pfunc-convert-prefix-tera' => 'tera',
 3701+ 'pfunc-convert-prefix-giga' => 'giga',
 3702+ 'pfunc-convert-prefix-mega' => 'mega',
 3703+ 'pfunc-convert-prefix-kilo' => 'kilo',
 3704+ 'pfunc-convert-prefix-hecto' => 'hekto',
 3705+ 'pfunc-convert-prefix-deca' => 'deka',
 3706+ 'pfunc-convert-prefix-deci' => 'deci',
 3707+ 'pfunc-convert-prefix-centi' => 'centi',
 3708+ 'pfunc-convert-prefix-milli' => 'milli',
 3709+ 'pfunc-convert-prefix-micro' => 'mikro',
 3710+ 'pfunc-convert-prefix-nano' => 'nano',
 3711+ 'pfunc-convert-prefix-pico' => 'piko',
 3712+ 'pfunc-convert-prefix-femto' => 'femto',
 3713+ 'pfunc-convert-prefix-atto' => 'ato',
 3714+ 'pfunc-convert-prefix-zepto' => 'zepto',
 3715+ 'pfunc-convert-prefix-yocto' => 'jokto',
 3716+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|meter|metra|metri|metrov}}',
 3717+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|angstrem|angstrema|angstremi|angstremov}}',
 3718+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|milja|milji|milje|milj}}',
 3719+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlonga|furlongi|furlongov}}',
 3720+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|veriga|verigi|verige|verig}}',
 3721+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|palica|palici|palice|palic}}',
 3722+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|seženj|sežnja|sežnji|sežnjev}}',
 3723+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|jard|jarda|jardi|jardov}}',
 3724+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|čevelj|čevlja|čevlji|čeljev}}',
 3725+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|dlan|dlani}}',
 3726+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|palec|palca|palci|palcev}}',
 3727+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|navtična milja|navtični milji|navtične milje|navtičnih milj}}',
 3728+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|navtična milja|navtični milji|navtične milje|navtičnih milj}} (britanska, pred 1970)',
 3729+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|navtična milja|navtični milji|navtične milje|navtičnih milj}} (ZDA, pred 1954)',
 3730+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|parsek|parseka|parseki|persekov}}',
 3731+ 'pfunc-convert-unit-length-lightyear' => '$2 {{PLURAL:$1|svetlobno leto|svetlobni leti|svetlobna leta|svetlobnih let}}',
 3732+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|astronomska enota|astronomski enoti|astronomske enote|astronomskih enot}}',
 3733+ 'pfunc-convert-unit-length-metre-abbr' => 'm',
 3734+ 'pfunc-convert-unit-length-angstrom-abbr' => 'Å',
 3735+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
 3736+ 'pfunc-convert-unit-length-chain-abbr' => 'veriga',
 3737+ 'pfunc-convert-unit-length-rod-abbr' => 'rd',
 3738+ 'pfunc-convert-unit-length-fathom-abbr' => 'seženj',
 3739+ 'pfunc-convert-unit-length-yard-abbr' => 'yd',
 3740+ 'pfunc-convert-unit-length-foot-abbr' => 'ft',
 3741+ 'pfunc-convert-unit-length-hand-abbr' => 'h',
 3742+ 'pfunc-convert-unit-length-inch-abbr' => 'in',
 3743+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'nmi',
 3744+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'nmi (Brit)',
 3745+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'nmi (ZDA, pred 1954)',
 3746+ 'pfunc-convert-unit-length-parsec-abbr' => '$2 pc',
 3747+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2 sv. l.',
 3748+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'a.e.',
 3749+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|kvadratni kilometer|kvadratna kilometra|kvadratni kilometri|kvadratnih kilometrov}}',
 3750+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|kvadratni meter|kvadratna metra|kvadratni metri|kvadratnih metrov}}',
 3751+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|kvadratni centimeter|kvadratna centimetra|kvadratni centimetri|kvadratnih centimetrov}}',
 3752+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|kvadratni millimeter|kvadratna millimetra|kvadratni millimetri|kvadratnih millimetrov}}',
 3753+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hektar|hektara|hektare|hektarov}}',
 3754+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|kvadratna milja|kvadratni milji|kvadratne milje|kvadratnih milj}}',
 3755+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|aker|akra|akri|akrov}}',
 3756+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|kvadratni jard|kvadratna jarda|kvadratni jardi|kvadratnih jardov}}',
 3757+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|kvadratni čevelj|kvadratna čevlja|kvadratni čevlji|kvadratnih čevljev}}',
 3758+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|kvadratni palec|kvadratna palca|kvadratni palci|kvadratnih palcev}}',
 3759+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|kvadratna navtična milja|kvadratni navtični milji|kvadratne navtične milje|kvadratnih navtičnih milj}}',
 3760+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|dunam|dunama|dunami|dunamov}}',
 3761+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|tsubo|tsuba|tsubi|tsubov}}',
 3762+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
 3763+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
 3764+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
 3765+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
 3766+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
 3767+ 'pfunc-convert-unit-area-squaremile-abbr' => 'kv. mi',
 3768+ 'pfunc-convert-unit-area-acre-abbr' => 'aker',
 3769+ 'pfunc-convert-unit-area-squareyard-abbr' => 'kv. yd',
 3770+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'kv. ft',
 3771+ 'pfunc-convert-unit-area-squareinch-abbr' => 'kv. in',
 3772+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'kv nmi',
 3773+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
 3774+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
 3775+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|sekunda|sekundi|sekunde|sekund}}',
 3776+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|leto|leti|leta|let}}',
 3777+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|dan|dneva|dnevi|dni}}',
 3778+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|ura|uri|ure|ur}}',
 3779+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minuta|minuti|minute|minut}}',
 3780+ 'pfunc-convert-unit-time-second-abbr' => 's',
 3781+ 'pfunc-convert-unit-time-year-abbr' => 'leto',
 3782+ 'pfunc-convert-unit-time-day-abbr' => 'dan',
 3783+ 'pfunc-convert-unit-time-hour-abbr' => 'ura',
 3784+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
 3785+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|kubični meter|kubična metra|kubični metri|kubičnih metrov}}',
 3786+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|kubični centimeter|kubična centimetra|kubični centimetri|kubičnih centimetrov}}',
 3787+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|kubični millimeter|kubična millimetra|kubični millimetri|kubičnih millimetrov}}',
 3788+ 'pfunc-convert-unit-volume-kilolitre' => 'kilo{{PLURAL:$1|liter|litra|litri|litrov}}',
 3789+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|liter|litra|litri|litrov}}',
 3790+ 'pfunc-convert-unit-volume-centilitre' => 'centi{{PLURAL:$1|liter|litra|litri|litrov}}',
 3791+ 'pfunc-convert-unit-volume-millilitre' => 'milli{{PLURAL:$1|liter|litra|litri|litrov}}',
 3792+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|kubični jard|kubična jarda|kubični jardi|kubičnih jardov}}',
 3793+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|kubični čevelj|kubična čevlja|kubični čevlji|kubičnih čevljev}}',
 3794+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|kubični palec|kubična palca|kubični palci|kubičnih palcev}}',
 3795+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|sod|soda|sodi|sodov}}',
 3796+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|bušel|bušla|bušli|bušlov}}',
 3797+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|galona|galoni|galone|galon}}',
 3798+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|kvart|kvarta|kvarti|kvartov}}',
 3799+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|pint|pinta|pinti|pintov}}',
 3800+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|tekočinska unča|tekočinski unči|tekočinske unče|tekočinskih unč}}',
 3801+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|ameriški sod|ameriška soda|ameriški sodi|ameriških sodov}}',
 3802+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|sod|soda|sodi|sodov}}',
 3803+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|sod|soda|sodi|sodov}}',
 3804+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|ameriška galona|ameriški galoni|ameriške galone|ameriških galon}}',
 3805+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|ameriški kvart|ameriška kvarta|ameriški kvarti|ameriških kvartov}}',
 3806+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|ameriški pint|ameriška pinta|ameriški pinti|ameriških pintov}}',
 3807+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|ameriška tekočinska unča|ameriški tekočinski unči|ameriške tekočinske unče|ameriških tekočinskih unč}}',
 3808+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|ameriški suhi sod|ameriška suha soda|ameriški suhi sodi|ameriških suhih sodov}}',
 3809+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|ameriški bušel|ameriška bušla|ameriški bušli|ameriških bušlov}}',
 3810+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|ameriška suha galona|ameriški suhi galoni|ameriške suhe galone|ameriških suhih galon}}',
 3811+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|ameriški suhi kvart|ameriška suha kvarta|ameriški suhi kvarti|ameriških suhih kvartov}}',
 3812+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|ameriški suhi pint|ameriška suha pinta|ameriški suhi pinti|ameriških suhih pintov}}',
 3813+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
 3814+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
 3815+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
 3816+ 'pfunc-convert-unit-volume-litre-abbr' => '$2 l',
 3817+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'kub. yd',
 3818+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'kub. ft',
 3819+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'kub. in',
 3820+ 'pfunc-convert-unit-volume-barrel-abbr' => 'bbl',
 3821+ 'pfunc-convert-unit-volume-bushel-abbr' => 'bsh',
 3822+ 'pfunc-convert-unit-volume-gallon-abbr' => 'gal',
 3823+ 'pfunc-convert-unit-volume-quart-abbr' => 'qt',
 3824+ 'pfunc-convert-unit-volume-pint-abbr' => 'pt',
 3825+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'fl oz',
 3826+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'am. bbl',
 3827+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'bbl',
 3828+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'bbl',
 3829+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'am. gal',
 3830+ 'pfunc-convert-unit-volume-usquart-abbr' => 'am. qt',
 3831+ 'pfunc-convert-unit-volume-uspint-abbr' => 'am. pt',
 3832+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'am. fl oz',
 3833+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'am. bbl',
 3834+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'am. bsh',
 3835+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'am. suha gal',
 3836+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'am. suhi qt',
 3837+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'am. suhi pt',
 3838+ 'pfunc-convert-unit-speed-mile-hour' => 'milje na uro',
 3839+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
 3840+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'mph',
 3841+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
 3842+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|paskal|paskala|paskali|paskalov}}',
 3843+ 'pfunc-convert-unit-pressure-bar' => 'bar',
 3844+ 'pfunc-convert-unit-pressure-decibar' => 'decibar',
 3845+ 'pfunc-convert-unit-pressure-millibar' => 'millibar',
 3846+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilobarye',
 3847+ 'pfunc-convert-unit-pressure-barye' => 'barye',
 3848+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosfera|atmosferi|atmosfere|atmosfer}}',
 3849+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|torr|torra|torri|torrov}}',
 3850+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|millimeter|millimetra|millimetri|millimetrov}} živega srebra',
 3851+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|palec|palca|palci|palcev}} živega srebra',
 3852+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|funt|funta|funti|funtov}} na kvadratni palec',
 3853+ 'pfunc-convert-unit-pressure-pascal-abbr' => 'Pa',
 3854+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
 3855+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
 3856+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
 3857+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
 3858+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
 3859+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
 3860+ 'pfunc-convert-unit-pressure-torr-abbr' => 'Torr',
 3861+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
 3862+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'inHg',
 3863+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
22273864 );
22283865
22293866 /** Albanian (Shqip)
@@ -2364,6 +4001,147 @@
23654002 'pfunc_expr_unknown_error' => 'Fel i uttryck: Okänt fel ($1)',
23664003 'pfunc_expr_not_a_number' => 'I $1: resultatet är inte ett tal',
23674004 'pfunc_string_too_long' => 'Fel: Strängen överskrider gränsen på $1 tecken',
 4005+ 'pfunc-convert-dimensionmismatch' => 'Fel: Kan inte konvertera mellan enheterna "$1" och "$2".',
 4006+ 'pfunc-convert-unknownunit' => 'Fel: Okänd enhet "$1".',
 4007+ 'pfunc-convert-unknowndimension' => 'Fel: Okänd dimension "$1".',
 4008+ 'pfunc-convert-dimension-length' => 'längd',
 4009+ 'pfunc-convert-dimension-area' => 'area',
 4010+ 'pfunc-convert-dimension-volume' => 'volym',
 4011+ 'pfunc-convert-dimension-time' => 'tid',
 4012+ 'pfunc-convert-dimension-timesquared' => 'tid <sup>2</sup>',
 4013+ 'pfunc-convert-dimension-mass' => 'massa',
 4014+ 'pfunc-convert-dimension-speed' => 'hastighet',
 4015+ 'pfunc-convert-dimension-temperature' => 'temperatur',
 4016+ 'pfunc-convert-dimension-acceleration' => 'acceleration',
 4017+ 'pfunc-convert-dimension-force' => 'kraft',
 4018+ 'pfunc-convert-dimension-torque' => 'vridmoment',
 4019+ 'pfunc-convert-dimension-energy' => 'energi',
 4020+ 'pfunc-convert-dimension-pressure' => 'tryck',
 4021+ 'pfunc-convert-dimension-density' => 'densitet',
 4022+ 'pfunc-convert-prefix-yotta' => 'yotta',
 4023+ 'pfunc-convert-prefix-zetta' => 'zetta',
 4024+ 'pfunc-convert-prefix-exa' => 'exa',
 4025+ 'pfunc-convert-prefix-peta' => 'peta',
 4026+ 'pfunc-convert-prefix-tera' => 'tera',
 4027+ 'pfunc-convert-prefix-giga' => 'giga',
 4028+ 'pfunc-convert-prefix-mega' => 'mega',
 4029+ 'pfunc-convert-prefix-kilo' => 'kilo',
 4030+ 'pfunc-convert-prefix-hecto' => 'hekto',
 4031+ 'pfunc-convert-prefix-deca' => 'deka',
 4032+ 'pfunc-convert-prefix-deci' => 'deci',
 4033+ 'pfunc-convert-prefix-centi' => 'centi',
 4034+ 'pfunc-convert-prefix-milli' => 'milli',
 4035+ 'pfunc-convert-prefix-micro' => 'mikro',
 4036+ 'pfunc-convert-prefix-nano' => 'nano',
 4037+ 'pfunc-convert-prefix-pico' => 'piko',
 4038+ 'pfunc-convert-prefix-femto' => 'femto',
 4039+ 'pfunc-convert-prefix-atto' => 'atto',
 4040+ 'pfunc-convert-prefix-zepto' => 'zepto',
 4041+ 'pfunc-convert-prefix-yocto' => 'yokto',
 4042+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2meter|$2meter}}',
 4043+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|ångström|ångström}}',
 4044+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|engelsk mil|engelska mil}}',
 4045+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlonger}}',
 4046+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|chain|chains}}',
 4047+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|stång|stänger}}',
 4048+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|famn|famnar}}',
 4049+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|yard|yards}}',
 4050+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|fot|fot}}',
 4051+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|hand|händer}}',
 4052+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|tum|tum}}',
 4053+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|nautisk mil|nautiska mil}}',
 4054+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|nautisk mil (innan 1970, brittisk)|nautiska mil (innan 1970, brittisk)}}',
 4055+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|nautisk mil (innan 1954, USA)|nautiska mil (innan 1954, USA)}}',
 4056+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2parsec|$2parsec}}',
 4057+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|$2ljusår|$2ljusår}}',
 4058+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|astronomisk enhet|astronomiska enheter}}',
 4059+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
 4060+ 'pfunc-convert-unit-length-chain-abbr' => 'chain',
 4061+ 'pfunc-convert-unit-length-fathom-abbr' => 'famn',
 4062+ 'pfunc-convert-unit-length-yard-abbr' => 'yd',
 4063+ 'pfunc-convert-unit-length-foot-abbr' => 'ft',
 4064+ 'pfunc-convert-unit-length-hand-abbr' => 'h',
 4065+ 'pfunc-convert-unit-length-inch-abbr' => 'in',
 4066+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'nmi',
 4067+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'nmi (Storbr.)',
 4068+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'nmi (innan 1954, USA)',
 4069+ 'pfunc-convert-unit-length-parsec-abbr' => '$2pc',
 4070+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'AU',
 4071+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|kvadratkilometer|kvadratkilometer}}',
 4072+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|kvadratmeter|kvadratmeter}}',
 4073+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|kvadratcentimeter|kvadratcentimeter}}',
 4074+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|kvadratmillimeter|kvadratmillimeter}}',
 4075+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hektar|hektar}}',
 4076+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|kvadratmil|kvadratmil}}',
 4077+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|tunnland|tunnland}}',
 4078+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|kvadratyard|kvadratyard}}',
 4079+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|kvadratfot|kvadratfötter}}',
 4080+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|kvadrattum|kvadrattum}}',
 4081+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|kvadratisk nautisk mil|kvadratiska nautiska mil}}',
 4082+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|dunam|dunam}}',
 4083+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|tsubo|tsubo}}',
 4084+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
 4085+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
 4086+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
 4087+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
 4088+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
 4089+ 'pfunc-convert-unit-area-squaremile-abbr' => 'kv mil',
 4090+ 'pfunc-convert-unit-area-acre-abbr' => 'tunnland',
 4091+ 'pfunc-convert-unit-area-squareyard-abbr' => 'kv yd',
 4092+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'kv ft',
 4093+ 'pfunc-convert-unit-area-squareinch-abbr' => 'kv in',
 4094+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'kv nmi',
 4095+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
 4096+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
 4097+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|sekund|sekunder}}',
 4098+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2år|$2år}}',
 4099+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|dag|dagar}}',
 4100+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|timme|timmar}}',
 4101+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minut|minuter}}',
 4102+ 'pfunc-convert-unit-time-second-abbr' => 's',
 4103+ 'pfunc-convert-unit-time-day-abbr' => 'dag',
 4104+ 'pfunc-convert-unit-time-hour-abbr' => 'tim',
 4105+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
 4106+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|kubikmeter|kubikmeter}}',
 4107+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|kubikcentimeter|kubikcentimeter}}',
 4108+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|kubikmillimeter|kubikmillimeter}}',
 4109+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|kiloliter|kiloliter}}',
 4110+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|liter|liter}}',
 4111+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|centiliter|centiliter}}',
 4112+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|milliliter|milliliter}}',
 4113+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|kubikyard|kubikyards}}',
 4114+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|kubikfot|kubikfötter}}',
 4115+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|kubiktum|kubiktum}}',
 4116+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|fat|fat}}',
 4117+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|gallon|gallons}}',
 4118+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|quart|quarts}}',
 4119+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|pint|pints}}',
 4120+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|gallon (USA, våt)|gallon (USA, våt)}}',
 4121+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|quart (USA, våt)|quart (USA, våt)}}',
 4122+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|pint (USA, våt)|pint (USA, våt)}}',
 4123+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|gallon (USA, torr)|gallon (USA, torr)}}',
 4124+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|quart (USA, torr)|quart (USA, torr)}}',
 4125+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|pint (USA, torr)|pint (USA, torr)}}',
 4126+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
 4127+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
 4128+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
 4129+ 'pfunc-convert-unit-volume-litre-abbr' => '$2l',
 4130+ 'pfunc-convert-unit-volume-gallon-abbr' => 'gal',
 4131+ 'pfunc-convert-unit-speed-mile-hour' => 'miles per timme',
 4132+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'mph',
 4133+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2pascal|$2pascal}}',
 4134+ 'pfunc-convert-unit-pressure-bar' => 'bar',
 4135+ 'pfunc-convert-unit-pressure-millibar' => 'millibar',
 4136+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosfär|atmosfärer}}',
 4137+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|torr|torr}}',
 4138+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|millimeter kvicksilver|millimeter kvicksilver}}',
 4139+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|tum kvicksilver|tum kvicksilver}}',
 4140+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
 4141+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
 4142+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
 4143+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
 4144+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
 4145+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
23684146 );
23694147
23704148 /** Telugu (తెలుగు)
@@ -2613,6 +4391,195 @@
26144392 'pfunc_expr_unknown_error' => 'Lỗi biểu thức: Lỗi không rõ nguyên nhân ($1)',
26154393 'pfunc_expr_not_a_number' => 'Trong $1: kết quả không phải là kiểu số',
26164394 'pfunc_string_too_long' => 'Lỗi: Chuỗi vượt quá giới hạn $1 ký tự',
 4395+ 'pfunc-convert-dimensionmismatch' => 'Lỗi: Không thể chuyển đổi giữa các đơn vị “$1” và “$2”.',
 4396+ 'pfunc-convert-unknownunit' => 'Lỗi: Không hiểu đơn vị “$1”.',
 4397+ 'pfunc-convert-unknowndimension' => 'Lỗi: Không hiểu kích thước “$1”.',
 4398+ 'pfunc-convert-invalidcompoundunit' => 'Lỗi: Đơn vị ghép “$1” không hợp lệ.',
 4399+ 'pfunc-convert-nounit' => 'Lỗi: Không đưa vào đơn vị nguồn.',
 4400+ 'pfunc-convert-doublecompoundunit' => 'Lỗi: Không thể phân tích các đơn vị ghép đúp như “$1”.',
 4401+ 'pfunc-convert-dimension-length' => 'chiều dài',
 4402+ 'pfunc-convert-dimension-area' => 'diện tích',
 4403+ 'pfunc-convert-dimension-volume' => 'thể tích',
 4404+ 'pfunc-convert-dimension-time' => 'thời gian',
 4405+ 'pfunc-convert-dimension-timesquared' => 'thời gian²',
 4406+ 'pfunc-convert-dimension-mass' => 'khối lượng',
 4407+ 'pfunc-convert-dimension-speed' => 'tốc độ',
 4408+ 'pfunc-convert-dimension-temperature' => 'nhiệt độ',
 4409+ 'pfunc-convert-dimension-acceleration' => 'gia tốc',
 4410+ 'pfunc-convert-dimension-force' => 'lực lượng',
 4411+ 'pfunc-convert-dimension-torque' => 'mô men lực',
 4412+ 'pfunc-convert-dimension-energy' => 'năng lượng',
 4413+ 'pfunc-convert-dimension-power' => 'công suất',
 4414+ 'pfunc-convert-dimension-pressure' => 'áp suất',
 4415+ 'pfunc-convert-dimension-density' => 'mật độ',
 4416+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'hiệu quả nhiên liệu dương',
 4417+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'hiệu quả nhiên liệu âm',
 4418+ 'pfunc-convert-prefix-yotta' => 'yôta',
 4419+ 'pfunc-convert-prefix-zetta' => 'zêta',
 4420+ 'pfunc-convert-prefix-exa' => 'exa',
 4421+ 'pfunc-convert-prefix-peta' => 'pêta',
 4422+ 'pfunc-convert-prefix-tera' => 'têra',
 4423+ 'pfunc-convert-prefix-giga' => 'giga',
 4424+ 'pfunc-convert-prefix-mega' => 'mêga',
 4425+ 'pfunc-convert-prefix-kilo' => 'kilô',
 4426+ 'pfunc-convert-prefix-hecto' => 'hêctô',
 4427+ 'pfunc-convert-prefix-deca' => 'đềca',
 4428+ 'pfunc-convert-prefix-deci' => 'đêxi',
 4429+ 'pfunc-convert-prefix-centi' => 'xenti',
 4430+ 'pfunc-convert-prefix-milli' => 'milli',
 4431+ 'pfunc-convert-prefix-micro' => 'micrô',
 4432+ 'pfunc-convert-prefix-nano' => 'nanô',
 4433+ 'pfunc-convert-prefix-pico' => 'picô',
 4434+ 'pfunc-convert-prefix-femto' => 'femtô',
 4435+ 'pfunc-convert-prefix-atto' => 'atô',
 4436+ 'pfunc-convert-prefix-zepto' => 'zéptô',
 4437+ 'pfunc-convert-prefix-yocto' => 'yóctô',
 4438+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1}}$2mét',
 4439+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1}}ångström',
 4440+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1}}dặm',
 4441+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1}}furlong',
 4442+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1}}chain',
 4443+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1}}rod',
 4444+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1}}fathom',
 4445+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1}}yard',
 4446+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1}}foot',
 4447+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1}}hand',
 4448+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1}}inch',
 4449+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1}}hải lý',
 4450+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1}}hải lý (Anh trước 1970)',
 4451+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1}}hải lý (Mỹ trước 1954)',
 4452+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1}}$2parsec',
 4453+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1}}$2 năm ánh sáng',
 4454+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1}}đơn vị thiên văn',
 4455+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
 4456+ 'pfunc-convert-unit-length-chain-abbr' => 'chain',
 4457+ 'pfunc-convert-unit-length-rod-abbr' => 'rd',
 4458+ 'pfunc-convert-unit-length-fathom-abbr' => 'fathom',
 4459+ 'pfunc-convert-unit-length-yard-abbr' => 'yd',
 4460+ 'pfunc-convert-unit-length-foot-abbr' => 'ft',
 4461+ 'pfunc-convert-unit-length-hand-abbr' => 'h',
 4462+ 'pfunc-convert-unit-length-inch-abbr' => 'in',
 4463+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'nmi',
 4464+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'nmi (Anh)',
 4465+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'nmi (Mỹ trước 1954)',
 4466+ 'pfunc-convert-unit-length-parsec-abbr' => '$2pc',
 4467+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2ly',
 4468+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'ua',
 4469+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1}}kilômét vuông',
 4470+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1}}mét vuông',
 4471+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1}}xentimét vuông',
 4472+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1}}millimét vuông',
 4473+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1}}hecta',
 4474+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1}}dặm vuông',
 4475+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1}}mẫu Anh',
 4476+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1}}yard vuông',
 4477+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1}}foot vuông',
 4478+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1}}inch vuông',
 4479+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1}}hải lý vuông',
 4480+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1}}dunam',
 4481+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1}}tsubo',
 4482+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km²',
 4483+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm²',
 4484+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm²',
 4485+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm²',
 4486+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
 4487+ 'pfunc-convert-unit-area-squaremile-abbr' => 'sq mi',
 4488+ 'pfunc-convert-unit-area-acre-abbr' => 'mẫu',
 4489+ 'pfunc-convert-unit-area-squareyard-abbr' => 'sq yd',
 4490+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'sq ft',
 4491+ 'pfunc-convert-unit-area-squareinch-abbr' => 'sq in',
 4492+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'sq nmi',
 4493+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
 4494+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
 4495+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1}}giây',
 4496+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1}}$2 năm',
 4497+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1}}ngày',
 4498+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1}}giờ',
 4499+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1}}phút',
 4500+ 'pfunc-convert-unit-time-second-abbr' => 's',
 4501+ 'pfunc-convert-unit-time-year-abbr' => '$2yr',
 4502+ 'pfunc-convert-unit-time-day-abbr' => 'ngày',
 4503+ 'pfunc-convert-unit-time-hour-abbr' => 'h',
 4504+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
 4505+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1}}mét khối',
 4506+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1}}xentimét khối',
 4507+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1}}millimét khối',
 4508+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1}}kilôlít',
 4509+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1}}lít',
 4510+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1}}xentilít',
 4511+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1}}millilít',
 4512+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1}}yard khối',
 4513+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1}}foot khối',
 4514+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1}}inch khối',
 4515+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1}}thùng',
 4516+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1}}giạ',
 4517+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1}}gallon',
 4518+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1}}quart',
 4519+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1}}pint',
 4520+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1}}aoxơ chất lỏng',
 4521+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1}}thùng Mỹ',
 4522+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1}}thùng',
 4523+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1}}thùng',
 4524+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1}}gallon Mỹ',
 4525+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1}}quart Mỹ',
 4526+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1}}pint Mỹ',
 4527+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1}}aoxơ chất lỏng Mỹ',
 4528+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1}}thùng chất khô Mỹ',
 4529+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1}}thùng Mỹ',
 4530+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1}}gallon chất khô Mỹ',
 4531+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1}}quart chất khô Mỹ',
 4532+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1}}pint chất khô Mỹ',
 4533+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm³',
 4534+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm³',
 4535+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm³',
 4536+ 'pfunc-convert-unit-volume-litre-abbr' => '$2l',
 4537+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'cu yd',
 4538+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'cu ft',
 4539+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'cu in',
 4540+ 'pfunc-convert-unit-volume-barrel-abbr' => 'bbl',
 4541+ 'pfunc-convert-unit-volume-bushel-abbr' => 'bsh',
 4542+ 'pfunc-convert-unit-volume-gallon-abbr' => 'gal',
 4543+ 'pfunc-convert-unit-volume-quart-abbr' => 'qt',
 4544+ 'pfunc-convert-unit-volume-pint-abbr' => 'pt',
 4545+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'fl oz',
 4546+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'bbl Mỹ',
 4547+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'bbl',
 4548+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'bbl',
 4549+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'gal Mỹ',
 4550+ 'pfunc-convert-unit-volume-usquart-abbr' => 'qt Mỹ',
 4551+ 'pfunc-convert-unit-volume-uspint-abbr' => 'pt Mỹ',
 4552+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'fl oz Mỹ',
 4553+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'bbl Mỹ',
 4554+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'bsh Mỹ',
 4555+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'dry gal Mỹ',
 4556+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'dry qt Mỹ',
 4557+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'dry pt Mỹ',
 4558+ 'pfunc-convert-unit-speed-mile-hour' => 'dặm một giờ',
 4559+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
 4560+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'mph',
 4561+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
 4562+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1}}$2pascal',
 4563+ 'pfunc-convert-unit-pressure-bar' => 'ba',
 4564+ 'pfunc-convert-unit-pressure-decibar' => 'đêxiba',
 4565+ 'pfunc-convert-unit-pressure-millibar' => 'milliba',
 4566+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilôbarye',
 4567+ 'pfunc-convert-unit-pressure-barye' => 'barye',
 4568+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1}}atmôtphe',
 4569+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1}}torr',
 4570+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1}}millimét thủy ngân',
 4571+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1}}inch thủy ngân',
 4572+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1}}pound một inch vuông',
 4573+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
 4574+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
 4575+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
 4576+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
 4577+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
 4578+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
 4579+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
 4580+ 'pfunc-convert-unit-pressure-torr-abbr' => 'Torr',
 4581+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
 4582+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'inHg',
 4583+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
26174584 );
26184585
26194586 /** Volapük (Volapük)
Index: branches/REL1_18/phase3/maintenance/refreshImageMetadata.php
@@ -0,0 +1,199 @@
 2+<?php
 3+/**
 4+ * Script to refresh image metadata fields. See also rebuildImages.php
 5+ *
 6+ * Usage: php refreshImageMetadata.php
 7+ *
 8+ * Copyright © 2011 Brian Wolff
 9+ * http://www.mediawiki.org/
 10+ *
 11+ * This program is free software; you can redistribute it and/or modify
 12+ * it under the terms of the GNU General Public License as published by
 13+ * the Free Software Foundation; either version 2 of the License, or
 14+ * (at your option) any later version.
 15+ *
 16+ * This program is distributed in the hope that it will be useful,
 17+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 18+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 19+ * GNU General Public License for more details.
 20+ *
 21+ * You should have received a copy of the GNU General Public License along
 22+ * with this program; if not, write to the Free Software Foundation, Inc.,
 23+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 24+ * http://www.gnu.org/copyleft/gpl.html
 25+ *
 26+ * @file
 27+ * @author Brian Wolff
 28+ * @ingroup maintenance
 29+ */
 30+
 31+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 32+
 33+class RefreshImageMetadata extends Maintenance {
 34+
 35+ /**
 36+ * @var DatabaseBase
 37+ */
 38+ protected $dbw;
 39+
 40+ function __construct() {
 41+ parent::__construct();
 42+
 43+ $this->mDescription = 'Script to update image metadata records';
 44+ $this->setBatchSize( 200 );
 45+
 46+ $this->addOption( 'force', 'Reload metadata from file even if the metadata looks ok', false, false, 'f' );
 47+ $this->addOption( 'broken-only', 'Only fix really broken records, leave old but still compatible records alone.' );
 48+ $this->addOption( 'verbose', 'Output extra information about each upgraded/non-upgraded file.', false, false, 'v' );
 49+ $this->addOption( 'start', 'Name of file to start with', false, true );
 50+ $this->addOption( 'end', 'Name of file to end with', false, true );
 51+
 52+ $this->addOption( 'mime', '(Inefficient!) Only refresh files with this mime type. Can accept wild-card image/*' , false, true );
 53+ $this->addOption( 'metadata-contains', '(Inefficient!) Only refresh files where the img_metadata field contains this string. Can be used if its known a specific property was being extracted incorrectly.', false, true );
 54+
 55+ }
 56+
 57+ public function execute() {
 58+ $force = $this->hasOption( 'force' );
 59+ $brokenOnly = $this->hasOption( 'broken-only' );
 60+ $verbose = $this->hasOption( 'verbose' );
 61+ $start = $this->getOption( 'start', false );
 62+ $this->setupParameters( $force, $brokenOnly );
 63+
 64+ $upgraded = 0;
 65+ $leftAlone = 0;
 66+ $error = 0;
 67+
 68+ $dbw = wfGetDB( DB_MASTER );
 69+ if ( $this->mBatchSize <= 0 ) {
 70+ $this->error( "Batch size is too low...", 12 );
 71+ }
 72+
 73+ $repo = RepoGroup::singleton()->getLocalRepo();
 74+ $conds = $this->getConditions( $dbw );
 75+
 76+ // For the WHERE img_name > 'foo' condition that comes after doing a batch
 77+ $conds2 = array();
 78+ if ( $start !== false ) {
 79+ $conds2[] = 'img_name >= ' . $dbw->addQuotes( $start );
 80+ }
 81+
 82+ $options = array(
 83+ 'LIMIT' => $this->mBatchSize,
 84+ 'ORDER BY' => 'img_name ASC',
 85+ );
 86+
 87+ do {
 88+ $res = $dbw->select(
 89+ 'image',
 90+ '*',
 91+ array_merge( $conds, $conds2 ),
 92+ __METHOD__,
 93+ $options
 94+ );
 95+
 96+ if ( $res->numRows() > 0 ) {
 97+ $row1 = $res->current();
 98+ $this->output( "Processing next {$this->mBatchSize} rows starting with {$row1->img_name}.\n");
 99+ $res->rewind();
 100+ } else {
 101+ $this->error( "No images to process.", 4 );
 102+ }
 103+
 104+ foreach ( $res as $row ) {
 105+ $file = $repo->newFileFromRow( $row );
 106+ if ( $file->getUpgraded() ) {
 107+ // File was upgraded.
 108+ $upgraded++;
 109+ $newLength = strlen( $file->getMetadata() );
 110+ $oldLength = strlen( $row->img_metadata );
 111+ if ( $newLength < $oldLength - 5 ) {
 112+ // If after updating, the metadata is smaller then
 113+ // what it was before, that's probably not a good thing
 114+ // because we extract more data with time, not less.
 115+ // Thus this probably indicates an error of some sort,
 116+ // or at the very least is suspicious. Have the - 5 just
 117+ // to weed out any inconsequential changes.
 118+ $error++;
 119+ $this->output( "Warning: File:{$row->img_name} used to have " .
 120+ "$oldLength bytes of metadata but now has $newLength bytes.\n" );
 121+ } elseif ( $verbose ) {
 122+ $this->output("Refreshed File:{$row->img_name}.\n" );
 123+ }
 124+ } else {
 125+ $leftAlone++;
 126+ if ( $force ) {
 127+ $file->upgradeRow();
 128+ $newLength = strlen( $file->getMetadata() );
 129+ $oldLength = strlen( $row->img_metadata );
 130+ if ( $newLength < $oldLength - 5 ) {
 131+ $error++;
 132+ $this->output( "Warning: File:{$row->img_name} used to have " .
 133+ "$oldLength bytes of metadata but now has $newLength bytes. (forced)\n" );
 134+
 135+ }
 136+ if ( $verbose ) {
 137+ $this->output("Forcibly refreshed File:{$row->img_name}.\n" );
 138+ }
 139+ }
 140+ else {
 141+ if ( $verbose ) {
 142+ $this->output( "Skipping File:{$row->img_name}.\n" );
 143+ }
 144+ }
 145+ }
 146+
 147+ }
 148+ $conds2 = array( 'img_name > ' . $dbw->addQuotes( $row->img_name ) );
 149+ wfWaitForSlaves();
 150+ } while( $res->numRows() === $this->mBatchSize );
 151+
 152+ $total = $upgraded + $leftAlone;
 153+ if ( $force ) {
 154+ $this->output( "\nFinished refreshing file metadata for $total files. $upgraded needed to be refreshed, $leftAlone did not need to be but were refreshed anyways, and $error refreshes were suspicious.\n" );
 155+ } else {
 156+ $this->output( "\nFinished refreshing file metadata for $total files. $upgraded were refreshed, $leftAlone were already up to date, and $error refreshes were suspicious.\n" );
 157+ }
 158+ }
 159+
 160+ function getConditions( $dbw ) {
 161+ $conds = array();
 162+
 163+ $end = $this->getOption( 'end', false );
 164+ $mime = $this->getOption( 'mime', false );
 165+ $like = $this->getOption( 'metadata-contains', false );
 166+
 167+ if ( $end !== false ) {
 168+ $conds[] = 'img_name <= ' . $dbw->addQuotes( $end ) ;
 169+ }
 170+ if ( $mime !== false ) {
 171+ list( $major, $minor ) = File::splitMime( $mime );
 172+ $conds['img_major_mime'] = $major;
 173+ if ( $minor !== '*' ) {
 174+ $conds['img_minor_mime'] = $minor;
 175+ }
 176+ }
 177+ if ( $like ) {
 178+ $conds[] = 'img_metadata ' . $dbw->buildLike( $dbw->anyString(), $like, $dbw->anyString() );
 179+ }
 180+ return $conds;
 181+ }
 182+
 183+ function setupParameters( $force, $brokenOnly ) {
 184+ global $wgUpdateCompatibleMetadata, $wgReadOnly;
 185+
 186+ if ( $brokenOnly ) {
 187+ $wgUpdateCompatibleMetadata = false;
 188+ } else {
 189+ $wgUpdateCompatibleMetadata = true;
 190+ }
 191+
 192+ if ( $brokenOnly && $force ) {
 193+ $this->error( 'Cannot use --broken-only and --force together. ', 2 );
 194+ }
 195+ }
 196+}
 197+
 198+
 199+$maintClass = 'RefreshImageMetadata';
 200+require_once( RUN_MAINTENANCE_IF_MAIN );
Property changes on: branches/REL1_18/phase3/maintenance/refreshImageMetadata.php
___________________________________________________________________
Added: svn:eol-style
1201 + native
Index: branches/REL1_18/phase3/maintenance/Maintenance.php
@@ -697,7 +697,7 @@
698698 $this->mQuiet = true;
699699 }
700700 if ( $this->hasOption( 'batch-size' ) ) {
701 - $this->mBatchSize = $this->getOption( 'batch-size' );
 701+ $this->mBatchSize = intval( $this->getOption( 'batch-size' ) );
702702 }
703703 }
704704
Index: branches/REL1_18/phase3/skins/monobook/main.css
@@ -1245,8 +1245,8 @@
12461246 }
12471247
12481248 /* God-damned hack for the crappy layout */
1249 -.ui-autocomplete {
1250 - font-size: 127%!important;
 1249+.os-suggest {
 1250+ font-size: 127%;
12511251 }
12521252
12531253 /* Sometimes people don't want personal tools to be lowercase! */
Index: branches/REL1_18/phase3/skins/common/commonPrint.css
@@ -127,7 +127,7 @@
128128 li#disclaimer,
129129 li#privacy,
130130 #footer-places,
131 -#catlinks {
 131+#mw-hidden-catlinks {
132132 /* Hides all the elements irrelevant for printing */
133133 display: none;
134134 }
Index: branches/REL1_18/phase3/skins/common/shared.css
@@ -221,26 +221,62 @@
222222 /*
223223 * OpenSearch ajax suggestions
224224 */
225 -.open-search-suggestions .ui-autocomplete {
226 - font-size: 95%;
227 - border: 1px solid #AAA!important;
 225+.os-suggest {
228226 overflow: auto;
229 - height: 100px;
230 - background: #FFF;
231 - background: Window;
 227+ overflow-x: hidden;
 228+ position: absolute;
 229+ top: 0px;
 230+ left: 0px;
 231+ width: 0px;
 232+ background-color: white;
 233+ background-color: Window;
 234+ border-style: solid;
 235+ border-color: #AAAAAA;
 236+ border-width: 1px;
 237+ z-index:99;
 238+ font-size:95%;
232239 }
233 -.open-search-suggestions .ui-autocomplete #ui-active-menuitem {
234 - background: #4C59A6;
235 - background: Highlight;
 240+
 241+table.os-suggest-results {
 242+ font-size: 95%;
 243+ cursor: pointer;
 244+ border: 0;
 245+ border-collapse: collapse;
 246+ width: 100%;
 247+}
 248+
 249+.os-suggest-result, .os-suggest-result-hl {
 250+ white-space: nowrap;
 251+ background-color: white;
 252+ background-color: Window;
 253+ color: black;
 254+ color: WindowText;
 255+ padding: 2px;
 256+}
 257+.os-suggest-result-hl,
 258+.os-suggest-result-hl-webkit {
 259+ background-color: #4C59A6;
236260 color: white;
 261+}
 262+.os-suggest-result-hl {
 263+ /* System colors are misimplemented in Safari 3.0 and earlier,
 264+ making highlighted text illegible... */
 265+ background-color: Highlight;
237266 color: HighlightText;
238 - border-color: #4C59A6;
239 - border-color: Highlight;
240267 }
241 -.open-search-suggestions .ui-autocomplete .ui-menu-item a{
242 - line-height: 1.1!important;
243 - font-size: 95%;
 268+
 269+.os-suggest-toggle {
 270+ position: relative;
 271+ left: 1ex;
 272+ font-size: 65%;
244273 }
 274+.os-suggest-toggle-def {
 275+ position: absolute;
 276+ top: 0px;
 277+ left: 0px;
 278+ font-size: 65%;
 279+ visibility: hidden;
 280+}
245281
246282 /* Page history styling */
247283 /* the auto-generated edit comments */
Index: branches/REL1_18/phase3/skins/common/mwsuggest.js
@@ -0,0 +1,1066 @@
 2+/*
 3+ * OpenSearch ajax suggestion engine for MediaWiki
 4+ *
 5+ * uses core MediaWiki open search support to fetch suggestions
 6+ * and show them below search boxes and other inputs
 7+ *
 8+ * by Robert Stojnic (April 2008)
 9+ */
 10+
 11+// Make sure wgMWSuggestTemplate is defined
 12+if ( !mw.config.exists( 'wgMWSuggestTemplate' ) ) {
 13+ mw.config.set( 'wgMWSuggestTemplate', mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' )
 14+ + "/api.php?action=opensearch\x26search={searchTerms}\x26namespace={namespaces}\x26suggest" );
 15+}
 16+
 17+// search_box_id -> Results object
 18+window.os_map = {};
 19+// cached data, url -> json_text
 20+window.os_cache = {};
 21+// global variables for suggest_keypress
 22+window.os_cur_keypressed = 0;
 23+window.os_keypressed_count = 0;
 24+// type: Timer
 25+window.os_timer = null;
 26+// tie mousedown/up events
 27+window.os_mouse_pressed = false;
 28+window.os_mouse_num = -1;
 29+// if true, the last change was made by mouse (and not keyboard)
 30+window.os_mouse_moved = false;
 31+// delay between keypress and suggestion (in ms)
 32+window.os_search_timeout = 250;
 33+// these pairs of inputs/forms will be autoloaded at startup
 34+window.os_autoload_inputs = new Array('searchInput', 'searchInput2', 'powerSearchText', 'searchText');
 35+window.os_autoload_forms = new Array('searchform', 'searchform2', 'powersearch', 'search' );
 36+// if we stopped the service
 37+window.os_is_stopped = false;
 38+// max lines to show in suggest table
 39+window.os_max_lines_per_suggest = 7;
 40+// number of steps to animate expansion/contraction of container width
 41+window.os_animation_steps = 6;
 42+// num of pixels of smallest step
 43+window.os_animation_min_step = 2;
 44+// delay between steps (in ms)
 45+window.os_animation_delay = 30;
 46+// max width of container in percent of normal size (1 == 100%)
 47+window.os_container_max_width = 2;
 48+// currently active animation timer
 49+window.os_animation_timer = null;
 50+// whether MWSuggest is enabled. Set to false when os_MWSuggestDisable() is called
 51+window.os_enabled = true;
 52+
 53+/**
 54+ * <datalist> is a new HTML5 element that allows you to manually supply
 55+ * suggestion lists and have them rendered according to the right platform
 56+ * conventions. Opera as of version 11 has a fatal problem: the suggestion
 57+ * lags behind what the user types by one keypress. (Reported as DSK-276870 to
 58+ * Opera's secret bug tracker.) However, Firefox 4 supports it without
 59+ * problems, so Opera is just blacklisted here. Ideally we wouldn't blacklist
 60+ * future versions, in case they fix it, but the fallback isn't bad at all and
 61+ * the failure if they don't fix it is very annoying, so in this case we'll
 62+ * blacklist future versions too.
 63+ */
 64+window.os_use_datalist = 'list' in document.createElement( 'input' )
 65+ && $.client.profile().name != 'opera';
 66+
 67+/** Timeout timer class that will fetch the results */
 68+window.os_Timer = function( id, r, query ) {
 69+ this.id = id;
 70+ this.r = r;
 71+ this.query = query;
 72+};
 73+
 74+/** Property class for single search box */
 75+window.os_Results = function( name, formname ) {
 76+ this.searchform = formname; // id of the searchform
 77+ this.searchbox = name; // id of the searchbox
 78+ this.container = name + 'Suggest'; // div that holds results
 79+ this.resultTable = name + 'Result'; // id base for the result table (+num = table row)
 80+ this.resultText = name + 'ResultText'; // id base for the spans within result tables (+num)
 81+ this.toggle = name + 'Toggle'; // div that has the toggle (enable/disable) link
 82+ this.query = null; // last processed query
 83+ this.results = null; // parsed titles
 84+ this.resultCount = 0; // number of results
 85+ this.original = null; // query that user entered
 86+ this.selected = -1; // which result is selected
 87+ this.containerCount = 0; // number of results visible in container
 88+ this.containerRow = 0; // height of result field in the container
 89+ this.containerTotal = 0; // total height of the container will all results
 90+ this.visible = false; // if container is visible
 91+ this.stayHidden = false; // don't try to show if lost focus
 92+};
 93+
 94+/** Timer user to animate expansion/contraction of container width */
 95+window.os_AnimationTimer = function( r, target ) {
 96+ this.r = r;
 97+ var current = document.getElementById(r.container).offsetWidth;
 98+ this.inc = Math.round( ( target - current ) / os_animation_steps );
 99+ if( this.inc < os_animation_min_step && this.inc >=0 ) {
 100+ this.inc = os_animation_min_step; // minimal animation step
 101+ }
 102+ if( this.inc > -os_animation_min_step && this.inc < 0 ) {
 103+ this.inc = -os_animation_min_step;
 104+ }
 105+ this.target = target;
 106+};
 107+
 108+/******************
 109+ * Initialization
 110+ ******************/
 111+
 112+/** Initialization, call upon page onload */
 113+window.os_MWSuggestInit = function() {
 114+ if ( !window.os_enabled ) {
 115+ return;
 116+ }
 117+
 118+ for( var i = 0; i < os_autoload_inputs.length; i++ ) {
 119+ var id = os_autoload_inputs[i];
 120+ var form = os_autoload_forms[i];
 121+ element = document.getElementById( id );
 122+ if( element != null ) {
 123+ os_initHandlers( id, form, element );
 124+ }
 125+ }
 126+};
 127+
 128+/* Teardown, called when things like SimpleSearch need to disable MWSuggest */
 129+window.os_MWSuggestTeardown = function() {
 130+ for( var i = 0; i < os_autoload_inputs.length; i++ ) {
 131+ var id = os_autoload_inputs[i];
 132+ var form = os_autoload_forms[i];
 133+ element = document.getElementById( id );
 134+ if( element != null ) {
 135+ os_teardownHandlers( id, form, element );
 136+ }
 137+ }
 138+};
 139+
 140+/* Call this to disable MWSuggest. Works regardless of whether MWSuggest has been initialized already. */
 141+window.os_MWSuggestDisable = function() {
 142+ window.os_MWSuggestTeardown();
 143+ window.os_enabled = false;
 144+}
 145+
 146+
 147+/** Init Result objects and event handlers */
 148+window.os_initHandlers = function( name, formname, element ) {
 149+ var r = new os_Results( name, formname );
 150+ var formElement = document.getElementById( formname );
 151+ if( !formElement ) {
 152+ // Older browsers (Opera 8) cannot get form elements
 153+ return;
 154+ }
 155+ // event handler
 156+ os_hookEvent( element, 'keyup', os_eventKeyup );
 157+ os_hookEvent( element, 'keydown', os_eventKeydown );
 158+ os_hookEvent( element, 'keypress', os_eventKeypress );
 159+ if ( !os_use_datalist ) {
 160+ // These are needed for the div hack to hide it if the user blurs.
 161+ os_hookEvent( element, 'blur', os_eventBlur );
 162+ os_hookEvent( element, 'focus', os_eventFocus );
 163+ // We don't want browser auto-suggestions interfering with our div, but
 164+ // autocomplete must be on for datalist to work (at least in Opera
 165+ // 10.10).
 166+ element.setAttribute( 'autocomplete', 'off' );
 167+ }
 168+ // stopping handler
 169+ os_hookEvent( formElement, 'submit', os_eventOnsubmit );
 170+ os_map[name] = r;
 171+ // toggle link
 172+ if( document.getElementById( r.toggle ) == null ) {
 173+ // TODO: disable this while we figure out a way for this to work in all browsers
 174+ /* if( name == 'searchInput' ) {
 175+ // special case: place above the main search box
 176+ var t = os_createToggle( r, 'os-suggest-toggle' );
 177+ var searchBody = document.getElementById( 'searchBody' );
 178+ var first = searchBody.parentNode.firstChild.nextSibling.appendChild(t);
 179+ } else {
 180+ // default: place below search box to the right
 181+ var t = os_createToggle( r, 'os-suggest-toggle-def' );
 182+ var top = element.offsetTop + element.offsetHeight;
 183+ var left = element.offsetLeft + element.offsetWidth;
 184+ t.style.position = 'absolute';
 185+ t.style.top = top + 'px';
 186+ t.style.left = left + 'px';
 187+ element.parentNode.appendChild( t );
 188+ // only now width gets calculated, shift right
 189+ left -= t.offsetWidth;
 190+ t.style.left = left + 'px';
 191+ t.style.visibility = 'visible';
 192+ } */
 193+ }
 194+
 195+};
 196+
 197+window.os_teardownHandlers = function( name, formname, element ) {
 198+ var formElement = document.getElementById( formname );
 199+ if( !formElement ) {
 200+ // Older browsers (Opera 8) cannot get form elements
 201+ return;
 202+ }
 203+
 204+ os_unhookEvent( element, 'keyup', os_eventKeyup );
 205+ os_unhookEvent( element, 'keydown', os_eventKeydown );
 206+ os_unhookEvent( element, 'keypress', os_eventKeypress );
 207+ if ( !os_use_datalist ) {
 208+ // These are needed for the div hack to hide it if the user blurs.
 209+ os_unhookEvent( element, 'blur', os_eventBlur );
 210+ os_unhookEvent( element, 'focus', os_eventFocus );
 211+ // We don't want browser auto-suggestions interfering with our div, but
 212+ // autocomplete must be on for datalist to work (at least in Opera
 213+ // 10.10).
 214+ element.removeAttribute( 'autocomplete' );
 215+ }
 216+ // stopping handler
 217+ os_unhookEvent( formElement, 'submit', os_eventOnsubmit );
 218+};
 219+
 220+
 221+window.os_hookEvent = function( element, hookName, hookFunct ) {
 222+ if ( element.addEventListener ) {
 223+ element.addEventListener( hookName, hookFunct, false );
 224+ } else if ( window.attachEvent ) {
 225+ element.attachEvent( 'on' + hookName, hookFunct );
 226+ }
 227+};
 228+
 229+window.os_unhookEvent = function( element, hookName, hookFunct ) {
 230+ if ( element.removeEventListener ) {
 231+ element.removeEventListener( hookName, hookFunct, false );
 232+ } else if ( element.detachEvent ) {
 233+ element.detachEvent( 'on' + hookName, hookFunct );
 234+ }
 235+}
 236+
 237+/********************
 238+ * Keyboard events
 239+ ********************/
 240+
 241+/** Event handler that will fetch results on keyup */
 242+window.os_eventKeyup = function( e ) {
 243+ var targ = os_getTarget( e );
 244+ var r = os_map[targ.id];
 245+ if( r == null ) {
 246+ return; // not our event
 247+ }
 248+
 249+ // some browsers won't generate keypressed for arrow keys, catch it
 250+ if( os_keypressed_count == 0 ) {
 251+ os_processKey( r, os_cur_keypressed, targ );
 252+ }
 253+ var query = targ.value;
 254+ os_fetchResults( r, query, os_search_timeout );
 255+};
 256+
 257+/** catch arrows up/down and escape to hide the suggestions */
 258+window.os_processKey = function( r, keypressed, targ ) {
 259+ if ( keypressed == 40 && !r.visible && os_timer == null ) {
 260+ // If the user hits the down arrow, fetch results immediately if none
 261+ // are already displayed.
 262+ r.query = '';
 263+ os_fetchResults( r, targ.value, 0 );
 264+ }
 265+ // Otherwise, if we're not using datalist, we need to handle scrolling and
 266+ // so on.
 267+ if ( os_use_datalist ) {
 268+ return;
 269+ }
 270+ if ( keypressed == 40 ) { // Arrow Down
 271+ if ( r.visible ) {
 272+ os_changeHighlight( r, r.selected, r.selected + 1, true );
 273+ }
 274+ } else if ( keypressed == 38 ) { // Arrow Up
 275+ if ( r.visible ) {
 276+ os_changeHighlight( r, r.selected, r.selected - 1, true );
 277+ }
 278+ } else if( keypressed == 27 ) { // Escape
 279+ document.getElementById( r.searchbox ).value = r.original;
 280+ r.query = r.original;
 281+ os_hideResults( r );
 282+ } else if( r.query != document.getElementById( r.searchbox ).value ) {
 283+ // os_hideResults( r ); // don't show old suggestions
 284+ }
 285+};
 286+
 287+/** When keys is held down use a timer to output regular events */
 288+window.os_eventKeypress = function( e ) {
 289+ var targ = os_getTarget( e );
 290+ var r = os_map[targ.id];
 291+ if( r == null ) {
 292+ return; // not our event
 293+ }
 294+
 295+ var keypressed = os_cur_keypressed;
 296+
 297+ os_keypressed_count++;
 298+ os_processKey( r, keypressed, targ );
 299+};
 300+
 301+/** Catch the key code (Firefox bug) */
 302+window.os_eventKeydown = function( e ) {
 303+ if ( !e ) {
 304+ e = window.event;
 305+ }
 306+ var targ = os_getTarget( e );
 307+ var r = os_map[targ.id];
 308+ if( r == null ) {
 309+ return; // not our event
 310+ }
 311+
 312+ os_mouse_moved = false;
 313+
 314+ os_cur_keypressed = ( e.keyCode == undefined ) ? e.which : e.keyCode;
 315+ os_keypressed_count = 0;
 316+};
 317+
 318+
 319+/** When the form is submitted hide everything, cancel updates... */
 320+window.os_eventOnsubmit = function( e ) {
 321+ var targ = os_getTarget( e );
 322+
 323+ os_is_stopped = true;
 324+ // kill timed requests
 325+ if( os_timer != null && os_timer.id != null ) {
 326+ clearTimeout( os_timer.id );
 327+ os_timer = null;
 328+ }
 329+ // Hide all suggestions
 330+ for( i = 0; i < os_autoload_inputs.length; i++ ) {
 331+ var r = os_map[os_autoload_inputs[i]];
 332+ if( r != null ) {
 333+ var b = document.getElementById( r.searchform );
 334+ if( b != null && b == targ ) {
 335+ // set query value so the handler won't try to fetch additional results
 336+ r.query = document.getElementById( r.searchbox ).value;
 337+ }
 338+ os_hideResults( r );
 339+ }
 340+ }
 341+ return true;
 342+};
 343+
 344+
 345+
 346+/** Hide results from the user, either making the div visibility=hidden or
 347+ * detaching the datalist from the input. */
 348+window.os_hideResults = function( r ) {
 349+ if ( os_use_datalist ) {
 350+ document.getElementById( r.searchbox ).setAttribute( 'list', '' );
 351+ } else {
 352+ var c = document.getElementById( r.container );
 353+ if ( c != null ) {
 354+ c.style.visibility = 'hidden';
 355+ }
 356+ }
 357+ r.visible = false;
 358+ r.selected = -1;
 359+};
 360+
 361+window.os_decodeValue = function( value ) {
 362+ if ( decodeURIComponent ) {
 363+ return decodeURIComponent( value );
 364+ }
 365+ if( unescape ) {
 366+ return unescape( value );
 367+ }
 368+ return null;
 369+};
 370+
 371+window.os_encodeQuery = function( value ) {
 372+ if ( encodeURIComponent ) {
 373+ return encodeURIComponent( value );
 374+ }
 375+ if( escape ) {
 376+ return escape( value );
 377+ }
 378+ return null;
 379+};
 380+
 381+/** Handles data from XMLHttpRequest, and updates the suggest results */
 382+window.os_updateResults = function( r, query, text, cacheKey ) {
 383+ os_cache[cacheKey] = text;
 384+ r.query = query;
 385+ r.original = query;
 386+ if( text == '' ) {
 387+ r.results = null;
 388+ r.resultCount = 0;
 389+ os_hideResults( r );
 390+ } else {
 391+ try {
 392+ var p = eval( '(' + text + ')' ); // simple json parse, could do a safer one
 393+ if( p.length < 2 || p[1].length == 0 ) {
 394+ r.results = null;
 395+ r.resultCount = 0;
 396+ os_hideResults( r );
 397+ return;
 398+ }
 399+ if ( os_use_datalist ) {
 400+ os_setupDatalist( r, p[1] );
 401+ } else {
 402+ os_setupDiv( r, p[1] );
 403+ }
 404+ } catch( e ) {
 405+ // bad response from server or such
 406+ os_hideResults( r );
 407+ os_cache[cacheKey] = null;
 408+ }
 409+ }
 410+};
 411+
 412+/**
 413+ * Create and populate a <datalist>.
 414+ *
 415+ * @param r os_Result object
 416+ * @param results Array of the new results to replace existing ones
 417+ */
 418+window.os_setupDatalist = function( r, results ) {
 419+ var s = document.getElementById( r.searchbox );
 420+ var c = document.getElementById( r.container );
 421+ if ( c == null ) {
 422+ c = document.createElement( 'datalist' );
 423+ c.setAttribute( 'id', r.container );
 424+ document.body.appendChild( c );
 425+ } else {
 426+ c.innerHTML = '';
 427+ }
 428+ s.setAttribute( 'list', r.container );
 429+
 430+ r.results = new Array();
 431+ r.resultCount = results.length;
 432+ r.visible = true;
 433+ for ( i = 0; i < results.length; i++ ) {
 434+ var title = os_decodeValue( results[i] );
 435+ var opt = document.createElement( 'option' );
 436+ opt.value = title;
 437+ r.results[i] = title;
 438+ c.appendChild( opt );
 439+ }
 440+};
 441+
 442+/** Fetch namespaces from checkboxes or hidden fields in the search form,
 443+ if none defined use wgSearchNamespaces global */
 444+window.os_getNamespaces = function( r ) {
 445+ var namespaces = '';
 446+ var elements = document.forms[r.searchform].elements;
 447+ for( i = 0; i < elements.length; i++ ) {
 448+ var name = elements[i].name;
 449+ if( typeof name != 'undefined' && name.length > 2 && name[0] == 'n' &&
 450+ name[1] == 's' && (
 451+ ( elements[i].type == 'checkbox' && elements[i].checked ) ||
 452+ ( elements[i].type == 'hidden' && elements[i].value == '1' )
 453+ )
 454+ ) {
 455+ if( namespaces != '' ) {
 456+ namespaces += '|';
 457+ }
 458+ namespaces += name.substring( 2 );
 459+ }
 460+ }
 461+ if( namespaces == '' ) {
 462+ namespaces = wgSearchNamespaces.join('|');
 463+ }
 464+ return namespaces;
 465+};
 466+
 467+/** Update results if user hasn't already typed something else */
 468+window.os_updateIfRelevant = function( r, query, text, cacheKey ) {
 469+ var t = document.getElementById( r.searchbox );
 470+ if( t != null && t.value == query ) { // check if response is still relevant
 471+ os_updateResults( r, query, text, cacheKey );
 472+ }
 473+ r.query = query;
 474+};
 475+
 476+/** Fetch results after some timeout */
 477+window.os_delayedFetch = function() {
 478+ if( os_timer == null ) {
 479+ return;
 480+ }
 481+ var r = os_timer.r;
 482+ var query = os_timer.query;
 483+ os_timer = null;
 484+ var path = mw.config.get( 'wgMWSuggestTemplate' ).replace( "{namespaces}", os_getNamespaces( r ) )
 485+ .replace( "{dbname}", wgDBname )
 486+ .replace( "{searchTerms}", os_encodeQuery( query ) );
 487+
 488+ // try to get from cache, if not fetch using ajax
 489+ var cached = os_cache[path];
 490+ if( cached != null && cached != undefined ) {
 491+ os_updateIfRelevant( r, query, cached, path );
 492+ } else {
 493+ var xmlhttp = sajax_init_object();
 494+ if( xmlhttp ) {
 495+ try {
 496+ xmlhttp.open( 'GET', path, true );
 497+ xmlhttp.onreadystatechange = function() {
 498+ if ( xmlhttp.readyState == 4 && typeof os_updateIfRelevant == 'function' ) {
 499+ os_updateIfRelevant( r, query, xmlhttp.responseText, path );
 500+ }
 501+ };
 502+ xmlhttp.send( null );
 503+ } catch ( e ) {
 504+ if ( window.location.hostname == 'localhost' ) {
 505+ alert( "Your browser blocks XMLHttpRequest to 'localhost', try using a real hostname for development/testing." );
 506+ }
 507+ throw e;
 508+ }
 509+ }
 510+ }
 511+};
 512+
 513+/** Init timed update via os_delayedUpdate() */
 514+window.os_fetchResults = function( r, query, timeout ) {
 515+ if( query == '' ) {
 516+ r.query = '';
 517+ os_hideResults( r );
 518+ return;
 519+ } else if( query == r.query ) {
 520+ return; // no change
 521+ }
 522+
 523+ os_is_stopped = false; // make sure we're running
 524+
 525+ // cancel any pending fetches
 526+ if( os_timer != null && os_timer.id != null ) {
 527+ clearTimeout( os_timer.id );
 528+ }
 529+ // schedule delayed fetching of results
 530+ if( timeout != 0 ) {
 531+ os_timer = new os_Timer( setTimeout( "os_delayedFetch()", timeout ), r, query );
 532+ } else {
 533+ os_timer = new os_Timer( null, r, query );
 534+ os_delayedFetch(); // do it now!
 535+ }
 536+};
 537+
 538+/** Find event target */
 539+window.os_getTarget = function( e ) {
 540+ if ( !e ) {
 541+ e = window.event;
 542+ }
 543+ if ( e.target ) {
 544+ return e.target;
 545+ } else if ( e.srcElement ) {
 546+ return e.srcElement;
 547+ } else {
 548+ return null;
 549+ }
 550+};
 551+
 552+/** Check if x is a valid integer */
 553+window.os_isNumber = function( x ) {
 554+ if( x == '' || isNaN( x ) ) {
 555+ return false;
 556+ }
 557+ for( var i = 0; i < x.length; i++ ) {
 558+ var c = x.charAt( i );
 559+ if( !( c >= '0' && c <= '9' ) ) {
 560+ return false;
 561+ }
 562+ }
 563+ return true;
 564+};
 565+
 566+/** Call this to enable suggestions on input (id=inputId), on a form (name=formName) */
 567+window.os_enableSuggestionsOn = function( inputId, formName ) {
 568+ os_initHandlers( inputId, formName, document.getElementById( inputId ) );
 569+};
 570+
 571+/** Call this to disable suggestios on input box (id=inputId) */
 572+window.os_disableSuggestionsOn = function( inputId ) {
 573+ r = os_map[inputId];
 574+ if( r != null ) {
 575+ // cancel/hide results
 576+ os_timer = null;
 577+ os_hideResults( r );
 578+ // turn autocomplete on !
 579+ document.getElementById( inputId ).setAttribute( 'autocomplete', 'on' );
 580+ // remove descriptor
 581+ os_map[inputId] = null;
 582+ }
 583+
 584+ // Remove the element from the os_autoload_* arrays
 585+ var index = os_autoload_inputs.indexOf( inputId );
 586+ if ( index >= 0 ) {
 587+ os_autoload_inputs[index] = os_autoload_forms[index] = '';
 588+ }
 589+};
 590+
 591+/************************************************
 592+ * Div-only functions (irrelevant for datalist)
 593+ ************************************************/
 594+
 595+/** Event: loss of focus of input box */
 596+window.os_eventBlur = function( e ) {
 597+ var targ = os_getTarget( e );
 598+ var r = os_map[targ.id];
 599+ if( r == null ) {
 600+ return; // not our event
 601+ }
 602+ if( !os_mouse_pressed ) {
 603+ os_hideResults( r );
 604+ // force canvas to stay hidden
 605+ r.stayHidden = true;
 606+ // cancel any pending fetches
 607+ if( os_timer != null && os_timer.id != null ) {
 608+ clearTimeout( os_timer.id );
 609+ }
 610+ os_timer = null;
 611+ }
 612+};
 613+
 614+/** Event: focus (catch only when stopped) */
 615+window.os_eventFocus = function( e ) {
 616+ var targ = os_getTarget( e );
 617+ var r = os_map[targ.id];
 618+ if( r == null ) {
 619+ return; // not our event
 620+ }
 621+ r.stayHidden = false;
 622+};
 623+
 624+/**
 625+ * Create and populate a <div>, for non-<datalist>-supporting browsers.
 626+ *
 627+ * @param r os_Result object
 628+ * @param results Array of the new results to replace existing ones
 629+ */
 630+window.os_setupDiv = function( r, results ) {
 631+ var c = document.getElementById( r.container );
 632+ if ( c == null ) {
 633+ c = os_createContainer( r );
 634+ }
 635+ c.innerHTML = os_createResultTable( r, results );
 636+ // init container table sizes
 637+ var t = document.getElementById( r.resultTable );
 638+ r.containerTotal = t.offsetHeight;
 639+ r.containerRow = t.offsetHeight / r.resultCount;
 640+ os_fitContainer( r );
 641+ os_trimResultText( r );
 642+ os_showResults( r );
 643+};
 644+
 645+/** Create the result table to be placed in the container div */
 646+window.os_createResultTable = function( r, results ) {
 647+ var c = document.getElementById( r.container );
 648+ var width = c.offsetWidth - os_operaWidthFix( c.offsetWidth );
 649+ var html = '<table class="os-suggest-results" id="' + r.resultTable + '" style="width: ' + width + 'px;">';
 650+ r.results = new Array();
 651+ r.resultCount = results.length;
 652+ for( i = 0; i < results.length; i++ ) {
 653+ var title = os_decodeValue( results[i] );
 654+ r.results[i] = title;
 655+ html += '<tr><td class="os-suggest-result" id="' + r.resultTable + i + '"><span id="' + r.resultText + i + '">' + title + '</span></td></tr>';
 656+ }
 657+ html += '</table>';
 658+ return html;
 659+};
 660+
 661+/** Show results div */
 662+window.os_showResults = function( r ) {
 663+ if( os_is_stopped ) {
 664+ return;
 665+ }
 666+ if( r.stayHidden ) {
 667+ return;
 668+ }
 669+ os_fitContainer( r );
 670+ var c = document.getElementById( r.container );
 671+ r.selected = -1;
 672+ if( c != null ) {
 673+ c.scrollTop = 0;
 674+ c.style.visibility = 'visible';
 675+ r.visible = true;
 676+ }
 677+};
 678+
 679+window.os_operaWidthFix = function( x ) {
 680+ // For browsers that don't understand overflow-x, estimate scrollbar width
 681+ if( typeof document.body.style.overflowX != 'string' ) {
 682+ return 30;
 683+ }
 684+ return 0;
 685+};
 686+
 687+/** Brower-dependent functions to find window inner size, and scroll status */
 688+window.f_clientWidth = function() {
 689+ return f_filterResults(
 690+ window.innerWidth ? window.innerWidth : 0,
 691+ document.documentElement ? document.documentElement.clientWidth : 0,
 692+ document.body ? document.body.clientWidth : 0
 693+ );
 694+};
 695+
 696+window.f_clientHeight = function() {
 697+ return f_filterResults(
 698+ window.innerHeight ? window.innerHeight : 0,
 699+ document.documentElement ? document.documentElement.clientHeight : 0,
 700+ document.body ? document.body.clientHeight : 0
 701+ );
 702+};
 703+
 704+window.f_scrollLeft = function() {
 705+ return f_filterResults(
 706+ window.pageXOffset ? window.pageXOffset : 0,
 707+ document.documentElement ? document.documentElement.scrollLeft : 0,
 708+ document.body ? document.body.scrollLeft : 0
 709+ );
 710+};
 711+
 712+window.f_scrollTop = function() {
 713+ return f_filterResults(
 714+ window.pageYOffset ? window.pageYOffset : 0,
 715+ document.documentElement ? document.documentElement.scrollTop : 0,
 716+ document.body ? document.body.scrollTop : 0
 717+ );
 718+};
 719+
 720+window.f_filterResults = function( n_win, n_docel, n_body ) {
 721+ var n_result = n_win ? n_win : 0;
 722+ if ( n_docel && ( !n_result || ( n_result > n_docel ) ) ) {
 723+ n_result = n_docel;
 724+ }
 725+ return n_body && ( !n_result || ( n_result > n_body ) ) ? n_body : n_result;
 726+};
 727+
 728+/** Get the height available for the results container */
 729+window.os_availableHeight = function( r ) {
 730+ var absTop = document.getElementById( r.container ).style.top;
 731+ var px = absTop.lastIndexOf( 'px' );
 732+ if( px > 0 ) {
 733+ absTop = absTop.substring( 0, px );
 734+ }
 735+ return f_clientHeight() - ( absTop - f_scrollTop() );
 736+};
 737+
 738+/** Get element absolute position {left,top} */
 739+window.os_getElementPosition = function( elemID ) {
 740+ var offsetTrail = document.getElementById( elemID );
 741+ var offsetLeft = 0;
 742+ var offsetTop = 0;
 743+ while ( offsetTrail ) {
 744+ offsetLeft += offsetTrail.offsetLeft;
 745+ offsetTop += offsetTrail.offsetTop;
 746+ offsetTrail = offsetTrail.offsetParent;
 747+ }
 748+ if ( navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != 'undefined' ) {
 749+ offsetLeft += document.body.leftMargin;
 750+ offsetTop += document.body.topMargin;
 751+ }
 752+ return { left:offsetLeft, top:offsetTop };
 753+};
 754+
 755+/** Create the container div that will hold the suggested titles */
 756+window.os_createContainer = function( r ) {
 757+ var c = document.createElement( 'div' );
 758+ var s = document.getElementById( r.searchbox );
 759+ var pos = os_getElementPosition( r.searchbox );
 760+ var left = pos.left;
 761+ var top = pos.top + s.offsetHeight;
 762+ c.className = 'os-suggest';
 763+ c.setAttribute( 'id', r.container );
 764+ document.body.appendChild( c );
 765+
 766+ // dynamically generated style params
 767+ // IE workaround, cannot explicitely set "style" attribute
 768+ c = document.getElementById( r.container );
 769+ c.style.top = top + 'px';
 770+ c.style.left = left + 'px';
 771+ c.style.width = s.offsetWidth + 'px';
 772+
 773+ // mouse event handlers
 774+ c.onmouseover = function( event ) { os_eventMouseover( r.searchbox, event ); };
 775+ c.onmousemove = function( event ) { os_eventMousemove( r.searchbox, event ); };
 776+ c.onmousedown = function( event ) { return os_eventMousedown( r.searchbox, event ); };
 777+ c.onmouseup = function( event ) { os_eventMouseup( r.searchbox, event ); };
 778+ return c;
 779+};
 780+
 781+/** change container height to fit to screen */
 782+window.os_fitContainer = function( r ) {
 783+ var c = document.getElementById( r.container );
 784+ var h = os_availableHeight( r ) - 20;
 785+ var inc = r.containerRow;
 786+ h = parseInt( h / inc ) * inc;
 787+ if( h < ( 2 * inc ) && r.resultCount > 1 ) { // min: two results
 788+ h = 2 * inc;
 789+ }
 790+ if( ( h / inc ) > os_max_lines_per_suggest ) {
 791+ h = inc * os_max_lines_per_suggest;
 792+ }
 793+ if( h < r.containerTotal ) {
 794+ c.style.height = h + 'px';
 795+ r.containerCount = parseInt( Math.round( h / inc ) );
 796+ } else {
 797+ c.style.height = r.containerTotal + 'px';
 798+ r.containerCount = r.resultCount;
 799+ }
 800+};
 801+
 802+/** If some entries are longer than the box, replace text with "..." */
 803+window.os_trimResultText = function( r ) {
 804+ // find max width, first see if we could expand the container to fit it
 805+ var maxW = 0;
 806+ for( var i = 0; i < r.resultCount; i++ ) {
 807+ var e = document.getElementById( r.resultText + i );
 808+ if( e.offsetWidth > maxW ) {
 809+ maxW = e.offsetWidth;
 810+ }
 811+ }
 812+ var w = document.getElementById( r.container ).offsetWidth;
 813+ var fix = 0;
 814+ if( r.containerCount < r.resultCount ) {
 815+ fix = 20; // give 20px for scrollbar
 816+ } else {
 817+ fix = os_operaWidthFix( w );
 818+ }
 819+ if( fix < 4 ) {
 820+ fix = 4; // basic padding
 821+ }
 822+ maxW += fix;
 823+
 824+ // resize container to fit more data if permitted
 825+ var normW = document.getElementById( r.searchbox ).offsetWidth;
 826+ var prop = maxW / normW;
 827+ if( prop > os_container_max_width ) {
 828+ prop = os_container_max_width;
 829+ } else if( prop < 1 ) {
 830+ prop = 1;
 831+ }
 832+ var newW = Math.round( normW * prop );
 833+ if( w != newW ) {
 834+ w = newW;
 835+ if( os_animation_timer != null ) {
 836+ clearInterval( os_animation_timer.id );
 837+ }
 838+ os_animation_timer = new os_AnimationTimer( r, w );
 839+ os_animation_timer.id = setInterval( "os_animateChangeWidth()", os_animation_delay );
 840+ w -= fix; // this much is reserved
 841+ }
 842+
 843+ // trim results
 844+ if( w < 10 ) {
 845+ return;
 846+ }
 847+ for( var i = 0; i < r.resultCount; i++ ) {
 848+ var e = document.getElementById( r.resultText + i );
 849+ var replace = 1;
 850+ var lastW = e.offsetWidth + 1;
 851+ var iteration = 0;
 852+ var changedText = false;
 853+ while( e.offsetWidth > w && ( e.offsetWidth < lastW || iteration < 2 ) ) {
 854+ changedText = true;
 855+ lastW = e.offsetWidth;
 856+ var l = e.innerHTML;
 857+ e.innerHTML = l.substring( 0, l.length - replace ) + '...';
 858+ iteration++;
 859+ replace = 4; // how many chars to replace
 860+ }
 861+ if( changedText ) {
 862+ // show hint for trimmed titles
 863+ document.getElementById( r.resultTable + i ).setAttribute( 'title', r.results[i] );
 864+ }
 865+ }
 866+};
 867+
 868+/** Invoked on timer to animate change in container width */
 869+window.os_animateChangeWidth = function() {
 870+ var r = os_animation_timer.r;
 871+ var c = document.getElementById( r.container );
 872+ var w = c.offsetWidth;
 873+ var normW = document.getElementById( r.searchbox ).offsetWidth;
 874+ var normL = os_getElementPosition( r.searchbox ).left;
 875+ var inc = os_animation_timer.inc;
 876+ var target = os_animation_timer.target;
 877+ var nw = w + inc;
 878+ if( ( inc > 0 && nw >= target ) || ( inc <= 0 && nw <= target ) ) {
 879+ // finished !
 880+ c.style.width = target + 'px';
 881+ clearInterval( os_animation_timer.id );
 882+ os_animation_timer = null;
 883+ } else {
 884+ // in-progress
 885+ c.style.width = nw + 'px';
 886+ if( document.documentElement.dir == 'rtl' ) {
 887+ c.style.left = ( normL + normW + ( target - nw ) - os_animation_timer.target - 1 ) + 'px';
 888+ }
 889+ }
 890+};
 891+
 892+/** Change the highlighted row (i.e. suggestion), from position cur to next */
 893+window.os_changeHighlight = function( r, cur, next, updateSearchBox ) {
 894+ if ( next >= r.resultCount ) {
 895+ next = r.resultCount - 1;
 896+ }
 897+ if ( next < -1 ) {
 898+ next = -1;
 899+ }
 900+ r.selected = next;
 901+ if ( cur == next ) {
 902+ return; // nothing to do.
 903+ }
 904+
 905+ if( cur >= 0 ) {
 906+ var curRow = document.getElementById( r.resultTable + cur );
 907+ if( curRow != null ) {
 908+ curRow.className = 'os-suggest-result';
 909+ }
 910+ }
 911+ var newText;
 912+ if( next >= 0 ) {
 913+ var nextRow = document.getElementById( r.resultTable + next );
 914+ if( nextRow != null ) {
 915+ nextRow.className = os_HighlightClass();
 916+ }
 917+ newText = r.results[next];
 918+ } else {
 919+ newText = r.original;
 920+ }
 921+
 922+ // adjust the scrollbar if any
 923+ if( r.containerCount < r.resultCount ) {
 924+ var c = document.getElementById( r.container );
 925+ var vStart = c.scrollTop / r.containerRow;
 926+ var vEnd = vStart + r.containerCount;
 927+ if( next < vStart ) {
 928+ c.scrollTop = next * r.containerRow;
 929+ } else if( next >= vEnd ) {
 930+ c.scrollTop = ( next - r.containerCount + 1 ) * r.containerRow;
 931+ }
 932+ }
 933+
 934+ // update the contents of the search box
 935+ if( updateSearchBox ) {
 936+ os_updateSearchQuery( r, newText );
 937+ }
 938+};
 939+
 940+window.os_HighlightClass = function() {
 941+ var match = navigator.userAgent.match(/AppleWebKit\/(\d+)/);
 942+ if ( match ) {
 943+ var webKitVersion = parseInt( match[1] );
 944+ if ( webKitVersion < 523 ) {
 945+ // CSS system highlight colors broken on old Safari
 946+ // https://bugs.webkit.org/show_bug.cgi?id=6129
 947+ // Safari 3.0.4, 3.1 known ok
 948+ return 'os-suggest-result-hl-webkit';
 949+ }
 950+ }
 951+ return 'os-suggest-result-hl';
 952+};
 953+
 954+window.os_updateSearchQuery = function( r, newText ) {
 955+ document.getElementById( r.searchbox ).value = newText;
 956+ r.query = newText;
 957+};
 958+
 959+
 960+/********************
 961+ * Mouse events
 962+ ********************/
 963+
 964+/** Mouse over the container */
 965+window.os_eventMouseover = function( srcId, e ) {
 966+ var targ = os_getTarget( e );
 967+ var r = os_map[srcId];
 968+ if( r == null || !os_mouse_moved ) {
 969+ return; // not our event
 970+ }
 971+ var num = os_getNumberSuffix( targ.id );
 972+ if( num >= 0 ) {
 973+ os_changeHighlight( r, r.selected, num, false );
 974+ }
 975+};
 976+
 977+/* Get row where the event occured (from its id) */
 978+window.os_getNumberSuffix = function( id ) {
 979+ var num = id.substring( id.length - 2 );
 980+ if( !( num.charAt( 0 ) >= '0' && num.charAt( 0 ) <= '9' ) ) {
 981+ num = num.substring( 1 );
 982+ }
 983+ if( os_isNumber( num ) ) {
 984+ return parseInt( num );
 985+ } else {
 986+ return -1;
 987+ }
 988+};
 989+
 990+/** Save mouse move as last action */
 991+window.os_eventMousemove = function( srcId, e ) {
 992+ os_mouse_moved = true;
 993+};
 994+
 995+/** Mouse button held down, register possible click */
 996+window.os_eventMousedown = function( srcId, e ) {
 997+ var targ = os_getTarget( e );
 998+ var r = os_map[srcId];
 999+ if( r == null ) {
 1000+ return; // not our event
 1001+ }
 1002+ var num = os_getNumberSuffix( targ.id );
 1003+
 1004+ os_mouse_pressed = true;
 1005+ if( num >= 0 ) {
 1006+ os_mouse_num = num;
 1007+ // os_updateSearchQuery( r, r.results[num] );
 1008+ }
 1009+ // keep the focus on the search field
 1010+ document.getElementById( r.searchbox ).focus();
 1011+
 1012+ return false; // prevents selection
 1013+};
 1014+
 1015+/** Mouse button released, check for click on some row */
 1016+window.os_eventMouseup = function( srcId, e ) {
 1017+ var targ = os_getTarget( e );
 1018+ var r = os_map[srcId];
 1019+ if( r == null ) {
 1020+ return; // not our event
 1021+ }
 1022+ var num = os_getNumberSuffix( targ.id );
 1023+
 1024+ if( num >= 0 && os_mouse_num == num ) {
 1025+ os_updateSearchQuery( r, r.results[num] );
 1026+ os_hideResults( r );
 1027+ document.getElementById( r.searchform ).submit();
 1028+ }
 1029+ os_mouse_pressed = false;
 1030+ // keep the focus on the search field
 1031+ document.getElementById( r.searchbox ).focus();
 1032+};
 1033+
 1034+/** Toggle stuff seems to be dead code? */
 1035+
 1036+/** Return the span element that contains the toggle link */
 1037+window.os_createToggle = function( r, className ) {
 1038+ var t = document.createElement( 'span' );
 1039+ t.className = className;
 1040+ t.setAttribute( 'id', r.toggle );
 1041+ var link = document.createElement( 'a' );
 1042+ link.setAttribute( 'href', 'javascript:void(0);' );
 1043+ link.onclick = function() { os_toggle( r.searchbox, r.searchform ); };
 1044+ var msg = document.createTextNode( wgMWSuggestMessages[0] );
 1045+ link.appendChild( msg );
 1046+ t.appendChild( link );
 1047+ return t;
 1048+};
 1049+
 1050+/** Call when user clicks on some of the toggle links */
 1051+window.os_toggle = function( inputId, formName ) {
 1052+ r = os_map[inputId];
 1053+ var msg = '';
 1054+ if( r == null ) {
 1055+ os_enableSuggestionsOn( inputId, formName );
 1056+ r = os_map[inputId];
 1057+ msg = wgMWSuggestMessages[0];
 1058+ } else{
 1059+ os_disableSuggestionsOn( inputId, formName );
 1060+ msg = wgMWSuggestMessages[1];
 1061+ }
 1062+ // change message
 1063+ var link = document.getElementById( r.toggle ).firstChild;
 1064+ link.replaceChild( document.createTextNode( msg ), link.firstChild );
 1065+};
 1066+
 1067+hookEvent( 'load', os_MWSuggestInit );
Property changes on: branches/REL1_18/phase3/skins/common/mwsuggest.js
___________________________________________________________________
Added: svn:mergeinfo
11068 Merged /branches/REL1_17/phase3/skins/common/mwsuggest.js:r81445,81448
21069 Merged /branches/sqlite/skins/common/mwsuggest.js:r58211-58321
31070 Merged /branches/new-installer/phase3/skins/common/mwsuggest.js:r43664-66004
41071 Merged /branches/REL1_15/phase3/skins/common/mwsuggest.js:r51646
Added: svn:eol-style
51072 + native
Index: branches/REL1_18/phase3/RELEASE-NOTES-1.18
@@ -198,6 +198,7 @@
199199 targets and $wgServer.
200200 * Introduced $wgVaryOnXFPForAPI which will cause the API to send
201201 Vary: X-Forwarded-Proto headers.
 202+* New maintenance script to refresh image metadata (maintenance/refreshImageMetadata.php)
202203
203204 === Bug fixes in 1.18 ===
204205 * mw.util.getScript has been implemented (like wfScript in GlobalFunctions.php)
@@ -433,6 +434,7 @@
434435 are used
435436 * (bug 30264) Changed installer-generated LocalSettings.php to use require_once()
436437 instead require() for included extensions.
 438+* Tracking categories are no longer shown in footer for special pages
437439
438440 === API changes in 1.18 ===
439441 * BREAKING CHANGE: action=watch now requires POST and token.
Property changes on: branches/REL1_18/phase3/RELEASE-NOTES-1.18
___________________________________________________________________
Modified: svn:mergeinfo
440442 Merged /trunk/phase3/RELEASE-NOTES-1.18:r93382-93383,94236,95171,95409,95436,95458,95467,95470,95475,95493,95521,95525,95540
Index: branches/REL1_18/phase3/includes/GlobalFunctions.php
@@ -426,7 +426,7 @@
427427 /**
428428 * Expand a potentially local URL to a fully-qualified URL. Assumes $wgServer
429429 * is correct.
430 - *
 430+ *
431431 * The meaning of the PROTO_* constants is as follows:
432432 * PROTO_HTTP: Output a URL starting with http://
433433 * PROTO_HTTPS: Output a URL starting with https://
@@ -444,15 +444,15 @@
445445 function wfExpandUrl( $url, $defaultProto = PROTO_CURRENT ) {
446446 global $wgServer, $wgCanonicalServer;
447447 $serverUrl = $defaultProto === PROTO_CANONICAL ? $wgCanonicalServer : $wgServer;
448 -
 448+
449449 if ( $defaultProto === PROTO_CURRENT ) {
450450 $defaultProto = WebRequest::detectProtocol() . '://';
451451 }
452 -
 452+
453453 // Analyze $serverUrl to obtain its protocol
454454 $bits = wfParseUrl( $serverUrl );
455455 $serverHasProto = $bits && $bits['scheme'] != '';
456 -
 456+
457457 if ( $defaultProto === PROTO_CANONICAL ) {
458458 if ( $serverHasProto ) {
459459 $defaultProto = $bits['scheme'] . '://';
@@ -462,9 +462,9 @@
463463 $defaultProto = PROTO_HTTP;
464464 }
465465 }
466 -
 466+
467467 $defaultProtoWithoutSlashes = substr( $defaultProto, 0, -2 );
468 -
 468+
469469 if( substr( $url, 0, 2 ) == '//' ) {
470470 return $defaultProtoWithoutSlashes . $url;
471471 } elseif( substr( $url, 0, 1 ) == '/' ) {
@@ -511,7 +511,7 @@
512512 // URLs weren't supported until 1.18
513513 $retval = $wgUrlProtocols;
514514 }
515 -
 515+
516516 // Cache return value
517517 if ( $includeProtocolRelative ) {
518518 $withProtRel = $retval;
@@ -1399,6 +1399,8 @@
14001400 * debug_backtrace is disabled, otherwise the output from
14011401 * debug_backtrace() (trimmed).
14021402 *
 1403+ * @param $limit int This parameter can be used to limit the number of stack frames returned
 1404+ *
14031405 * @return array of backtrace information
14041406 */
14051407 function wfDebugBacktrace( $limit = 0 ) {
@@ -1424,7 +1426,7 @@
14251427 }
14261428
14271429 if ( $limit && version_compare( PHP_VERSION, '5.4.0', '>=' ) ) {
1428 - return array_slice( debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, 1 ), 1 );
 1430+ return array_slice( debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, $limit ), 1 );
14291431 } else {
14301432 return array_slice( debug_backtrace(), 1 );
14311433 }
Property changes on: branches/REL1_18/phase3/includes/GlobalFunctions.php
___________________________________________________________________
Modified: svn:mergeinfo
14321434 Merged /trunk/phase3/includes/GlobalFunctions.php:r93382-93383,94236,95171,95409,95436,95458,95467,95470,95475,95493,95521,95525,95540
Index: branches/REL1_18/phase3/includes/parser/Parser.php
@@ -3831,6 +3831,10 @@
38323832 * @return Boolean: whether the addition was successful
38333833 */
38343834 protected function addTrackingCategory( $msg ) {
 3835+ if ( $this->mTitle->getNamespace() === NS_SPECIAL ) {
 3836+ wfDebug( __METHOD__.": Not adding tracking category $msg to special page!\n" );
 3837+ return false;
 3838+ }
38353839 $cat = wfMsgForContent( $msg );
38363840
38373841 # Allow tracking categories to be disabled by setting them to "-"
Index: branches/REL1_18/phase3/includes/HTMLForm.php
@@ -680,9 +680,11 @@
681681
682682 /**
683683 * TODO: Document
684 - * @param $fields
 684+ * @param $fields array of fields (either arrays or objects)
 685+ * @param $sectionName string ID attribute of the <table> tag for this section, ignored if empty
 686+ * @param $fieldsetIDPrefix string ID prefix for the <fieldset> tag of each subsection, ignored if empty
685687 */
686 - function displaySection( $fields, $sectionName = '', $displayTitle = false ) {
 688+ function displaySection( $fields, $sectionName = '', $fieldsetIDPrefix = '' ) {
687689 $tableHtml = '';
688690 $subsectionHtml = '';
689691 $hasLeftColumn = false;
@@ -706,8 +708,8 @@
707709 $section .= $this->mSectionFooters[$key];
708710 }
709711 $attributes = array();
710 - if ( $displayTitle ) {
711 - $attributes["id"] = 'prefsection-' . Sanitizer::escapeId( $key, 'noninitial' );
 712+ if ( $fieldsetIDPrefix ) {
 713+ $attributes['id'] = Sanitizer::escapeId( "$fieldsetIDPrefix$key" );
712714 }
713715 $subsectionHtml .= Xml::fieldset( $legend, $section, $attributes ) . "\n";
714716 }
Index: branches/REL1_18/phase3/includes/OutputPage.php
@@ -1928,9 +1928,12 @@
19291929 /**
19301930 * Output a standard error page
19311931 *
 1932+ * showErrorPage( 'titlemsg', 'pagetextmsg', array( 'param1', 'param2' ) );
 1933+ * showErrorPage( 'titlemsg', $messageObject );
 1934+ *
19321935 * @param $title String: message key for page title
1933 - * @param $msg String: message key for page text
1934 - * @param $params Array: message parameters
 1936+ * @param $msg Mixed: message key (string) for page text, or a Message object
 1937+ * @param $params Array: message parameters; ignored if $msg is a Message object
19351938 */
19361939 public function showErrorPage( $title, $msg, $params = array() ) {
19371940 if ( $this->getTitle() ) {
@@ -1944,7 +1947,11 @@
19451948 $this->mRedirect = '';
19461949 $this->mBodytext = '';
19471950
1948 - $this->addWikiMsgArray( $msg, $params );
 1951+ if ( $msg instanceof Message ){
 1952+ $this->addHTML( $msg->parse() );
 1953+ } else {
 1954+ $this->addWikiMsgArray( $msg, $params );
 1955+ }
19491956
19501957 $this->returnToMain();
19511958 }
@@ -2352,7 +2359,7 @@
23532360 }
23542361
23552362 if ( $wgEnableMWSuggest && !$this->getUser()->getOption( 'disablesuggest', false ) ) {
2356 - $this->addModules( 'mediawiki.page.mwsuggest' );
 2363+ $this->addModules( 'mediawiki.legacy.mwsuggest' );
23572364 }
23582365 }
23592366
Property changes on: branches/REL1_18/phase3/includes/OutputPage.php
___________________________________________________________________
Modified: svn:mergeinfo
23602367 Merged /trunk/phase3/includes/OutputPage.php:r93382-93383,94236,95171,95409,95436,95458,95467,95470,95475,95493,95521,95525,95540
Index: branches/REL1_18/phase3/includes/AutoLoader.php
@@ -24,7 +24,6 @@
2525 'AuthPluginUser' => 'includes/AuthPlugin.php',
2626 'Autopromote' => 'includes/Autopromote.php',
2727 'BacklinkCache' => 'includes/BacklinkCache.php',
28 - 'BadTitle' => 'includes/Title.php',
2928 'BaseTemplate' => 'includes/SkinTemplate.php',
3029 'Block' => 'includes/Block.php',
3130 'Category' => 'includes/Category.php',
Property changes on: branches/REL1_18/phase3/includes/AutoLoader.php
___________________________________________________________________
Modified: svn:mergeinfo
3231 Merged /trunk/phase3/includes/AutoLoader.php:r93382-93383,94236,95171,95409,95436,95458,95467,95470,95475,95493,95521,95525,95540
Index: branches/REL1_18/phase3/includes/Wiki.php
@@ -99,7 +99,7 @@
100100 }
101101
102102 if ( $ret === null || ( $ret->getDBkey() == '' && $ret->getInterwiki() == '' ) ) {
103 - $ret = new BadTitle;
 103+ $ret = SpecialPage::getTitleFor( 'Badtitle' );
104104 }
105105
106106 return $ret;
@@ -147,7 +147,9 @@
148148 array( &$title, null, &$output, &$user, $request, $this ) );
149149
150150 // Invalid titles. Bug 21776: The interwikis must redirect even if the page name is empty.
151 - if ( $title instanceof BadTitle ) {
 151+ if ( is_null( $title ) || ( ( $title->getDBkey() == '' ) && ( $title->getInterwiki() == '' ) ) ) {
 152+ $this->context->title = SpecialPage::getTitleFor( 'Badtitle' );
 153+ // Die now before we mess up $wgArticle and the skin stops working
152154 throw new ErrorPageError( 'badtitle', 'badtitletext' );
153155 // If the user is not logged in, the Namespace:title of the article must be in
154156 // the Read array in order for the user to see it. (We have to check here to
@@ -171,7 +173,7 @@
172174 // 301 so google et al report the target as the actual url.
173175 $output->redirect( $url, 301 );
174176 } else {
175 - $this->context->setTitle( new BadTitle );
 177+ $this->context->setTitle( SpecialPage::getTitleFor( 'Badtitle' ) );
176178 wfProfileOut( __METHOD__ );
177179 throw new ErrorPageError( 'badtitle', 'badtitletext' );
178180 }
Index: branches/REL1_18/phase3/includes/Title.php
@@ -4330,38 +4330,4 @@
43314331 wfRunHooks( 'PageContentLanguage', array( $this, &$pageLang, $wgLang ) );
43324332 return wfGetLangObj( $pageLang );
43334333 }
4334 -}
4335 -
4336 -/**
4337 - * A BadTitle is generated in MediaWiki::parseTitle() if the title is invalid; the
4338 - * software uses this to display an error page. Internally it's basically a Title
4339 - * for an empty special page
4340 - */
4341 -class BadTitle extends Title {
4342 - public function __construct(){
4343 - $this->mTextform = '';
4344 - $this->mUrlform = '';
4345 - $this->mDbkeyform = '';
4346 - $this->mNamespace = NS_SPECIAL; // Stops talk page link, etc, being shown
4347 - }
4348 -
4349 - public function exists(){
4350 - return false;
4351 - }
4352 -
4353 - public function getPrefixedText(){
4354 - return '';
4355 - }
4356 -
4357 - public function getText(){
4358 - return '';
4359 - }
4360 -
4361 - public function getPrefixedURL(){
4362 - return '';
4363 - }
4364 -
4365 - public function getPrefixedDBKey(){
4366 - return '';
4367 - }
4368 -}
 4334+}
\ No newline at end of file
Property changes on: branches/REL1_18/phase3/includes/Title.php
___________________________________________________________________
Modified: svn:mergeinfo
43694335 Merged /trunk/phase3/includes/Title.php:r93382-93383,94236,95171,95409,95436,95458,95467,95470,95475,95493,95521,95525,95540
Index: branches/REL1_18/phase3/includes/Preferences.php
@@ -1524,6 +1524,6 @@
15251525 * Get the whole body of the form.
15261526 */
15271527 function getBody() {
1528 - return $this->displaySection( $this->mFieldTree, '', true );
 1528+ return $this->displaySection( $this->mFieldTree, '', 'mw-prefsection-' );
15291529 }
15301530 }
Index: branches/REL1_18/phase3/includes/Exception.php
@@ -255,24 +255,7 @@
256256 function report() {
257257 global $wgOut;
258258
259 - if ( $wgOut->getTitle() ) {
260 - $wgOut->debug( 'Original title: ' . $wgOut->getTitle()->getPrefixedText() . "\n" );
261 - }
262 - $wgOut->setPageTitle( wfMsg( $this->title ) );
263 - $wgOut->setHTMLTitle( wfMsg( 'errorpagetitle' ) );
264 - $wgOut->setRobotPolicy( 'noindex,nofollow' );
265 - $wgOut->setArticleRelated( false );
266 - $wgOut->enableClientCache( false );
267 - $wgOut->mRedirect = '';
268 - $wgOut->clearHTML();
269 -
270 - if( $this->msg instanceof Message ){
271 - $wgOut->addHTML( $this->msg->parse() );
272 - } else {
273 - $wgOut->addWikiMsgArray( $this->msg, $this->params );
274 - }
275 -
276 - $wgOut->returnToMain();
 259+ $wgOut->showErrorPage( $this->title, $this->msg, $this->params );
277260 $wgOut->output();
278261 }
279262 }
Index: branches/REL1_18/phase3/languages/messages/MessagesEn.php
@@ -365,6 +365,7 @@
366366 'Allmessages' => array( 'AllMessages' ),
367367 'Allpages' => array( 'AllPages' ),
368368 'Ancientpages' => array( 'AncientPages' ),
 369+ 'Badtitle' => array( 'Badtitle' ),
369370 'Blankpage' => array( 'BlankPage' ),
370371 'Block' => array( 'Block', 'BlockIP', 'BlockUser' ),
371372 'Blockme' => array( 'BlockMe' ),
Index: branches/REL1_18/phase3/resources/Resources.php
@@ -478,12 +478,6 @@
479479 'jquery.mwPrototypes',
480480 ),
481481 ),
482 - 'mediawiki.page.mwsuggest' => array(
483 - 'scripts' => 'resources/mediawiki.page/mediawiki.page.mwsuggest.js',
484 - 'dependencies' => array(
485 - 'jquery.ui.autocomplete',
486 - ),
487 - ),
488482 'mediawiki.libs.jpegmeta' => array(
489483 'scripts' => 'resources/mediawiki.libs/mediawiki.libs.jpegmeta.js',
490484 ),
@@ -648,6 +642,13 @@
649643 'localBasePath' => $GLOBALS['wgStyleDirectory'],
650644 'dependencies' => 'mediawiki.legacy.wikibits',
651645 ),
 646+ 'mediawiki.legacy.mwsuggest' => array(
 647+ 'scripts' => 'common/mwsuggest.js',
 648+ 'remoteBasePath' => $GLOBALS['wgStylePath'],
 649+ 'localBasePath' => $GLOBALS['wgStyleDirectory'],
 650+ 'dependencies' => array( 'mediawiki.legacy.wikibits', 'jquery.client' ),
 651+ 'messages' => array( 'search-mwsuggest-enabled', 'search-mwsuggest-disabled' ),
 652+ ),
652653 'mediawiki.legacy.preview' => array(
653654 'scripts' => 'common/preview.js',
654655 'remoteBasePath' => $GLOBALS['wgStylePath'],
Index: branches/REL1_18/phase3/resources/mediawiki.special/mediawiki.special.preferences.js
@@ -28,7 +28,7 @@
2929 });
3030 var $a = $( '<a/>', {
3131 text : $legend.text(),
32 - id : ident.replace('prefsection', 'preftab'),
 32+ id : ident.replace( 'mw-prefsection', 'preftab' ),
3333 href : '#' + ident
3434 }).click( function( e ) {
3535 e.preventDefault();
@@ -52,8 +52,8 @@
5353 // On document ready:
5454 $( function() {
5555 var hash = window.location.hash;
56 - if( hash.match( /^#prefsection-[\w-]+/ ) ) {
57 - var $tab = $( hash.replace('prefsection', 'preftab') );
 56+ if( hash.match( /^#mw-prefsection-[\w-]+/ ) ) {
 57+ var $tab = $( hash.replace( 'mw-prefsection', 'preftab' ) );
5858 $tab.click();
5959 }
6060 } );
@@ -172,4 +172,4 @@
173173 $tzTextbox.blur( function() { updateTimezoneSelection(); } );
174174 updateTimezoneSelection();
175175 }
176 -} )( jQuery, mediaWiki );
\ No newline at end of file
 176+} )( jQuery, mediaWiki );
Index: branches/REL1_18/phase3/resources/mediawiki.page/mediawiki.page.mwsuggest.js
@@ -1,76 +0,0 @@
2 -jQuery( document ).ready( function( $ ) {
3 - var $container = $('<div>', {'class' : 'open-search-suggestions'}),
4 - cache = {},
5 - $suggestionList,
6 - url = mw.config.get('wgScriptPath') + '/api.php?format=json&action=opensearch&search=',
7 - maxRowWindow;
8 -
9 - //Append the container which will hold the menu to the body
10 - $('body').append( $container );
11 -
12 - /* Grabs namespaces from search form or
13 - * in case we're not on a search page, take it from wgSearchNamespaces.
14 - * @return Array: List of Namespaces that should be searched
15 - */
16 - getNamespaces = function() {
17 - var namespaces = [];
18 - $('form#powersearch, form#search').find( '[name^="ns"]' ).each(function() {
19 - if ( this.checked || ( this.type == 'hidden' && this.value == '1' ) ) {
20 - namespaces.push( this.name.substring( 2 ) );
21 - }
22 - });
23 - if ( !namespaces.length ) {
24 - namespaces = mw.config.get('wgSearchNamespaces');
25 - }
26 - return namespaces.join('|');
27 - };
28 -
29 - /* Helper function to make sure that the list doesn't expand below the visible part of the window */
30 - deliverResult = function( obj, response, maxRowWindow ) {
31 - if ( obj && obj.length > 1 ) {
32 - response( obj[1] );
33 - // Get the lowest from multiple numbers using fn.apply
34 - var maxRow = Math.min.apply( Math, [7, obj[1].length, maxRowWindow] );
35 - $suggestionList.css( 'height', maxRow * $suggestionList.find( '.ui-menu-item' ).eq( 0 ).height() );
36 - } else {
37 - response( [] );
38 - }
39 - };
40 -
41 - /* The actual autocomplete setup */
42 - $("#searchInput").autocomplete({
43 - minLength: 2,
44 - source: function ( request, response ) {
45 - var namespaces = getNamespaces();
46 - // We're caching queries for performance
47 - var term = request.term + namespaces;
48 - if (term in cache) {
49 - deliverResult( cache[term], response, maxRowWindow );
50 - return;
51 - }
52 - $.getJSON(url + mw.util.rawurlencode( request.term ) + '&namespace=' + namespaces, function ( obj ) {
53 - // Save to cache
54 - cache[term] = obj;
55 - deliverResult( obj, response, maxRowWindow );
56 - });
57 - },
58 - select: function() {
59 - $('#searchGoButton').click();
60 - },
61 - create : function() {
62 - $suggestionList = $container.find('ul');
63 - },
64 - appendTo: '.open-search-suggestions',
65 - open: function() {
66 - maxRowWindow = Math.floor(
67 - ( $(window).height() - $suggestionList.offset().top + $(window).scrollTop() ) /
68 - $suggestionList.find( '.ui-menu-item' ).eq( 0 ).height()
69 - );
70 - }
71 - });
72 -
73 - /* Legacy teardown, called when things like SimpleSearch need to disable MWSuggest */
74 - window.os_MWSuggestDisable = function() {
75 - return $("#searchInput").autocomplete( "destroy" );
76 - };
77 -});
\ No newline at end of file

Follow-up revisions

RevisionCommit summaryAuthorDate
r96588fix typo from r96498 that was breaking Parser testsmah17:11, 8 September 2011

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r93382r91728 : Fix whitespace and two vars per CRdiebuche11:02, 28 July 2011
r93383r91728 : Fix a problem for api.php5 users and remove an unneeded function par...diebuche11:22, 28 July 2011
r94236Follow-up r93383: api param is 'namespace', not 'namespaces'.krinkle11:09, 11 August 2011
r95171Follow-up r86534 - Do not add tracking categories if we're looking at a speci...bawolff18:46, 21 August 2011
r95409Revert r91728...reedy18:22, 24 August 2011
r95436Partially revert r92245 per r92245 CR.krinkle19:56, 24 August 2011
r95458New maintenance script for refreshing image metadata (refreshImageMetadata.php)...bawolff05:33, 25 August 2011
r95467Followup r92155, move preferences-specific code introduced in HTMLForm to Pre...catrope09:44, 25 August 2011
r95470Followup r85994: eliminate code duplication introduced by this revision, inst...catrope10:13, 25 August 2011
r95475Fix stupid copypaste mistake in r95470catrope10:56, 25 August 2011
r95493Followup r90361, r90362...reedy16:40, 25 August 2011
r95521Undo r85392 ('revert' is a strong word since a lot has changed in the interve...happy-melon21:03, 25 August 2011
r95525Follow-up r81074: fix typos in some unit names and messages ("mili" instead o...happy-melon21:22, 25 August 2011
r95540Followup r95525, fix failing parser tests...reedy22:28, 25 August 2011

Status & tagging log