From d6b8664009d738870aa3f0a4bd80e96abf6e6e59 Mon Sep 17 00:00:00 2001 From: Christian Kaisermann Date: Wed, 20 Nov 2019 22:21:36 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20`addMessagesTo`=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/client/index.ts | 1 + src/client/stores/dictionary.ts | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/client/index.ts b/src/client/index.ts index 0888603..219708a 100644 --- a/src/client/index.ts +++ b/src/client/index.ts @@ -9,6 +9,7 @@ export { $locale as locale, loadLocale as preloadLocale } from './stores/locale' export { $dictionary as dictionary, $locales as locales, + addMessagesTo, } from './stores/dictionary' export { $loading as loading } from './stores/loading' export { $format as format, $format as _, $format as t } from './stores/format' diff --git a/src/client/stores/dictionary.ts b/src/client/stores/dictionary.ts index c6aef6a..6599ee2 100644 --- a/src/client/stores/dictionary.ts +++ b/src/client/stores/dictionary.ts @@ -1,4 +1,5 @@ import { writable, derived } from 'svelte/store' +import merge from 'deepmerge' let dictionary: Record> @@ -15,8 +16,23 @@ function hasLocaleDictionary(locale: string) { return locale in dictionary } +function addMessagesTo(locale: string, ...partials: any[]) { + $dictionary.update(d => { + dictionary[locale] = merge.all( + [dictionary[locale] || {}].concat(partials) + ) + return d + }) +} + const $locales = derived([$dictionary], ([$dictionary]) => Object.keys($dictionary) ) -export { $dictionary, $locales, getDictionary, hasLocaleDictionary } +export { + $dictionary, + $locales, + getDictionary, + hasLocaleDictionary, + addMessagesTo, +}