diff --git a/src/js/app/index.js b/src/js/app/index.js index 69e1fdce..072b7945 100644 --- a/src/js/app/index.js +++ b/src/js/app/index.js @@ -1,6 +1,7 @@ var Backbone = require('backbone'); var EventEmitter = require('events').EventEmitter; var React = require('react'); +var _ = require('underscore'); var assign = require('object-assign'); var util = require('../util'); @@ -86,6 +87,22 @@ var vcsModeRefresh = function(eventData) { $('body').toggleClass('hgMode', !isGit); }; +var insertAlternateLinks = function(pageId) { + // For now pageId is null, which would link to the main page. + // In future if pageId is provided this method should link to a specific page + + // The value of the hreflang attribute identifies the language (in ISO 639-1 format) + // and optionally a region (in ISO 3166-1 Alpha 2 format) of an alternate URL + var altLinks = _.map(LocaleStore.getSupportedLocales(), function(langCode) { + var url = "https://learngitbranching.js.org/?locale=" + langCode; + return ''; + }); + var defaultUrl = "https://learngitbranching.js.org/?locale=" + LocaleStore.getDefaultLocale(); + altLinks.push(''); + $('head').prepend(altLinks); + +}; + var intlRefresh = function() { if (!window.$) { return; } $('span.intl-aware').each(function(i, el) { @@ -249,6 +266,8 @@ var initDemo = function(sandbox) { tryLocaleDetect(); } + insertAlternateLinks(); + if (params.command) { var command = unescape(params.command); sandbox.mainVis.customEvents.on('gitEngineReady', function() { @@ -328,4 +347,3 @@ exports.getLevelDropdown = function() { }; exports.init = init; - diff --git a/src/js/stores/LocaleStore.js b/src/js/stores/LocaleStore.js index 3b1a27b4..227bdd67 100644 --- a/src/js/stores/LocaleStore.js +++ b/src/js/stores/LocaleStore.js @@ -3,6 +3,7 @@ var AppConstants = require('../constants/AppConstants'); var AppDispatcher = require('../dispatcher/AppDispatcher'); var EventEmitter = require('events').EventEmitter; +var _ = require('underscore'); var assign = require('object-assign'); @@ -30,6 +31,8 @@ var headerLocaleMap = { 'pt-BR': 'pt_BR' }; +var supportedLocalesList = _.values(langLocaleMap).concat(_.values(headerLocaleMap)); + function _getLocaleFromHeader(langString) { var languages = langString.split(','); var desiredLocale; @@ -73,6 +76,10 @@ AppConstants.StoreSubscribePrototype, return _locale; }, + getSupportedLocales: function() { + return assign({}, supportedLocalesList); + }, + dispatchToken: AppDispatcher.register(function(payload) { var action = payload.action; var shouldInform = false;