jenkins-bot has submitted this change and it was merged.
Change subject: MT: Store the MT provider preference in localstorage
......................................................................
MT: Store the MT provider preference in localstorage
* Use the stored preference as default MT provider.
* Do not show the new MT preferences announcement if there is a stored
MT provider preference.
Bug: T128059
Change-Id: Ie13ea5c6c1911746888c67224ccee9212f5635dc
---
M extension.json
M modules/tools/ext.cx.tools.mt.js
2 files changed, 43 insertions(+), 12 deletions(-)
Approvals:
Nikerabbit: Checked; Looks good to me, approved
jenkins-bot: Verified
diff --git a/extension.json b/extension.json
index 0959b2b..544dca7 100644
--- a/extension.json
+++ b/extension.json
@@ -642,7 +642,8 @@
"ext.cx.tools.manager",
"ext.cx.translation",
"ext.cx.translationview",
- "ext.cx.util"
+ "ext.cx.util",
+ "mediawiki.storage"
]
},
"ext.cx.tools.reference": {
diff --git a/modules/tools/ext.cx.tools.mt.js b/modules/tools/ext.cx.tools.mt.js
index bca4ef6..71ca028 100644
--- a/modules/tools/ext.cx.tools.mt.js
+++ b/modules/tools/ext.cx.tools.mt.js
@@ -20,8 +20,8 @@
providerIdPrefix = 'cx-provider-',
disableMT = 'disable-mt',
noMT = 'no-mt',
- sourceMT = 'source-mt';
-
+ sourceMT = 'source-mt',
+ translationOptions = [ disableMT, noMT, sourceMT ];
/**
* Fetch token for authentication with cxserver.
*
@@ -78,7 +78,8 @@
* @return {jQuery.Promise}
*/
function getProviders( from, to ) {
- var fetchProvidersUrl;
+ var fetchProvidersUrl,
+ translationPreference;
if ( MTControlCard.provider ) {
return $.Deferred().resolve();
@@ -93,20 +94,27 @@
return $.get( fetchProvidersUrl )
.done( function ( response ) {
MTControlCard.providers = response.mt;
+ translationPreference = mw.storage.get(
getMTProviderStorageKey() );
+ if ( MTControlCard.providers.indexOf(
translationPreference ) < 0 &&
+ translationOptions.indexOf(
translationPreference ) < 0 ) {
+ // Stored MT preference is not
available now.
+ translationPreference = null;
+ }
if ( $.isEmptyObject( MTControlCard.providers )
) {
- MTControlCard.provider = noMT;
+ MTControlCard.provider =
translationPreference || noMT;
// For languages with different
directionality,
// provide disable MT as default
option. It gives
// an empty editor to translator.
if ( $.uls.data.getDir(
mw.cx.sourceLanguage ) !==
$.uls.data.getDir(
mw.cx.targetLanguage )
) {
- MTControlCard.provider =
disableMT;
+ MTControlCard.provider =
translationPreference || disableMT;
}
} else {
- // TODO: Consider user preferences
- MTControlCard.provider =
MTControlCard.providers[ 0 ];
+ // There are MT providers. If there is
a saved mt provider preference
+ // select that from the providers.
Otherwise select the first one.
+ MTControlCard.provider =
translationPreference || MTControlCard.providers[ 0 ];
}
} )
.fail( function ( response ) {
@@ -116,6 +124,17 @@
response.responseText
);
} );
+ }
+
+ /**
+ * Get the localStorage key for the MT preference
+ *
+ * @return {string} The storage key.
+ */
+ function getMTProviderStorageKey() {
+ return [
+ 'cxMTProvider', mw.cx.sourceLanguage,
mw.cx.targetLanguage
+ ].join( '-' );
}
/**
@@ -371,7 +390,6 @@
$providerItem.addClass( 'selected' );
// Set the global engine
- // TODO: This should be saved in a preference or a cookie
if ( MTControlCard.provider !== providerId ) {
MTControlCard.provider = providerId;
// Apply this choice to the current section.
@@ -383,6 +401,10 @@
// Must be an MT engine. Restore.
this.restoreTranslation();
}
+
+ // Save the current provider
+ mw.storage.set( getMTProviderStorageKey(), providerId );
+
}
// Set the main label
this.$providerSelectorTrigger.text( this.getProviderTitle(
providerId ) );
@@ -434,9 +456,17 @@
MTControlCard.prototype.buildProvidersMenu = function () {
var provider, items = [],
- nonDefaultMT, newProvider = false;
+ nonDefaultMT, translationPreference, newProvider =
false;
- if ( MTControlCard.providers && MTControlCard.providers.length
> 1 ) {
+ translationPreference = mw.storage.get(
getMTProviderStorageKey() );
+
+ if (
+ // If there are more than one provider
+ MTControlCard.providers &&
MTControlCard.providers.length > 1 &&
+ // If there is no stored preference or preference is
not a MT engine
+ ( translationPreference === null ||
+ translationOptions.indexOf(
translationPreference ) >= 0 )
+ ) {
nonDefaultMT = true;
// There are more MT options or non default MT
available. Announce.
this.$card.find( '.card__title-row' )
@@ -462,7 +492,7 @@
}
// Add available machine translation engines to the menu
for ( provider in items ) {
- if ( nonDefaultMT && [ sourceMT, disableMT, noMT
].indexOf( items[ provider ] ) < 0 ) {
+ if ( nonDefaultMT && translationOptions.indexOf( items[
provider ] ) < 0 ) {
newProvider = true;
} else {
newProvider = false;
--
To view, visit https://gerrit.wikimedia.org/r/275365
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ie13ea5c6c1911746888c67224ccee9212f5635dc
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/extensions/ContentTranslation
Gerrit-Branch: master
Gerrit-Owner: Santhosh <[email protected]>
Gerrit-Reviewer: Nikerabbit <[email protected]>
Gerrit-Reviewer: Santhosh <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits