Internationalize Mediawiki ULS extension

Change-Id: I17d6c4d6322e30c96a48788dd34dc11530b809b5
This commit is contained in:
Santhosh Thottingal
2012-09-24 23:15:48 -07:00
parent 85bc037349
commit 018f8418ad
6 changed files with 132 additions and 39 deletions

View File

@@ -20,21 +20,24 @@
( function ( $, mw, undefined ) {
"use strict";
var template = '<div class="row"><div class="twelve columns"><h3>Display settings</h3></div></div>'
+ '<div class="row"><div class="eleven columns"><h4>Language used for menus</h4></div></div>'
var template = '<div class="row"><div class="twelve columns">'
+ '<h3 data-i18n="ext-uls-display-settings-title"></h3></div></div>'
+ '<div class="row"><div class="eleven columns">'
+ '<h4 data-i18n="ext-uls-display-settings-ui-language"></h4></div></div>'
+ '<div class="row"><div class="uls-ui-languages eleven columns">'
+ '</div></div>'
+ '<div class="row"><div class="twelve columns"><h4>Font settings</h4></div></div>'
+ '<div class="row"><div class="twelve columns">'
+ '<h4 data-i18n="ext-uls-display-settings-font-settings"></h4></div></div>'
+ '<div class="row">'
+ '<div class="eleven columns">'
+ '<label class="checkbox"><input type="checkbox" id="webfonts-enable-checkbox" />'
+ '<strong>Download fonts automatically when needed</strong> '
+ 'Web fonts will be downloaded when text in special scripts is displayed. '
+ '<a target="_blank" href="//www.mediawiki.org/wiki/Special:MyLanguage/Help:Extension:WebFonts">More information</a>'
+ '<strong data-i18n="ext-uls-webfonts-settings-title"></strong> '
+ '<span data-i18n="ext-uls-webfonts-settings-info"></span> '
+ '<a target="_blank" href="//www.mediawiki.org/wiki/Special:MyLanguage/Help:Extension:WebFonts" data-i18n="ext-uls-webfonts-settings-info-link"></a>'
+ '</span></label>'
+ '</div>'
+ '</div>'
+ '<div class="row"><h5 class="twelve columns">Select your preferred fonts</h5></div>'
+ '<div class="row"><h5 class="twelve columns" data-i18n="ext-uls-webfonts-select"></h5></div>'
+ '<div class="row uls-content-fonts">'
+ '<div class="six columns"><label class="uls-font-label" id="content-font-selector-label"></label></div>'
+ '<select id="content-font-selector" class="four columns end uls-font-select"></select>'
@@ -46,14 +49,15 @@
+ '<div class="row"></div>'
+ '<div class="row language-settings-buttons">'
+ '<div class="eleven columns">'
+ '<button class="button uls-settings-close">Cancel</button>'
+ '<button id="uls-displaysettings-apply" class="active blue button">Apply changes</button>'
+ '<button class="button uls-settings-close" data-i18n="ext-uls-language-settings-cancel"></button>'
+ '<button id="uls-displaysettings-apply" class="active blue button" data-i18n="ext-uls-language-settings-apply">'
+ '</button>'
+ '</div>'
+ '</div>'; // FIXME i18n and too much hardcoding.
var DisplaySettings = function ( $parent ) {
this.name = "Display";
this.description = "Set language used for menus and fonts";
this.name = $.i18n( "ext-uls-display-settings-title-short" );
this.description = $.i18n( "ext-uls-display-settings-desc" );
this.$template = $( template );
this.uiLanguage = this.getUILanguage();
this.contentLanguage = this.getContentLanguage();
@@ -153,8 +157,8 @@
top: that.$parent.top,
onReady: function ( uls ) {
var $back = $( '<a>' ).prop( 'href', '#' )
.prop( 'title', 'Back to display settings' )
.text( '← Back to display settings' ); // FIXME i18n
.data( 'i18n','ext-uls-back-to-display-settings' )
.i18n();
$back.click( function () {
uls.hide();
@@ -162,7 +166,9 @@
} );
uls.$menu.find( 'div.uls-title' ).append( $back );
uls.$menu.find( 'div.uls-title h1' ).text( 'Select display language' );
uls.$menu.find( 'div.uls-title h1' )
.data( 'i18n','ext-uls-display-settings-ui-language' )
.i18n();
},
onSelect: function ( langCode ) {
that.uiLanguage = langCode;
@@ -235,8 +241,12 @@
$fontSelector.append( $systemFont );
$systemFont.attr( 'selected', savedFont === 'system' || !savedFont );
var $fontLabel = this.$template.find( 'label#ui-font-selector-label' );
$fontLabel.html( "<strong>Select font for " + $.uls.data.autonym( this.uiLanguage )
+ "</strong><div>Used for menus</div>" );
$fontLabel.html( '<strong>'
+ $.i18n( 'ext-uls-webfonts-select-for', $.uls.data.autonym( this.uiLanguage ) )
+ '</strong>'
+ '<div>'
+ $.i18n( 'ext-uls-webfonts-select-for-ui-info' )
+ '</div>' );
},
/**
@@ -263,8 +273,13 @@
$fontSelector.append( $systemFont );
$systemFont.attr( 'selected', savedFont === 'system' || !savedFont );
var $fontLabel = this.$template.find( '#content-font-selector-label' );
$fontLabel.html( "<strong>Select font for " + $.uls.data.autonym( this.contentLanguage )
+ "</strong><div>Used for content</div>" );
$fontLabel.html( '<strong>'
+ $.i18n( 'ext-uls-webfonts-select-for',
$.uls.data.autonym( this.contentLanguage ) )
+ '</strong>'
+ '<div>'
+ $.i18n( 'ext-uls-webfonts-select-for-content-info' )
+ '</div>' );
},
/**

View File

@@ -87,30 +87,33 @@
};
$( document ).ready( function () {
var extensionPath = mw.config.get( 'wgExtensionAssetsPath' ) +
'/UniversalLanguageSelector/';
// i18n initialization
var i18n = $.i18n( {
locale: currentLang
locale: currentLang,
messageLocationResolver: function ( locale ) {
return extensionPath + 'i18n/' + locale + '.json';
}
} );
var extensionPath = mw.config.get( 'wgExtensionAssetsPath' ) +
'/UniversalLanguageSelector/';
// localization for jquery.uls
i18n.load( extensionPath + 'lib/jquery.uls/i18n/' + currentLang + ".json", currentLang );
// localization for mediaWiki ULS
i18n.load( extensionPath + 'i18n/' + currentLang + ".json", currentLang );
var $ulsTrigger = $( '.uls-trigger' ),
previousLanguages = mw.uls.getPreviousLanguages() || [],
previousLang = previousLanguages.slice( -1 )[0];
function displaySettings () {
var $displaySettingsTitle = $( '<div>' )
.addClass( 'settings-title' )
.text( 'Display settings' ),
$displaySettingsText = $( '<span>' )
.addClass( 'settings-text' )
.text( 'Set language used for menus and fonts.' ),
$displaySettings = $( '<div>' )
.addClass( 'display-settings-block' )
.prop( 'id', 'display-settings-block' )
.append( $displaySettingsTitle )
.append( $displaySettingsText );
var $displaySettingsTitle = $( '<div data-i18n="ext-uls-display-settings-title">' )
.addClass( 'settings-title' );
var $displaySettingsText = $( '<span data-i18n="ext-uls-display-settings-desc">' )
.addClass( 'settings-text' );
var $displaySettings = $( '<div>' )
.addClass( 'display-settings-block' )
.prop( 'id', 'display-settings-block' )
.append( $displaySettingsTitle )
.append( $displaySettingsText );
return $displaySettings;
}
@@ -168,11 +171,12 @@
fade: true,
trigger: 'manual',
title: function () {
var prevLangName = $.uls.data.autonym( previousLang ),
linkClass = 'uls-lang-link',
title = "Language changed from <a href='#' lang = '" +
previousLang + "' class = '" + linkClass + "' >" +
prevLangName + "</a>";
var prevLangName = $.uls.data.autonym( previousLang );
var linkClass = 'uls-lang-link';
var prevLangLink = "<a href='#' lang = '" +
previousLang + "' class = '" + linkClass + "' >" +
prevLangName + "</a>";
var title = $.i18n( "ext-uls-undo-language-tooltip-text", prevLangLink );
return title;
}
} );

View File

@@ -24,7 +24,7 @@
'<span id="languagesettings-close" class="icon-close"></span>' +
'</div>';
var settingsMenu = '<div class="four columns languagesettings-menu">' +
'<h1>Language settings</h1>' + // TODO i18n
'<h1 data-i18n="ext-uls-language-settings-title"></h1>' +
'<div class="settings-menu-items">' +
'</div>' +
'</div>';
@@ -135,6 +135,7 @@
} );
}
this.$window.i18n();
this.shown = true;
this.$window.show();
},