-
Notifications
You must be signed in to change notification settings - Fork 8.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add REST API for getting translations of a language for a plugin
To be done: - Add algorithm to decide on the language for a plugin by comparing the accept languages from the REST call and the plugin supported languages - Add REST API tests
- Loading branch information
Showing
4 changed files
with
108 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,61 @@ | ||
import Boom from 'boom'; | ||
|
||
var i18n = require('./i18n'); | ||
var langParser = require('accept-language-parser'); | ||
|
||
const DEFAULT_LANGUAGE = 'en'; | ||
|
||
export default function (server) { | ||
|
||
server.route({ | ||
path: '/api/i18n/default', | ||
path: '/api/i18n/translations/{plugin}', | ||
method: 'GET', | ||
handler(req, reply) { | ||
reply('Hello World!'); | ||
var pluginName = req.params.plugin; | ||
var acceptLanguage = req.headers['accept-language']; | ||
var languages = langParser.parse(acceptLanguage); | ||
|
||
getPluginLanguageTranslations(pluginName, languages, function (err, translations) { | ||
if (err) { | ||
reply(Boom.internal(err)); | ||
} | ||
reply(translations); | ||
}); | ||
} | ||
}); | ||
|
||
}; | ||
|
||
function getPluginLanguageTranslations(pluginName, acceptLanguages, cb) { | ||
|
||
getPluginSupportedLanguage(pluginName, acceptLanguages, function (err, language) { | ||
if (err) { | ||
return cb (err); | ||
} | ||
|
||
if (!language) { | ||
language = DEFAULT_LANGUAGE; | ||
} | ||
|
||
i18n.getRegisteredPluginLanguageTranslations(pluginName, language, function (err, translationJson) { | ||
if (err) { | ||
return cb (err); | ||
} else { | ||
return cb (null, translationJson); | ||
} | ||
}); | ||
}); | ||
} | ||
|
||
function getPluginSupportedLanguage(pluginName, acceptLanguages, cb) { | ||
i18n.getRegisteredPluginLanguages(pluginName, function (err, languages) { | ||
if (err) { | ||
return cb (err); | ||
} | ||
|
||
//TODO: Algorithm which returns a languages based on the accept languages | ||
//from the client and languages supported by the plugin | ||
return cb (null, null); | ||
}); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters