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 7 var binding = require('binding').Binding.create('i18n'); 8 9 var i18nNatives = requireNative('i18n'); 10 var GetL10nMessage = i18nNatives.GetL10nMessage; 11 var GetL10nUILanguage = i18nNatives.GetL10nUILanguage; 12 13 binding.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 41 exports.binding = binding.generate(); 42