Index: update_locales.py |
=================================================================== |
new file mode 100755 |
--- /dev/null |
+++ b/update_locales.py |
@@ -0,0 +1,70 @@ |
+#!/usr/bin/env python |
+# coding: utf-8 |
+# |
+# This Source Code is subject to the terms of the Mozilla Public License |
+# version 2.0 (the "License"). You can obtain a copy of the License at |
+# http://mozilla.org/MPL/2.0/. |
+ |
+"""Copies the locales from ABP for Chrome and prepares them for Opera""" |
+ |
+import os, shutil, sys |
+ |
+def remove(path): |
+ if os.path.exists(path): |
+ if os.path.isdir(path): |
+ shutil.rmtree(path) |
+ else: |
+ os.remove(path) |
+ |
+def map_locale(locale): |
+ return locale.lower().replace("_", "-") |
Wladimir Palant
2012/10/18 12:30:40
Actually, the correct mapping is a bit more compli
Felix Dahlke
2012/10/18 13:09:11
Done.
|
+ |
+def copy_messages(source, destination): |
+ messages_file_name = "messages.json" |
+ |
+ source_path = os.path.join(source, messages_file_name) |
+ source_file = open(source_path) |
+ messages = source_file.read() |
+ source_file.close() |
+ |
+ messages = messages.replace("Chrome", "Opera") |
Wladimir Palant
2012/10/18 12:30:40
LOL
Let's hope this doesn't have any unintended si
Felix Dahlke
2012/10/18 13:09:11
Right now it doesn't :) Maybe r"\bChrome\b" to be
|
+ |
+ dest_path = os.path.join(destination, messages_file_name) |
+ dest_file = open(dest_path, "w+") |
+ dest_file.write(messages) |
+ dest_file.close() |
+ |
+def write_locale(target_dir, locale): |
+ # We have to write the actual locale to a localised file because Opera doesn't |
+ # show the country part in navigator.language (only "de", not "de-de"). |
Wladimir Palant
2012/10/18 12:30:40
That isn't really the case. navigator.lenguage ret
Felix Dahlke
2012/10/18 13:09:11
I'm definitely using en-GB and navigator.language
|
+ locale_file = open(os.path.join(target_dir, "locale.js"), "w+"); |
+ locale_file.write('window.locale = "%s";\n' % locale); |
+ locale_file.close(); |
+ |
+def copy_locales(source, destination): |
+ for source_locale in os.listdir(source): |
+ source_locale_path = os.path.join(source, source_locale) |
+ if not os.path.isdir(source_locale_path): |
+ continue |
+ |
+ dest_locale = map_locale(source_locale) |
+ dest_locale_path = os.path.join(destination, dest_locale) |
+ |
+ os.mkdir(dest_locale_path) |
+ copy_messages(source_locale_path, dest_locale_path) |
+ write_locale(dest_locale_path, dest_locale) |
+ |
+def update_locales(): |
+ locales_dir = "locales" |
+ remove(locales_dir) |
+ os.mkdir(locales_dir) |
+ |
+ chrome_locales_dir = os.path.join("..", "adblockpluschrome", "_locales") |
+ if not os.path.exists(chrome_locales_dir): |
+ message = "Unable to find Chrome locales in %s" % chrome_locales_dir |
+ print >>sys.stderr, message |
+ |
+ copy_locales(chrome_locales_dir, locales_dir) |
+ |
+if __name__ == "__main__": |
+ update_locales() |