1 // Copyright (c) 2012 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 12 binding.registerCustomHook(function(bindingsAPI, extensionId) { 13 var apiFunctions = bindingsAPI.apiFunctions; 14 15 apiFunctions.setUpdateArgumentsPreValidate('getMessage', function() { 16 var args = $Array.slice(arguments); 17 18 // The first argument is the message, and should be a string. 19 var message = args[0]; 20 if (typeof(message) !== 'string') { 21 console.warn(extensionId + ': the first argument to getMessage should ' + 22 'be type "string", was ' + message + 23 ' (type "' + typeof(message) + '")'); 24 args[0] = String(message); 25 } 26 27 return args; 28 }); 29 30 apiFunctions.setHandleRequest('getMessage', 31 function(messageName, substitutions) { 32 return GetL10nMessage(messageName, substitutions, extensionId); 33 }); 34 }); 35 36 exports.binding = binding.generate(); 37