Skip to content

Commit

Permalink
Revert "Remove usage of inline require"
Browse files Browse the repository at this point in the history
This reverts commit 5f7c795
  • Loading branch information
flexsurfer committed Jul 2, 2020
1 parent 1a6851e commit 2e7f421
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 42 deletions.
17 changes: 17 additions & 0 deletions src/mocks/js_dependencies.cljs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
(ns mocks.js-dependencies
(:require-macros [status-im.utils.slurp :refer [slurp]])
(:require [status-im.default-fleet :refer (default-fleets)]))

(def action-button #js {:default #js {:Item #js {}}})
Expand Down Expand Up @@ -206,4 +207,20 @@
"react-native-image-resizer" image-resizer
"react-native-haptic-feedback" react-native-haptic-feedback
"./fleets.js" default-fleets
"../translations/ar.json" (js/JSON.parse (slurp "./translations/ar.json"))
"../translations/de.json" (js/JSON.parse (slurp "./translations/de.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/pt_br.json" (js/JSON.parse (slurp "./translations/pt_br.json"))
"../translations/ru.json" (js/JSON.parse (slurp "./translations/ru.json"))
"../translations/tr.json" (js/JSON.parse (slurp "./translations/tr.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))
21 changes: 0 additions & 21 deletions src/status_im/i18n.clj

This file was deleted.

71 changes: 58 additions & 13 deletions src/status_im/i18n_resources.cljs
Original file line number Diff line number Diff line change
@@ -1,21 +1,66 @@
(ns status-im.i18n-resources
(:require-macros [status-im.i18n :as i18n])
(:require [status-im.utils.types :as types]
[clojure.string :as string]
(:require [clojure.string :as string]
["i18n-js" :as i18n-js]
["react-native-languages" :default react-native-languages]))

(def default-device-language
(keyword (.-language react-native-languages)))

;; Update js_dependencies.cljs
(def languages [:ar :de :en :es :es_419 :fil :fr :id :in :it :ko :pt_BR :ru :tr :zh :zh_Hant :zh_TW])

(defonce loaded-languages
(atom
(conj #{:en} default-device-language)))

(def translations
{:ar (js/require "../translations/ar.json")
:de (js/require "../translations/de.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")
:pt_BR (js/require "../translations/pt_br.json")
:ru (js/require "../translations/ru.json")
:tr (js/require "../translations/tr.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
(def translations-by-locale
(->> (i18n/translations [:ar :de :en :es :es_419 :fil :fr :id :in :it :ko :pt_BR :ru :tr :zh :zh_Hant :zh_TW])
(map (fn [[k t]]
(let [k' (-> (name k)
(string/replace "_" "-")
keyword)]
[k' (types/json->clj t)])))
(into {})))

;; API compatibility
(defn load-language [_])
(cond->
{:en (require-translation :en)
(not= :en default-device-language)
(assoc default-device-language
(require-translation (-> (name default-device-language)
(string/replace "-" "_")
keyword)))}))

(defn load-language [lang]
(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 changes: 4 additions & 3 deletions src/status_im/i18n_test.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@
[clojure.string :as string]))

;; 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 ::labels (spec/coll-of ::label :kind set? :into #{}))

(defn labels-for-all-locales []
(->> i18n-resources/translations-by-locale
(mapcat #(-> % val keys))
(mapcat #(-> % val (js->clj :keywordize-keys true) keys))
set))

;; checkpoints
Expand Down Expand Up @@ -1029,7 +1030,7 @@
(spec/def ::locales (spec/coll-of ::locale :kind set? :into #{}))

(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]
(let [locale-labels (locale->labels locale)
Expand Down
7 changes: 2 additions & 5 deletions src/status_im/node/core.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
[status-im.utils.config :as config]
[status-im.utils.fx :as fx]
[status-im.utils.platform :as utils.platform]
[status-im.utils.types :as types])
(:require-macros [status-im.utils.slurp :refer [slurp]]))
[status-im.utils.types :as types]))

(defn- add-custom-bootnodes [config network all-bootnodes]
(let [bootnodes (as-> all-bootnodes $
Expand Down Expand Up @@ -70,10 +69,8 @@
[limit nodes]
(take limit (shuffle nodes)))

(def default-fleets (slurp "resources/config/fleets.json"))

(defn fleets [{:keys [custom-fleets]}]
(as-> [default-fleets] $
(as-> [(js/require "./fleets.js")] $
(mapv #(:fleets (types/json->clj %)) $)
(conj $ custom-fleets)
(reduce merge $)))
Expand Down

0 comments on commit 2e7f421

Please sign in to comment.