|
@@ -154,31 +154,37 @@
|
|
|
(task-util/print-table (map #(hash-map :invalid-key %) expected-only)))
|
|
|
(System/exit 1)))))
|
|
|
|
|
|
-(defn validate-translations
|
|
|
- "Runs multiple translation validations that fail fast if one of them is invalid"
|
|
|
- []
|
|
|
- (validate-non-default-languages)
|
|
|
- (validate-ui-translations-are-used))
|
|
|
+(def allowed-duplicates
|
|
|
+ "Allows certain keys in a language to have the same translation
|
|
|
+ as English. Rare but it does happen"
|
|
|
+ {:fr #{:port}})
|
|
|
|
|
|
-(defn list-duplicates
|
|
|
- "Lists translations that are the same as the one in English"
|
|
|
- [& args]
|
|
|
+(defn- validate-languages-dont-have-duplicates
|
|
|
+ "Looks up duplicates for all languages"
|
|
|
+ []
|
|
|
(let [dicts (get-dicts)
|
|
|
en-dicts (dicts :en)
|
|
|
- lang (or (keyword (first args))
|
|
|
- (task-util/print-usage "LOCALE"))
|
|
|
- lang-dicts (dicts lang)
|
|
|
invalid-dicts
|
|
|
- (sort-by
|
|
|
- :translation-key
|
|
|
- (keep
|
|
|
- #(when (= (en-dicts %) (lang-dicts %))
|
|
|
- {:translation-key %
|
|
|
- :duplicate-value (shorten (lang-dicts %) 70)})
|
|
|
- (keys lang-dicts)))]
|
|
|
+ (->> (dissoc dicts :en)
|
|
|
+ (mapcat
|
|
|
+ (fn [[lang lang-dicts]]
|
|
|
+ (keep
|
|
|
+ #(when (= (en-dicts %) (lang-dicts %))
|
|
|
+ {:translation-key %
|
|
|
+ :lang lang
|
|
|
+ :duplicate-value (shorten (lang-dicts %) 70)})
|
|
|
+ (keys (apply dissoc lang-dicts (allowed-duplicates lang))))))
|
|
|
+ (sort-by (juxt :lang :translation-key)))]
|
|
|
(if (empty? invalid-dicts)
|
|
|
- (println "No duplicated keys found!")
|
|
|
+ (println "All languages have no duplicate English values!")
|
|
|
(do
|
|
|
- (println "Keys with duplicate values found:")
|
|
|
+ (println "These translations keys are invalid because they are just copying the English value:")
|
|
|
(task-util/print-table invalid-dicts)
|
|
|
(System/exit 1)))))
|
|
|
+
|
|
|
+(defn validate-translations
|
|
|
+ "Runs multiple translation validations that fail fast if one of them is invalid"
|
|
|
+ []
|
|
|
+ (validate-non-default-languages)
|
|
|
+ (validate-ui-translations-are-used)
|
|
|
+ (validate-languages-dont-have-duplicates))
|