aboutsummaryrefslogtreecommitdiff
path: root/desktop/onionshare/strings.py
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/onionshare/strings.py')
-rw-r--r--desktop/onionshare/strings.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/desktop/onionshare/strings.py b/desktop/onionshare/strings.py
new file mode 100644
index 00000000..55f56788
--- /dev/null
+++ b/desktop/onionshare/strings.py
@@ -0,0 +1,63 @@
+# -*- coding: utf-8 -*-
+"""
+OnionShare | https://onionshare.org/
+
+Copyright (C) 2014-2021 Micah Lee, et al. <micah@micahflee.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+import json
+import os
+
+strings = {}
+translations = {}
+
+
+def load_strings(common, locale_dir):
+ """
+ Loads translated strings and fallback to English
+ if the translation does not exist.
+ """
+ global strings, translations
+
+ # Load all translations
+ translations = {}
+ for locale in common.settings.available_locales:
+ filename = os.path.join(locale_dir, f"{locale}.json")
+ with open(filename, encoding="utf-8") as f:
+ translations[locale] = json.load(f)
+
+ # Build strings
+ default_locale = "en"
+ current_locale = common.settings.get("locale")
+ strings = {}
+ for s in translations[default_locale]:
+ if (
+ current_locale in translations
+ and s in translations[current_locale]
+ and translations[current_locale][s] != ""
+ ):
+ strings[s] = translations[current_locale][s]
+ else:
+ strings[s] = translations[default_locale][s]
+
+
+def translated(k):
+ """
+ Returns a translated string.
+ """
+ return strings[k]
+
+
+_ = translated