http://www.mediawiki.org/wiki/Special:Code/MediaWiki/96712
Revision: 96712
Author: robin
Date: 2011-09-10 04:09:20 +0000 (Sat, 10 Sep 2011)
Log Message:
-----------
Conversion script between Tifinagh and Latin for the Tachelhit language
Preferences: made getLanguageNames include those that don't have a Messages file
Modified Paths:
--------------
trunk/phase3/RELEASE-NOTES-1.19
trunk/phase3/includes/Preferences.php
trunk/phase3/languages/Names.php
trunk/phase3/languages/messages/MessagesEn.php
trunk/phase3/languages/messages/MessagesShi.php
trunk/phase3/maintenance/language/messageTypes.inc
trunk/phase3/maintenance/language/messages.inc
Added Paths:
-----------
trunk/phase3/languages/classes/LanguageShi.deps.php
trunk/phase3/languages/classes/LanguageShi.php
Modified: trunk/phase3/RELEASE-NOTES-1.19
===================================================================
--- trunk/phase3/RELEASE-NOTES-1.19 2011-09-10 02:43:21 UTC (rev 96711)
+++ trunk/phase3/RELEASE-NOTES-1.19 2011-09-10 04:09:20 UTC (rev 96712)
@@ -56,6 +56,7 @@
* (bug 26470) Add checkered background image on hover on files pages.
* (bug 30774) mediawiki.html: Add support for numbers and booleans in the
attribute values and element contents.
+* Conversion script between Tifinagh and Latin for the Tachelhit language
=== Bug fixes in 1.19 ===
* $wgUploadNavigationUrl should be used for file redlinks if
Modified: trunk/phase3/includes/Preferences.php
===================================================================
--- trunk/phase3/includes/Preferences.php 2011-09-10 02:43:21 UTC (rev
96711)
+++ trunk/phase3/includes/Preferences.php 2011-09-10 04:09:20 UTC (rev
96712)
@@ -276,7 +276,7 @@
if ( !$wgDisableLangConversion ) {
$variants = $wgContLang->getVariants();
- $languages = Language::getLanguageNames( true );
+ $languages = Language::getLanguageNames();
foreach ( $variants as $v ) {
$v = str_replace( '_', '-', strtolower( $v ) );
if ( array_key_exists( $v, $languages ) ) {
Modified: trunk/phase3/languages/Names.php
===================================================================
--- trunk/phase3/languages/Names.php 2011-09-10 02:43:21 UTC (rev 96711)
+++ trunk/phase3/languages/Names.php 2011-09-10 04:09:20 UTC (rev 96712)
@@ -301,7 +301,9 @@
'sg' => 'Sängö', # Sango/Sangho
'sgs' => 'Žemaitėška', # Samogitian
'sh' => 'Srpskohrvatski / Српскохрватски', # Serbocroatian
- 'shi' => 'Tašlḥiyt', # Tachelhit
+ 'shi' => 'Tašlḥiyt/ⵜⴰⵛⵍⵃⵉⵜ', # Tachelhit (multiple scripts -
defaults to Latin)
+ 'shi-tfng' => 'ⵜⴰⵛⵍⵃⵉⵜ', # Tachelhit (Tifinagh script)
+ 'shi-latn' => 'Tašlḥiyt', # Tachelhit (Latin script)
'si' => 'සිංහල', # Sinhalese
'simple' => 'Simple English', # Simple English
'sk' => 'Slovenčina', # Slovak
Added: trunk/phase3/languages/classes/LanguageShi.deps.php
===================================================================
--- trunk/phase3/languages/classes/LanguageShi.deps.php
(rev 0)
+++ trunk/phase3/languages/classes/LanguageShi.deps.php 2011-09-10 04:09:20 UTC
(rev 96712)
@@ -0,0 +1,8 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageIu.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( dirname(__FILE__).'/../LanguageConverter.php' );
Property changes on: trunk/phase3/languages/classes/LanguageShi.deps.php
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/phase3/languages/classes/LanguageShi.php
===================================================================
--- trunk/phase3/languages/classes/LanguageShi.php
(rev 0)
+++ trunk/phase3/languages/classes/LanguageShi.php 2011-09-10 04:09:20 UTC
(rev 96712)
@@ -0,0 +1,202 @@
+<?php
+/**
+ * @addtogroup Language
+ */
+
+/*
+* Conversion script between Latin and Tifinagh for Tachelhit.
+* - Tifinagh -> lowercase Latin
+* - lowercase/uppercase Latin -> Tifinagh
+*
+*
+* Based on:
+* - http://en.wikipedia.org/wiki/Shilha_language
+* - LanguageSr.php
+*
+* @ingroup Language
+*/
+require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
+
+/**
+ *
+ */
+class ShiConverter extends LanguageConverter {
+ var $mToLatin = array(
+ 'ⴰ' => 'a', 'ⴱ' => 'b', 'ⴳ' => 'g', 'ⴷ' => 'd', 'ⴹ' => 'ḍ', 'ⴻ'
=> 'e',
+ 'ⴼ' => 'f', 'ⴽ' => 'k', 'ⵀ' => 'h', 'ⵃ' => 'ḥ', 'ⵄ' => 'ε', 'ⵅ'
=> 'x',
+ 'ⵇ' => 'q', 'ⵉ' => 'i', 'ⵊ' => 'j', 'ⵍ' => 'l', 'ⵎ' => 'm',
'ⵏ' => 'n',
+ 'ⵓ' => 'u', 'ⵔ' => 'r', 'ⵕ' => 'ṛ', 'ⵖ' => 'γ', 'ⵙ' => 's', 'ⵚ'
=> 'ṣ',
+ 'ⵛ' => 'š', 'ⵜ' => 't', 'ⵟ' => 'ṭ', 'ⵡ' => 'w', 'ⵢ' => 'y', 'ⵣ'
=> 'z',
+ 'ⵥ' => 'ẓ', 'ⵯ' => 'ʷ',
+ );
+
+ var $mUpperToLowerCaseLatin = array(
+ 'A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd',
'E' => 'e',
+ 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i',
'J' => 'j',
+ 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n',
'O' => 'o',
+ 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's',
'T' => 't',
+ 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x',
'Y' => 'y',
+ 'Z' => 'z',
+ );
+
+ var $mToTifinagh = array(
+ 'a' => 'ⴰ', 'b' => 'ⴱ', 'g' => 'ⴳ', 'd' => 'ⴷ', 'ḍ' => 'ⴹ', 'e'
=> 'ⴻ',
+ 'f' => 'ⴼ', 'k' => 'ⴽ', 'h' => 'ⵀ', 'ḥ' => 'ⵃ', 'ε' => 'ⵄ', 'x'
=> 'ⵅ',
+ 'q' => 'ⵇ', 'i' => 'ⵉ', 'j' => 'ⵊ', 'l' => 'ⵍ', 'm' => 'ⵎ',
'n' => 'ⵏ',
+ 'u' => 'ⵓ', 'r' => 'ⵔ', 'ṛ' => 'ⵕ', 'γ' => 'ⵖ', 's' => 'ⵙ', 'ṣ'
=> 'ⵚ',
+ 'š' => 'ⵛ', 't' => 'ⵜ', 'ṭ' => 'ⵟ', 'w' => 'ⵡ', 'y' => 'ⵢ', 'z'
=> 'ⵣ',
+ 'ẓ' => 'ⵥ', 'ʷ' => 'ⵯ',
+ );
+
+ function loadDefaultTables() {
+ $this->mTables = array(
+ 'lowercase' => new ReplacementArray(
$this->mUpperToLowerCaseLatin ),
+ 'shi-tfng' => new ReplacementArray( $this->mToTifinagh
),
+ 'shi-latn' => new ReplacementArray( $this->mToLatin ),
+ 'shi' => new ReplacementArray()
+ );
+ }
+
+ /**
+ * rules should be defined as -{Tifinagh | Latin-} -or-
+ * -{code:text | code:text | ...}-
+ * update: delete all rule parsing because it's not used
+ * currently, and just produces a couple of bugs
+ *
+ * @param $rule string
+ * @param $flags array
+ * @return array
+ */
+ function parseManualRule( $rule, $flags = array() ) {
+ if ( in_array( 'T', $flags ) ) {
+ return parent::parseManualRule( $rule, $flags );
+ }
+
+ $carray = array();
+ // otherwise ignore all formatting
+ foreach ( $this->mVariants as $v ) {
+ $carray[$v] = $rule;
+ }
+
+ return $carray;
+ }
+
+ /**
+ * Do not convert content on talk pages
+ *
+ * @param $text string
+ * @param $parser Parser
+ * @return string
+ */
+ function parserConvert( $text, &$parser ) {
+ if ( is_object( $parser->getTitle() ) &&
$parser->getTitle()->isTalkPage() )
+ $this->mDoContentConvert = false;
+ else
+ $this->mDoContentConvert = true;
+
+ return parent::parserConvert( $text, $parser );
+ }
+
+ /**
+ * A function wrapper:
+ * - if there is no selected variant, leave the link
+ * names as they were
+ * - do not try to find variants for usernames
+ *
+ * @param $link string
+ * @param $nt Title
+ * @param $ignoreOtherCond bool
+ */
+ function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
+ // check for user namespace
+ if ( is_object( $nt ) ) {
+ $ns = $nt->getNamespace();
+ if ( $ns == NS_USER || $ns == NS_USER_TALK )
+ return;
+ }
+
+ $oldlink = $link;
+ parent::findVariantLink( $link, $nt, $ignoreOtherCond );
+ if ( $this->getPreferredVariant() == $this->mMainLanguageCode )
+ $link = $oldlink;
+ }
+
+ /**
+ * We want our external link captions to be converted in variants,
+ * so we return the original text instead -{$text}-, except for URLs
+ *
+ * @param $text string
+ * @param $noParse bool
+ *
+ * @return string
+ */
+ function markNoConversion( $text, $noParse = false ) {
+ if ( $noParse || preg_match(
"/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) )
+ return parent::markNoConversion( $text );
+ return $text;
+ }
+
+ /**
+ * An ugly function wrapper for parsing Image titles
+ * (to prevent image name conversion)
+ *
+ * @param $text string
+ * @param $toVariant bool
+ *
+ * @return string
+ */
+ function autoConvert( $text, $toVariant = false ) {
+ global $wgTitle;
+ if ( is_object( $wgTitle ) && $wgTitle->getNameSpace() ==
NS_FILE ) {
+ $imagename = $wgTitle->getNsText();
+ if ( preg_match( "/^$imagename:/", $text ) ) return
$text;
+ }
+ return parent::autoConvert( $text, $toVariant );
+ }
+
+ /**
+ * It translates text into variant
+ *
+ * @param $text string
+ * @param $toVariant string
+ *
+ * @return string
+ */
+ function translate( $text, $toVariant ) {
+ // If $text is empty or only includes spaces, do nothing
+ // Otherwise translate it
+ if ( trim( $text ) ) {
+ $this->loadTables();
+ // To Tifinagh, first translate uppercase to lowercase
Latin
+ if( $toVariant == 'shi-tfng' ) {
+ $text = $this->mTables['lowercase']->replace(
$text );
+ }
+ $text = $this->mTables[$toVariant]->replace( $text );
+ }
+ return $text;
+ }
+}
+
+/**
+ * Tachelhit
+ *
+ * @ingroup Language
+ */
+class LanguageShi extends Language {
+ function __construct() {
+ global $wgHooks;
+
+ parent::__construct();
+
+ $variants = array( 'shi', 'shi-tfng', 'shi-latn' );
+ $variantfallbacks = array(
+ 'shi' => 'shi-tfng',
+ 'shi-tfng' => 'shi',
+ 'shi-latn' => 'shi',
+ );
+
+ $flags = array();
+ $this->mConverter = new ShiConverter( $this, 'shi', $variants,
$variantfallbacks, $flags );
+ $wgHooks['ArticleSaveComplete'][] = $this->mConverter;
+ }
+}
Property changes on: trunk/phase3/languages/classes/LanguageShi.php
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/phase3/languages/messages/MessagesEn.php
===================================================================
--- trunk/phase3/languages/messages/MessagesEn.php 2011-09-10 02:43:21 UTC
(rev 96711)
+++ trunk/phase3/languages/messages/MessagesEn.php 2011-09-10 04:09:20 UTC
(rev 96712)
@@ -3735,6 +3735,12 @@
'variantname-ike-latn' => 'ike-Latn', # only translate this message to other
languages if you have to change it
'variantname-iu' => 'iu', # only translate this message to other
languages if you have to change it
+# Variants for Tachelhit language
+'variantname-shi-tfng' => 'shi-Tfng', # only translate this message to other
languages if you have to change it
+'variantname-shi-latn' => 'shi-Latn', # only translate this message to other
languages if you have to change it
+'variantname-shi' => 'shi', # only translate this message to other
languages if you have to change it
+
+
# Metadata
'metadata' => 'Metadata',
'metadata-help' => 'This file contains additional information,
probably added from the digital camera or scanner used to create or digitize it.
Modified: trunk/phase3/languages/messages/MessagesShi.php
===================================================================
--- trunk/phase3/languages/messages/MessagesShi.php 2011-09-10 02:43:21 UTC
(rev 96711)
+++ trunk/phase3/languages/messages/MessagesShi.php 2011-09-10 04:09:20 UTC
(rev 96712)
@@ -1173,6 +1173,11 @@
ghir lhwayj n lista (stour libdounin s *) karaytyo7asab',
+# Variants for Tachelhit language
+'variantname-shi-tfng' => 'ᑎᑎᕋᐅᓯᖅ ᓄᑖᖅ',
+'variantname-shi-latn' => 'Tašlḥiyt',
+'variantname-shi' => 'disable',
+
# Metadata
'metadata' => 'isfka n mita',
'metadata-help' => 'Asdaw ad llan gis inɣmisn yaḍnin lli tfl lkamira
tuṭunit niɣd aṣfḍ n uxddam lliɣ ay sgadda asdaw ad',
Modified: trunk/phase3/maintenance/language/messageTypes.inc
===================================================================
--- trunk/phase3/maintenance/language/messageTypes.inc 2011-09-10 02:43:21 UTC
(rev 96711)
+++ trunk/phase3/maintenance/language/messageTypes.inc 2011-09-10 04:09:20 UTC
(rev 96712)
@@ -231,6 +231,9 @@
'variantname-ike-cans',
'variantname-ike-latn',
'variantname-iu',
+ 'variantname-shi-tfng',
+ 'variantname-shi-latn',
+ 'variantname-shi',
'rc-change-size',
'resetpass_text',
'image_sample',
Modified: trunk/phase3/maintenance/language/messages.inc
===================================================================
--- trunk/phase3/maintenance/language/messages.inc 2011-09-10 02:43:21 UTC
(rev 96711)
+++ trunk/phase3/maintenance/language/messages.inc 2011-09-10 04:09:20 UTC
(rev 96712)
@@ -2680,6 +2680,11 @@
'variantname-ike-latn',
'variantname-iu',
),
+ 'variantname-shi' => array(
+ 'variantname-shi-tfng',
+ 'variantname-shi-latn',
+ 'variantname-shi',
+ ),
'metadata' => array(
'metadata',
'metadata-help',
@@ -3658,6 +3663,7 @@
'variantname-ku' => 'Variants for Kurdish language',
'variantname-tg' => 'Variants for Tajiki language',
'variantname-iu' => 'Variants for Inuktitut language',
+ 'variantname-shi' => 'Variants for Tachelhit language',
'media-info' => 'Media information',
'metadata' => 'Metadata',
'exif' => 'EXIF tags',
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs