requiring translations inline
Signed-off-by: yenda <eric@status.im>
This commit is contained in:
parent
86b89ebb5c
commit
abfe0869f3
|
@ -59,7 +59,7 @@ in stdenv.mkDerivation rec {
|
||||||
filter = lib.mkFilter {
|
filter = lib.mkFilter {
|
||||||
root = path;
|
root = path;
|
||||||
include = [
|
include = [
|
||||||
"mobile/js_files.*" "resources/.*"
|
"mobile/js_files.*" "resources/.*" "translations/.*"
|
||||||
"modules/react-native-status/android.*"
|
"modules/react-native-status/android.*"
|
||||||
envFileName "VERSION" ".watchmanconfig"
|
envFileName "VERSION" ".watchmanconfig"
|
||||||
"status-go-version.json" "react-native.config.js"
|
"status-go-version.json" "react-native.config.js"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
(ns mocks.js-dependencies
|
(ns mocks.js-dependencies
|
||||||
|
(:require-macros [status-im.utils.slurp :refer [slurp]])
|
||||||
(:require [status-im.default-fleet :refer (default-fleets)]))
|
(:require [status-im.default-fleet :refer (default-fleets)]))
|
||||||
|
|
||||||
(def action-button #js {:default #js {:Item #js {}}})
|
(def action-button #js {:default #js {:Item #js {}}})
|
||||||
|
@ -190,4 +191,17 @@
|
||||||
"react-native-mail" react-native-mail
|
"react-native-mail" react-native-mail
|
||||||
"react-native-image-resizer" image-resizer
|
"react-native-image-resizer" image-resizer
|
||||||
"./fleets.js" default-fleets
|
"./fleets.js" default-fleets
|
||||||
|
"../translations/ar.json" (js/JSON.parse (slurp "./translations/ar.json"))
|
||||||
|
"../translations/en.json" (js/JSON.parse (slurp "./translations/en.json"))
|
||||||
|
"../translations/es.json" (js/JSON.parse (slurp "./translations/es.json"))
|
||||||
|
"../translations/es_419.json" (js/JSON.parse (slurp "./translations/es_419.json"))
|
||||||
|
"../translations/fil.json" (js/JSON.parse (slurp "./translations/fil.json"))
|
||||||
|
"../translations/fr.json" (js/JSON.parse (slurp "./translations/fr.json"))
|
||||||
|
"../translations/id.json" (js/JSON.parse (slurp "./translations/id.json"))
|
||||||
|
"../translations/it.json" (js/JSON.parse (slurp "./translations/it.json"))
|
||||||
|
"../translations/ko.json" (js/JSON.parse (slurp "./translations/ko.json"))
|
||||||
|
"../translations/ru.json" (js/JSON.parse (slurp "./translations/ru.json"))
|
||||||
|
"../translations/zh.json" (js/JSON.parse (slurp "./translations/zh.json"))
|
||||||
|
"../translations/zh_hant.json" (js/JSON.parse (slurp "./translations/zh_hant.json"))
|
||||||
|
"../translations/zh_TW.json" (js/JSON.parse (slurp "./translations/zh_TW.json"))
|
||||||
nil))
|
nil))
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(ns status-im.bootnode.core-test
|
(ns status-im.bootnodes.core-test
|
||||||
(:require [cljs.test :refer-macros [deftest is testing]]
|
(:require [cljs.test :refer-macros [deftest is testing]]
|
||||||
[status-im.bootnodes.core :as model]))
|
[status-im.bootnodes.core :as model]))
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(ns status-im.contacts.db-test
|
(ns status-im.contact.db-test
|
||||||
(:require [cljs.test :refer-macros [deftest is testing]]
|
(:require [cljs.test :refer-macros [deftest is testing]]
|
||||||
[status-im.utils.gfycat.core :as gfycat]
|
[status-im.utils.gfycat.core :as gfycat]
|
||||||
[status-im.utils.identicon :as identicon]
|
[status-im.utils.identicon :as identicon]
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
(ns status-im.i18n
|
|
||||||
(:require [clojure.string :as string]))
|
|
||||||
|
|
||||||
(defn read-file [f]
|
|
||||||
(when (.isFile f)
|
|
||||||
(let [locale (-> f
|
|
||||||
.getName
|
|
||||||
(string/split #"\.")
|
|
||||||
first)
|
|
||||||
content (slurp f)]
|
|
||||||
[(keyword locale) content])))
|
|
||||||
|
|
||||||
(defn read-translations []
|
|
||||||
(->>
|
|
||||||
(java.io.File. "translations")
|
|
||||||
file-seq
|
|
||||||
(keep read-file)
|
|
||||||
vec))
|
|
||||||
|
|
||||||
(defmacro translations [languages]
|
|
||||||
(select-keys (into {} (read-translations)) languages))
|
|
|
@ -1,21 +1,63 @@
|
||||||
(ns status-im.i18n-resources
|
(ns status-im.i18n-resources
|
||||||
(:require-macros [status-im.i18n :as i18n])
|
(:require [clojure.string :as string]
|
||||||
(:require [status-im.utils.types :as types]
|
["i18n-js" :as i18n-js]
|
||||||
[clojure.string :as string]
|
|
||||||
["react-native-languages" :default react-native-languages]))
|
["react-native-languages" :default react-native-languages]))
|
||||||
|
|
||||||
(def default-device-language
|
(def default-device-language
|
||||||
(keyword (.-language react-native-languages)))
|
(keyword (.-language react-native-languages)))
|
||||||
|
|
||||||
|
(def languages [:ar :en :es :es_419 :fil :fr :id :in :it :ko :ru :zh :zh_Hant :zh_TW])
|
||||||
|
|
||||||
|
(defonce loaded-languages
|
||||||
|
(atom
|
||||||
|
(conj #{:en} default-device-language)))
|
||||||
|
|
||||||
|
(def translations
|
||||||
|
{
|
||||||
|
:ar (js/require "../translations/ar.json")
|
||||||
|
:en (js/require "../translations/en.json")
|
||||||
|
:es (js/require "../translations/es.json")
|
||||||
|
:es_419 (js/require "../translations/es_419.json")
|
||||||
|
:fil (js/require "../translations/fil.json")
|
||||||
|
:fr (js/require "../translations/fr.json")
|
||||||
|
:id (js/require "../translations/id.json")
|
||||||
|
:in (js/require "../translations/id.json")
|
||||||
|
:it (js/require "../translations/it.json")
|
||||||
|
:ko (js/require "../translations/ko.json")
|
||||||
|
:ru (js/require "../translations/ru.json")
|
||||||
|
:zh (js/require "../translations/zh.json")
|
||||||
|
:zh_Hant (js/require "../translations/zh_hant.json")
|
||||||
|
:zh_TW (js/require "../translations/zh_TW.json")})
|
||||||
|
|
||||||
|
(defn valid-language [lang]
|
||||||
|
(if (contains? translations lang)
|
||||||
|
(keyword lang)
|
||||||
|
(let [parts (string/split (name lang) #"[\-\_]")
|
||||||
|
short-lang (keyword (str (first parts) "_" (second parts)))
|
||||||
|
shortest-lang (keyword (first parts))]
|
||||||
|
(if (and (> (count parts) 2) (contains? translations short-lang))
|
||||||
|
short-lang
|
||||||
|
(when (contains? translations shortest-lang)
|
||||||
|
shortest-lang)))))
|
||||||
|
|
||||||
|
(defn require-translation [lang-key]
|
||||||
|
(when-let [lang (valid-language (keyword lang-key))]
|
||||||
|
(get translations lang)))
|
||||||
|
|
||||||
;; translations
|
;; translations
|
||||||
(def translations-by-locale
|
(def translations-by-locale
|
||||||
(->> (i18n/translations [:ar :en :es :es_419 :fil :fr :it :ko :ru :in :id :tr :zh :zh_Hant :zh_TW])
|
(cond->
|
||||||
(map (fn [[k t]]
|
{:en (require-translation :en)}
|
||||||
(let [k' (-> (name k)
|
(not= :en default-device-language)
|
||||||
(string/replace "_" "-")
|
(assoc default-device-language
|
||||||
keyword)]
|
(require-translation (-> (name default-device-language)
|
||||||
[k' (types/json->clj t)])))
|
(string/replace "-" "_")
|
||||||
(into {})))
|
keyword)))))
|
||||||
|
|
||||||
;; API compatibility
|
(defn load-language [lang]
|
||||||
(defn load-language [_])
|
(when-let [lang-key (valid-language (keyword lang))]
|
||||||
|
(when-not (contains? @loaded-languages lang-key)
|
||||||
|
(aset (.-translations i18n-js)
|
||||||
|
lang
|
||||||
|
(require-translation lang-key))
|
||||||
|
(swap! loaded-languages conj lang-key))))
|
||||||
|
|
|
@ -7,14 +7,15 @@
|
||||||
[clojure.string :as string]))
|
[clojure.string :as string]))
|
||||||
|
|
||||||
;; english as source of truth
|
;; english as source of truth
|
||||||
(def labels (set (keys (:en i18n-resources/translations-by-locale))))
|
(def labels (set (keys (js->clj (:en i18n-resources/translations-by-locale)
|
||||||
|
:keywordize-keys true))))
|
||||||
|
|
||||||
(spec/def ::label labels)
|
(spec/def ::label labels)
|
||||||
(spec/def ::labels (spec/coll-of ::label :kind set? :into #{}))
|
(spec/def ::labels (spec/coll-of ::label :kind set? :into #{}))
|
||||||
|
|
||||||
(defn labels-for-all-locales []
|
(defn labels-for-all-locales []
|
||||||
(->> i18n-resources/translations-by-locale
|
(->> i18n-resources/translations-by-locale
|
||||||
(mapcat #(-> % val keys))
|
(mapcat #(-> % val (js->clj :keywordize-keys true) keys))
|
||||||
set))
|
set))
|
||||||
|
|
||||||
;; checkpoints
|
;; checkpoints
|
||||||
|
@ -1030,7 +1031,7 @@
|
||||||
(spec/def ::locales (spec/coll-of ::locale :kind set? :into #{}))
|
(spec/def ::locales (spec/coll-of ::locale :kind set? :into #{}))
|
||||||
|
|
||||||
(defn locale->labels [locale]
|
(defn locale->labels [locale]
|
||||||
(-> i18n-resources/translations-by-locale (get locale) keys set))
|
(-> i18n-resources/translations-by-locale (get locale) (js->clj :keywordize-keys true) keys set))
|
||||||
|
|
||||||
(defn locale->checkpoint [locale]
|
(defn locale->checkpoint [locale]
|
||||||
(let [locale-labels (locale->labels locale)
|
(let [locale-labels (locale->labels locale)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(ns status-im.multiaccount.login.data-test)
|
(ns status-im.multiaccounts.login.data-test)
|
||||||
|
|
||||||
(def all-contacts
|
(def all-contacts
|
||||||
[{:last-updated 1547185503000
|
[{:last-updated 1547185503000
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
(ns status-im.multiaccount.login.flow-test
|
(ns status-im.multiaccounts.login.flow-test
|
||||||
"The main purpose of these tests is to signal that some steps of the sign in
|
"The main purpose of these tests is to signal that some steps of the sign in
|
||||||
flow has been changed. Such changes should be reflected in both these tests
|
flow has been changed. Such changes should be reflected in both these tests
|
||||||
and documents which describe the whole \"sign in\" flow."
|
and documents which describe the whole \"sign in\" flow."
|
||||||
(:require [cljs.test :refer-macros [deftest is testing]]
|
(:require [cljs.test :refer-macros [deftest is testing]]
|
||||||
[status-im.ethereum.core :as ethereum]
|
[status-im.ethereum.core :as ethereum]
|
||||||
[status-im.ethereum.json-rpc :as json-rpc]
|
[status-im.ethereum.json-rpc :as json-rpc]
|
||||||
[status-im.multiaccount.login.data-test :as data]
|
[status-im.multiaccounts.login.data-test :as data]
|
||||||
[status-im.multiaccounts.login.core :as login.core]))
|
[status-im.multiaccounts.login.core :as login.core]))
|
||||||
|
|
||||||
(deftest on-password-input-submitted
|
(deftest on-password-input-submitted
|
||||||
|
|
Loading…
Reference in New Issue