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