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.
- package/bin/{po2mjs.js → po2js.js} +3 -3
- package/package.json +2 -2
- package/src/config.js +4 -1
- package/src/events.js +5 -0
- package/src/{po2mjs.js → po2js.js} +1 -1
- package/src/use-translate-expo.js +29 -18
|
@@ -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.8",
|
|
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,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
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
import
|
|
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(
|
|
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
|
-
|
|
55
|
-
preferredLocales =
|
|
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
|