gettext-universal 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import Po2Mjs from "../src/po2mjs.js"
3
+ import Po2Js from "../src/po2js.js"
4
4
 
5
5
  const processArgs = process.argv.slice(2)
6
6
  let directory
@@ -15,6 +15,6 @@ for (let i = 0; i < processArgs.length; i++) {
15
15
  }
16
16
  }
17
17
 
18
- const po2Mjs = new Po2Mjs({directory})
18
+ const po2Js = new Po2Js({directory})
19
19
 
20
- await po2Mjs.run()
20
+ await po2Js.run()
package/package.json CHANGED
@@ -4,11 +4,11 @@
4
4
  },
5
5
  "name": "gettext-universal",
6
6
  "type": "module",
7
- "version": "1.0.6",
7
+ "version": "1.0.8",
8
8
  "main": "index.js",
9
9
  "scripts": {
10
10
  "gettext-universal": "node bin/gettext-universal.js",
11
- "po2mjs": "node bin/po2mjs.js",
11
+ "po2js": "node bin/po2js.js",
12
12
  "test": "jasmine"
13
13
  },
14
14
  "repository": {
package/src/config.js CHANGED
@@ -1,3 +1,5 @@
1
+ import events from "./events.js"
2
+
1
3
  class Config {
2
4
  constructor() {
3
5
  this.locales = {}
@@ -14,7 +16,7 @@ class Config {
14
16
  const locale = match[1]
15
17
  const translations = requireContext(localeFile).default
16
18
 
17
- locales[locale] = translations
19
+ this.locales[locale] = translations
18
20
  }
19
21
  }
20
22
 
@@ -28,6 +30,7 @@ class Config {
28
30
 
29
31
  setLocale(locale) {
30
32
  this.locale = locale
33
+ events.emit("onLocaleChange", {locale})
31
34
  }
32
35
  }
33
36
 
package/src/events.js ADDED
@@ -0,0 +1,5 @@
1
+ import EventEmitter from "events"
2
+
3
+ const eventEmitter = new EventEmitter()
4
+
5
+ export default eventEmitter
@@ -1,7 +1,7 @@
1
1
  import {promises as fs} from "fs"
2
2
  import path from "path"
3
3
 
4
- export default class Po2Mjs {
4
+ export default class Po2Js {
5
5
  constructor({directory}) {
6
6
  this.directory = directory
7
7
  }
@@ -1,21 +1,16 @@
1
- import EventEmitter from "events"
1
+ import config from "./config.js"
2
+ import events from "./events.js"
2
3
  import translate from "./translate.js"
3
- import {createContext, useCallback, useMemo, useState} from "react"
4
+ import {createContext, useCallback, useContext, useMemo, useState} from "react"
4
5
  import useEventEmitter from "@kaspernj/api-maker/build/use-event-emitter"
5
6
  import {useLocales} from "expo-localization"
6
7
 
7
- const eventEmitter = new EventEmitter()
8
8
  const TranslateContext = createContext()
9
9
 
10
10
  const WithTranslate = ({children, ...restProps}) => {
11
- const restPropsKeys = Object.keys(restProps)
12
-
13
- if (restPropsKeys.length > 0) {
14
- throw new Error(`Unknown props given: ${restPropsKeys.join(", ")}`)
15
- }
16
-
17
11
  const locales = useLocales()
18
- const [locale, setLocale] = useState()
12
+ const [locale, setLocale] = useState(config.getLocale())
13
+
19
14
  const actualLocales = useMemo(() => {
20
15
  const actualLocales = []
21
16
 
@@ -30,15 +25,19 @@ const WithTranslate = ({children, ...restProps}) => {
30
25
  return actualLocales
31
26
  }, [locale, locales])
32
27
 
33
- const contextData = useMemo(() => ({locales: actualLocales}), [actualLocales])
28
+ const contextData = useMemo(() => ({locale, locales: actualLocales}), [actualLocales])
34
29
 
35
30
  const onChangeLocale = useCallback(({locale}) => {
36
- console.log("onChangeLocale", args)
37
-
38
31
  setLocale(locale)
39
32
  }, [])
40
33
 
41
- useEventEmitter(eventEmitter, "changeLocale", onChangeLocale)
34
+ useEventEmitter(events, "onLocaleChange", onChangeLocale)
35
+
36
+ const restPropsKeys = Object.keys(restProps)
37
+
38
+ if (restPropsKeys.length > 0) {
39
+ throw new Error(`Unknown props given: ${restPropsKeys.join(", ")}`)
40
+ }
42
41
 
43
42
  return (
44
43
  <TranslateContext.Provider value={contextData}>
@@ -48,12 +47,24 @@ const WithTranslate = ({children, ...restProps}) => {
48
47
  }
49
48
 
50
49
  const useTranslateExpo = () => {
50
+ const localeContext = useContext(TranslateContext)
51
51
  const locales = useLocales()
52
- let preferredLocales
53
52
 
54
- if (Array.isArray(locales)) {
55
- preferredLocales = locales?.map((localeData) => localeData.languageCode)
56
- }
53
+ const preferredLocales = useMemo(() => {
54
+ let preferredLocales = []
55
+
56
+ if (localeContext?.locale) {
57
+ preferredLocales.push(localeContext.locale)
58
+ }
59
+
60
+ if (Array.isArray(locales)) {
61
+ for (const localeData of locales) {
62
+ preferredLocales.push(localeData.languageCode)
63
+ }
64
+ }
65
+
66
+ return preferredLocales
67
+ }, [localeContext?.locale, locales])
57
68
 
58
69
  const currentTranslation = useCallback((msgId, args = {}) => {
59
70
  args.locales = preferredLocales