| Index: ext/common.js | 
| diff --git a/ext/common.js b/ext/common.js | 
| index c00cfffac710285aeef7b16823cd952067c7ea4c..ae0a12ca9a466bcd1424d37759ca6181a920264f 100644 | 
| --- a/ext/common.js | 
| +++ b/ext/common.js | 
| @@ -17,6 +17,10 @@ | 
|  | 
| (function(global) | 
| { | 
| +  const Cu = Components.utils; | 
| + | 
| +  let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); | 
| + | 
| if (!global.ext) | 
| global.ext = {}; | 
|  | 
| @@ -82,6 +86,30 @@ | 
| } | 
| }; | 
|  | 
| +  let pageName = "global"; | 
| +  if (typeof location !== "undefined") | 
| +    pageName = location.pathname.replace(/.*\//, "").replace(/\..*?$/, ""); | 
| + | 
| +  let stringBundle = Services.strings.createBundle( | 
| +    "chrome://adblockplus/locale/" + pageName + ".properties?" + Math.random()); | 
| + | 
| +  global.ext.i18n = { | 
| +    getMessage(key, args) | 
| +    { | 
| +      try { | 
| +        return stringBundle.GetStringFromName(key); | 
| +      } | 
| +      catch(e) | 
| +      { | 
| +        // Don't report errors for special strings, these are expected to be | 
| +        // missing. | 
| +        if (key[0] != "@") | 
| +          Cu.reportError(e); | 
| +        return ""; | 
| +      } | 
| +    } | 
| +  }; | 
| + | 
| if (typeof exports == "object") | 
| exports = global.ext; | 
| })(this); | 
|  |