Home | History | Annotate | Download | only in resources
      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