Jarry1250 has submitted this change and it was merged. Change subject: Support non-duplicative sublocales (pt_BR, en_GB, etc.) ......................................................................
Support non-duplicative sublocales (pt_BR, en_GB, etc.) Two parts: (1) Read support (2) Write support Write support relies on rewriting pt-br to pt_BR and sorting it to the top of the switch (as it is intended to be more specific than pt). Read support is simply a case of rewriting pt_BR to pt-br. Broken if a manual edit has introduced pt_PT, en_US system languages -- because Translate doesn't understand that "en-us" and "en" are synonymous. Change-Id: Ic274351887bd0f72b33a9437e2b23ffae4ce3fb9 --- M SVGFormatReader.php 1 file changed, 17 insertions(+), 2 deletions(-) Approvals: Jarry1250: Verified; Looks good to me, approved diff --git a/SVGFormatReader.php b/SVGFormatReader.php index c25696a..d9616d2 100644 --- a/SVGFormatReader.php +++ b/SVGFormatReader.php @@ -324,6 +324,10 @@ foreach( $translations[$textId] as $language => $translation ) { // Sort out systemLanguage attribute if( $language !== 'fallback' ) { + if ( strpos( $language, '-' ) !== false ) { + list( $before, $after ) = explode( '-', $language ); + $language = $before . '_' . strtoupper( $after ); + } $translation['systemLanguage'] = $language; } @@ -370,9 +374,19 @@ } } } - + // Move sublocales to the beginning of their switch elements + $sublocales = $this->xpath->query( + "//text[contains(@systemLanguage,'_')]" . "|" . "//svg:text[contains(@systemLanguage,'_')]" + ); + $count = $sublocales->length; + for( $i = 0; $i < $count; $i++ ) { + $firstSibling = $sublocales->item( $i )->parentNode->childNodes->item( 0 ); + $sublocales->item( $i )->parentNode->insertBefore( $sublocales->item( $i ), $firstSibling ); + } // Move fallbacks to the end of their switch elements - $fallbacks = $this->xpath->query("//text[not(@systemLanguage)]|//svg:text[not(@systemLanguage)]"); + $fallbacks = $this->xpath->query( + "//text[not(@systemLanguage)]" . "|" . "//svg:text[not(@systemLanguage)]" + ); $count = $fallbacks->length; for( $i = 0; $i < $count; $i++ ) { $fallbacks->item( $i )->parentNode->appendChild( $fallbacks->item( $i ) ); @@ -424,6 +438,7 @@ $numChildren = $text->childNodes->length; $hasActualTextContent = TranslateSvgUtils::hasActualTextContent( $text ); $lang = $text->hasAttribute( 'systemLanguage' ) ? $text->getAttribute( 'systemLanguage' ) : 'fallback'; + $lang = str_replace( '_', '-', strtolower( $lang ) ); $counter = 1; for( $k = 0; $k < $numChildren; $k++ ) { $child = $text->childNodes->item( $k ); -- To view, visit https://gerrit.wikimedia.org/r/65460 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic274351887bd0f72b33a9437e2b23ffae4ce3fb9 Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/extensions/TranslateSvg Gerrit-Branch: master Gerrit-Owner: Jarry1250 <jarry1...@gmail.com> Gerrit-Reviewer: Anomie <bjor...@wikimedia.org> Gerrit-Reviewer: Jarry1250 <jarry1...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits