From 25cf80838b44da9b788f72099c876a8d09adb8d4 Mon Sep 17 00:00:00 2001 From: Deathamns Date: Tue, 2 Dec 2014 08:13:33 +0100 Subject: [PATCH 1/2] Safari: small locale improvements Since there is no API for localization in Safari, we read the locale files every time when an extension page opens. This commit adds a new file "make-locale-safari.py", which will make the size of the locale files smaller. --- platform/safari/Info.plist | 2 +- platform/safari/update_safariextz.plist | 2 +- platform/safari/vapi-common.js | 12 +++----- tools/make-locale-safari.py | 39 +++++++++++++++++++++++++ tools/make-safari.sh | 4 +++ 5 files changed, 49 insertions(+), 10 deletions(-) create mode 100644 tools/make-locale-safari.py diff --git a/platform/safari/Info.plist b/platform/safari/Info.plist index dab006b6f..c5291ca14 100644 --- a/platform/safari/Info.plist +++ b/platform/safari/Info.plist @@ -13,7 +13,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleShortVersionString - 0.7.2.0 + 0.8.1.2 CFBundleVersion 1 Chrome diff --git a/platform/safari/update_safariextz.plist b/platform/safari/update_safariextz.plist index f82911e17..c171e8689 100644 --- a/platform/safari/update_safariextz.plist +++ b/platform/safari/update_safariextz.plist @@ -10,7 +10,7 @@ Developer Identifier CFBundleShortVersionString - 0.7.0.11 + 0.8.1.2 CFBundleVersion 1 URL diff --git a/platform/safari/vapi-common.js b/platform/safari/vapi-common.js index f7f1a6405..505815b5c 100644 --- a/platform/safari/vapi-common.js +++ b/platform/safari/vapi-common.js @@ -77,9 +77,9 @@ vAPI.getURL = function(path) { // supported languages // first language is the default vAPI.i18nData = [ - "en", "ar", "cs", "da", "de", "el", "es", "et", "fi", "fr", "he", "hi", - "hr", "hu", "id", "it", "ja", "mr", "nb", "nl", "pl", "pt_BR", "pt_PT", - "ro", "ru", "sv", "tr", "uk", "vi", "zh_CN" + 'en', 'ar', 'cs', 'da', 'de', 'el', 'es', 'et', 'fi', 'fil', 'fr', 'he', + 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'mr', 'nb', 'nl', 'pl', 'pt_BR', + 'pt_PT', 'ro', 'ru', 'sv', 'tr', 'uk', 'vi', 'zh_CN' ]; vAPI.i18n = navigator.language.replace('-', '_'); @@ -96,14 +96,10 @@ setScriptDirection(vAPI.i18n); var xhr = new XMLHttpRequest; xhr.overrideMimeType('application/json;charset=utf-8'); -xhr.open('GET', './_locales/' + vAPI.i18n + '/messages.json', false); +xhr.open('GET', './_locales/' + vAPI.i18n + '.json', false); xhr.send(); vAPI.i18nData = JSON.parse(xhr.responseText); -for (var i18nKey in vAPI.i18nData) { - vAPI.i18nData[i18nKey] = vAPI.i18nData[i18nKey].message; -} - vAPI.i18n = function(s) { return this.i18nData[s] || s; }; diff --git a/tools/make-locale-safari.py b/tools/make-locale-safari.py new file mode 100644 index 000000000..62c819850 --- /dev/null +++ b/tools/make-locale-safari.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +import os +import json +import sys +from shutil import rmtree +from collections import OrderedDict + +if not sys.argv[1]: + raise SystemExit('Build dir missing.') + + +def mkdirs(path): + try: + os.makedirs(path) + finally: + return os.path.exists(path) + + +build_dir = os.path.abspath(sys.argv[1]) +locale_dir = os.path.join(build_dir, '_locales') + +for alpha2 in os.listdir(locale_dir): + locale_path = os.path.join(locale_dir, alpha2, 'messages.json') + with open(locale_path, encoding='utf-8') as f: + string_data = json.load(f, object_pairs_hook=OrderedDict) + + for string_name in string_data: + string_data[string_name] = string_data[string_name]['message'] + + rmtree(os.path.join(locale_dir, alpha2)) + + alpha2 = alpha2.replace('_', '-') + locale_path = os.path.join(locale_dir, alpha2 + '.json') + + mkdirs(os.path.join(locale_dir)) + + with open(locale_path, 'wt', encoding='utf-8', newline='\n') as f: + json.dump(string_data, f, ensure_ascii=False) diff --git a/tools/make-safari.sh b/tools/make-safari.sh index 89f89942a..1b9840af8 100644 --- a/tools/make-safari.sh +++ b/tools/make-safari.sh @@ -18,4 +18,8 @@ cp src/img/icon_128.png $DES/Icon.png cp platform/safari/*.js $DES/js/ cp platform/safari/Info.plist $DES/ cp platform/safari/Settings.plist $DES/ + +echo "*** uBlock_xpi: Generating locales" +python tools/make-locale-safari.py $DES/ + echo "*** uBlock.safariextension: Package done." From 326ed213b073d55b4fc54e4dda0b0340fef4c64a Mon Sep 17 00:00:00 2001 From: Deathamns Date: Mon, 8 Dec 2014 08:18:13 +0100 Subject: [PATCH 2/2] Safari: fix tooltips for dynamic filtering --- platform/safari/vapi-common.js | 8 ++++---- src/css/popup.css | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/platform/safari/vapi-common.js b/platform/safari/vapi-common.js index 505815b5c..4a607500e 100644 --- a/platform/safari/vapi-common.js +++ b/platform/safari/vapi-common.js @@ -36,7 +36,7 @@ self.vAPI = self.vAPI || {}; var setScriptDirection = function(language) { document.body.setAttribute( 'dir', - ~['ar', 'he', 'fa', 'ps', 'ur'].indexOf(language) ? 'rtl' : 'ltr' + ['ar', 'he', 'fa', 'ps', 'ur'].indexOf(language) !== -1 ? 'rtl' : 'ltr' ); }; @@ -78,11 +78,11 @@ vAPI.getURL = function(path) { // first language is the default vAPI.i18nData = [ 'en', 'ar', 'cs', 'da', 'de', 'el', 'es', 'et', 'fi', 'fil', 'fr', 'he', - 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'mr', 'nb', 'nl', 'pl', 'pt_BR', - 'pt_PT', 'ro', 'ru', 'sv', 'tr', 'uk', 'vi', 'zh_CN' + 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'mr', 'nb', 'nl', 'pl', 'pt-BR', + 'pt-PT', 'ro', 'ru', 'sv', 'tr', 'uk', 'vi', 'zh-CN' ]; -vAPI.i18n = navigator.language.replace('-', '_'); +vAPI.i18n = navigator.language; if (vAPI.i18nData.indexOf(vAPI.i18n) === -1) { vAPI.i18n = vAPI.i18n.slice(0, 2); diff --git a/src/css/popup.css b/src/css/popup.css index 62f8b11f5..3a832fd2e 100644 --- a/src/css/popup.css +++ b/src/css/popup.css @@ -84,14 +84,14 @@ p { background-color: #fffff4; border: 1px solid #888; border-radius: 5px; - bottom: 20vh; + bottom: 20%; box-shadow: 1px 1px 2px 0 rgba(0,0,0,0.8); display: none; font-size: small; - left: 8vw; + left: 8%; padding: 0.25em; position: fixed; - right: 8vw; + right: 8%; text-align: center; } .dynamicFiltering div:not(.blocked):hover > .tip:nth-of-type(1) {