1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Custom binding for the i18n API. 6 7var binding = require('binding').Binding.create('i18n'); 8 9var i18nNatives = requireNative('i18n'); 10var GetL10nMessage = i18nNatives.GetL10nMessage; 11var GetL10nUILanguage = i18nNatives.GetL10nUILanguage; 12 13binding.registerCustomHook(function(bindingsAPI, extensionId) { 14 var apiFunctions = bindingsAPI.apiFunctions; 15 16 apiFunctions.setUpdateArgumentsPreValidate('getMessage', function() { 17 var args = $Array.slice(arguments); 18 19 // The first argument is the message, and should be a string. 20 var message = args[0]; 21 if (typeof(message) !== 'string') { 22 console.warn(extensionId + ': the first argument to getMessage should ' + 23 'be type "string", was ' + message + 24 ' (type "' + typeof(message) + '")'); 25 args[0] = String(message); 26 } 27 28 return args; 29 }); 30 31 apiFunctions.setHandleRequest('getMessage', 32 function(messageName, substitutions) { 33 return GetL10nMessage(messageName, substitutions, extensionId); 34 }); 35 36 apiFunctions.setHandleRequest('getUILanguage', function() { 37 return GetL10nUILanguage(); 38 }); 39}); 40 41exports.binding = binding.generate(); 42