gettext-universal 1.0.6 → 1.0.7

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.7",
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
@@ -14,7 +14,7 @@ class Config {
14
14
  const locale = match[1]
15
15
  const translations = requireContext(localeFile).default
16
16
 
17
- locales[locale] = translations
17
+ this.locales[locale] = translations
18
18
  }
19
19
  }
20
20
 
@@ -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,26 @@
1
+ import {digg} from "diggerize"
1
2
  import EventEmitter from "events"
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
8
  const eventEmitter = new EventEmitter()
8
9
  const TranslateContext = createContext()
9
10
 
10
- const WithTranslate = ({children, ...restProps}) => {
11
- const restPropsKeys = Object.keys(restProps)
11
+ const shared = {
12
+ locale: null
13
+ }
12
14
 
13
- if (restPropsKeys.length > 0) {
14
- throw new Error(`Unknown props given: ${restPropsKeys.join(", ")}`)
15
- }
15
+ const setLocale = (locale) => {
16
+ shared.locale = locale
17
+ eventEmitter.emit("changeLocale", {locale})
18
+ }
16
19
 
20
+ const WithTranslate = ({children, ...restProps}) => {
17
21
  const locales = useLocales()
18
- const [locale, setLocale] = useState()
22
+ const [locale, setLocale] = useState(digg(shared, "locale"))
23
+
19
24
  const actualLocales = useMemo(() => {
20
25
  const actualLocales = []
21
26
 
@@ -30,16 +35,20 @@ const WithTranslate = ({children, ...restProps}) => {
30
35
  return actualLocales
31
36
  }, [locale, locales])
32
37
 
33
- const contextData = useMemo(() => ({locales: actualLocales}), [actualLocales])
38
+ const contextData = useMemo(() => ({locale, locales: actualLocales}), [actualLocales])
34
39
 
35
40
  const onChangeLocale = useCallback(({locale}) => {
36
- console.log("onChangeLocale", args)
37
-
38
41
  setLocale(locale)
39
42
  }, [])
40
43
 
41
44
  useEventEmitter(eventEmitter, "changeLocale", onChangeLocale)
42
45
 
46
+ const restPropsKeys = Object.keys(restProps)
47
+
48
+ if (restPropsKeys.length > 0) {
49
+ throw new Error(`Unknown props given: ${restPropsKeys.join(", ")}`)
50
+ }
51
+
43
52
  return (
44
53
  <TranslateContext.Provider value={contextData}>
45
54
  {children}
@@ -48,12 +57,24 @@ const WithTranslate = ({children, ...restProps}) => {
48
57
  }
49
58
 
50
59
  const useTranslateExpo = () => {
60
+ const localeContext = useContext(TranslateContext)
51
61
  const locales = useLocales()
52
- let preferredLocales
53
62
 
54
- if (Array.isArray(locales)) {
55
- preferredLocales = locales?.map((localeData) => localeData.languageCode)
56
- }
63
+ const preferredLocales = useMemo(() => {
64
+ let preferredLocales = []
65
+
66
+ if (localeContext?.locale) {
67
+ preferredLocales.push(localeContext.locale)
68
+ }
69
+
70
+ if (Array.isArray(locales)) {
71
+ for (const localeData of locales) {
72
+ preferredLocales.push(localeData.languageCode)
73
+ }
74
+ }
75
+
76
+ return preferredLocales
77
+ }, [localeContext?.locale, locales])
57
78
 
58
79
  const currentTranslation = useCallback((msgId, args = {}) => {
59
80
  args.locales = preferredLocales
@@ -64,5 +85,5 @@ const useTranslateExpo = () => {
64
85
  return currentTranslation
65
86
  }
66
87
 
67
- export {WithTranslate}
88
+ export {setLocale, WithTranslate}
68
89
  export default useTranslateExpo