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.
- package/bin/{po2mjs.js → po2js.js} +3 -3
- package/package.json +2 -2
- package/src/config.js +1 -1
- package/src/{po2mjs.js → po2js.js} +1 -1
- package/src/use-translate-expo.js +36 -15
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import
|
|
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
|
|
18
|
+
const po2Js = new Po2Js({directory})
|
|
19
19
|
|
|
20
|
-
await
|
|
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.
|
|
7
|
+
"version": "1.0.7",
|
|
8
8
|
"main": "index.js",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"gettext-universal": "node bin/gettext-universal.js",
|
|
11
|
-
"
|
|
11
|
+
"po2js": "node bin/po2js.js",
|
|
12
12
|
"test": "jasmine"
|
|
13
13
|
},
|
|
14
14
|
"repository": {
|
package/src/config.js
CHANGED
|
@@ -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
|
|
11
|
-
|
|
11
|
+
const shared = {
|
|
12
|
+
locale: null
|
|
13
|
+
}
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
55
|
-
preferredLocales =
|
|
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
|