locon 1.4.6 → 1.5.0
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/README.md +496 -36
- package/dist/index.d.ts +187 -10
- package/dist/index.js +510 -75
- package/package.json +27 -10
- package/skills/locon-sync/SKILL.md +158 -0
- package/skills/locon-sync/agents/openai.yaml +4 -0
- package/skills/locon-sync/scripts/check-locon-assets.mjs +594 -0
- package/skills/locon-sync/scripts/write_locale.py +229 -0
- package/dist/components/LText.d.mts +0 -10
- package/dist/components/LText.d.ts +0 -10
- package/dist/components/LText.js +0 -41
- package/dist/components/LText.mjs +0 -11
- package/dist/hooks/useLocon.d.mts +0 -6
- package/dist/hooks/useLocon.d.ts +0 -6
- package/dist/hooks/useLocon.js +0 -30
- package/dist/hooks/useLocon.mjs +0 -10
- package/dist/index.d.mts +0 -19
- package/dist/index.mjs +0 -104
- package/dist/types/Assets.d.mts +0 -3
- package/dist/types/Assets.d.ts +0 -3
- package/dist/types/Assets.js +0 -16
- package/dist/types/Assets.mjs +0 -0
- package/dist/types/LoconContext.d.mts +0 -12
- package/dist/types/LoconContext.d.ts +0 -12
- package/dist/types/LoconContext.js +0 -16
- package/dist/types/LoconContext.mjs +0 -0
- package/dist/utils/getSystemLanguage.d.mts +0 -7
- package/dist/utils/getSystemLanguage.d.ts +0 -7
- package/dist/utils/getSystemLanguage.js +0 -125
- package/dist/utils/getSystemLanguage.mjs +0 -105
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var getSystemLanguage_exports = {};
|
|
20
|
-
__export(getSystemLanguage_exports, {
|
|
21
|
-
default: () => getSystemLanguage_default
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(getSystemLanguage_exports);
|
|
24
|
-
function getSystemLanguage(availableLocales) {
|
|
25
|
-
if (!availableLocales?.length) return null;
|
|
26
|
-
try {
|
|
27
|
-
try {
|
|
28
|
-
const RNLocalize = require("react-native-localize");
|
|
29
|
-
if (typeof RNLocalize.findBestLanguageTag === "function") {
|
|
30
|
-
const best = RNLocalize.findBestLanguageTag(availableLocales);
|
|
31
|
-
if (best?.languageTag) {
|
|
32
|
-
const { languageTag } = best;
|
|
33
|
-
const languageCode = languageTag.split("-")[0]?.toLowerCase();
|
|
34
|
-
if (availableLocales.includes(languageTag)) {
|
|
35
|
-
return languageTag;
|
|
36
|
-
}
|
|
37
|
-
if (languageCode && availableLocales.includes(languageCode)) {
|
|
38
|
-
return languageCode;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (typeof RNLocalize.getLocales === "function") {
|
|
43
|
-
const locales = RNLocalize.getLocales();
|
|
44
|
-
const matchedLocale = locales.find((locale) => {
|
|
45
|
-
const languageCode = locale.languageCode.toLowerCase();
|
|
46
|
-
if (languageCode && availableLocales.includes(languageCode)) {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
if (locale.languageTag) {
|
|
50
|
-
const tagCode = locale.languageTag.split("-")[0]?.toLowerCase();
|
|
51
|
-
if (tagCode && availableLocales.includes(tagCode)) {
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return false;
|
|
56
|
-
});
|
|
57
|
-
if (matchedLocale) {
|
|
58
|
-
const languageCode = matchedLocale.languageCode.toLowerCase();
|
|
59
|
-
if (availableLocales.includes(languageCode)) {
|
|
60
|
-
return languageCode;
|
|
61
|
-
}
|
|
62
|
-
if (matchedLocale.languageTag) {
|
|
63
|
-
const tagCode = matchedLocale.languageTag.split("-")[0]?.toLowerCase();
|
|
64
|
-
if (tagCode && availableLocales.includes(tagCode)) {
|
|
65
|
-
return tagCode;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
} catch (localizeError) {
|
|
71
|
-
console.warn("[locon] \u274C react-native-localize error:", localizeError);
|
|
72
|
-
}
|
|
73
|
-
try {
|
|
74
|
-
const { NativeModules, Platform } = require("react-native");
|
|
75
|
-
if (Platform.OS === "ios") {
|
|
76
|
-
const { SettingsManager } = NativeModules;
|
|
77
|
-
if (SettingsManager?.settings?.AppleLanguages) {
|
|
78
|
-
const appleLanguages = SettingsManager.settings.AppleLanguages;
|
|
79
|
-
const supportedLanguage = appleLanguages.map((lang) => lang.split("-")[0]?.toLowerCase()).filter((languageCode) => Boolean(languageCode)).find((languageCode) => availableLocales.includes(languageCode));
|
|
80
|
-
if (supportedLanguage) {
|
|
81
|
-
return supportedLanguage;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
const { I18nManager } = NativeModules;
|
|
85
|
-
if (I18nManager?.localeIdentifier) {
|
|
86
|
-
const languageCode = I18nManager.localeIdentifier.split("-")[0]?.toLowerCase();
|
|
87
|
-
if (languageCode) {
|
|
88
|
-
const supportedLanguage = availableLocales.find((locale) => locale === languageCode);
|
|
89
|
-
if (supportedLanguage) {
|
|
90
|
-
return supportedLanguage;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
} else if (Platform.OS === "android") {
|
|
95
|
-
const { I18nManager } = NativeModules;
|
|
96
|
-
if (I18nManager?.localeIdentifier) {
|
|
97
|
-
const languageCode = I18nManager.localeIdentifier.split("-")[0]?.toLowerCase();
|
|
98
|
-
if (languageCode) {
|
|
99
|
-
const supportedLanguage = availableLocales.find((locale) => locale === languageCode);
|
|
100
|
-
if (supportedLanguage) {
|
|
101
|
-
return supportedLanguage;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
} catch (rnError) {
|
|
107
|
-
console.warn("[locon] \u274C react-native error:", rnError);
|
|
108
|
-
}
|
|
109
|
-
const systemLocale = Intl.DateTimeFormat().resolvedOptions().locale;
|
|
110
|
-
if (systemLocale) {
|
|
111
|
-
const languageCode = systemLocale.split("-")[0]?.toLowerCase();
|
|
112
|
-
if (languageCode) {
|
|
113
|
-
const supportedLanguage = availableLocales.find((locale) => locale === languageCode);
|
|
114
|
-
if (supportedLanguage) {
|
|
115
|
-
return supportedLanguage;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return null;
|
|
120
|
-
} catch (error) {
|
|
121
|
-
console.warn("[locon] \u274C Could not detect system language:", error);
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
var getSystemLanguage_default = getSystemLanguage;
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
function getSystemLanguage(availableLocales) {
|
|
2
|
-
if (!availableLocales?.length) return null;
|
|
3
|
-
try {
|
|
4
|
-
try {
|
|
5
|
-
const RNLocalize = require("react-native-localize");
|
|
6
|
-
if (typeof RNLocalize.findBestLanguageTag === "function") {
|
|
7
|
-
const best = RNLocalize.findBestLanguageTag(availableLocales);
|
|
8
|
-
if (best?.languageTag) {
|
|
9
|
-
const { languageTag } = best;
|
|
10
|
-
const languageCode = languageTag.split("-")[0]?.toLowerCase();
|
|
11
|
-
if (availableLocales.includes(languageTag)) {
|
|
12
|
-
return languageTag;
|
|
13
|
-
}
|
|
14
|
-
if (languageCode && availableLocales.includes(languageCode)) {
|
|
15
|
-
return languageCode;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
if (typeof RNLocalize.getLocales === "function") {
|
|
20
|
-
const locales = RNLocalize.getLocales();
|
|
21
|
-
const matchedLocale = locales.find((locale) => {
|
|
22
|
-
const languageCode = locale.languageCode.toLowerCase();
|
|
23
|
-
if (languageCode && availableLocales.includes(languageCode)) {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
if (locale.languageTag) {
|
|
27
|
-
const tagCode = locale.languageTag.split("-")[0]?.toLowerCase();
|
|
28
|
-
if (tagCode && availableLocales.includes(tagCode)) {
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return false;
|
|
33
|
-
});
|
|
34
|
-
if (matchedLocale) {
|
|
35
|
-
const languageCode = matchedLocale.languageCode.toLowerCase();
|
|
36
|
-
if (availableLocales.includes(languageCode)) {
|
|
37
|
-
return languageCode;
|
|
38
|
-
}
|
|
39
|
-
if (matchedLocale.languageTag) {
|
|
40
|
-
const tagCode = matchedLocale.languageTag.split("-")[0]?.toLowerCase();
|
|
41
|
-
if (tagCode && availableLocales.includes(tagCode)) {
|
|
42
|
-
return tagCode;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
} catch (localizeError) {
|
|
48
|
-
console.warn("[locon] \u274C react-native-localize error:", localizeError);
|
|
49
|
-
}
|
|
50
|
-
try {
|
|
51
|
-
const { NativeModules, Platform } = require("react-native");
|
|
52
|
-
if (Platform.OS === "ios") {
|
|
53
|
-
const { SettingsManager } = NativeModules;
|
|
54
|
-
if (SettingsManager?.settings?.AppleLanguages) {
|
|
55
|
-
const appleLanguages = SettingsManager.settings.AppleLanguages;
|
|
56
|
-
const supportedLanguage = appleLanguages.map((lang) => lang.split("-")[0]?.toLowerCase()).filter((languageCode) => Boolean(languageCode)).find((languageCode) => availableLocales.includes(languageCode));
|
|
57
|
-
if (supportedLanguage) {
|
|
58
|
-
return supportedLanguage;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
const { I18nManager } = NativeModules;
|
|
62
|
-
if (I18nManager?.localeIdentifier) {
|
|
63
|
-
const languageCode = I18nManager.localeIdentifier.split("-")[0]?.toLowerCase();
|
|
64
|
-
if (languageCode) {
|
|
65
|
-
const supportedLanguage = availableLocales.find((locale) => locale === languageCode);
|
|
66
|
-
if (supportedLanguage) {
|
|
67
|
-
return supportedLanguage;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
} else if (Platform.OS === "android") {
|
|
72
|
-
const { I18nManager } = NativeModules;
|
|
73
|
-
if (I18nManager?.localeIdentifier) {
|
|
74
|
-
const languageCode = I18nManager.localeIdentifier.split("-")[0]?.toLowerCase();
|
|
75
|
-
if (languageCode) {
|
|
76
|
-
const supportedLanguage = availableLocales.find((locale) => locale === languageCode);
|
|
77
|
-
if (supportedLanguage) {
|
|
78
|
-
return supportedLanguage;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
} catch (rnError) {
|
|
84
|
-
console.warn("[locon] \u274C react-native error:", rnError);
|
|
85
|
-
}
|
|
86
|
-
const systemLocale = Intl.DateTimeFormat().resolvedOptions().locale;
|
|
87
|
-
if (systemLocale) {
|
|
88
|
-
const languageCode = systemLocale.split("-")[0]?.toLowerCase();
|
|
89
|
-
if (languageCode) {
|
|
90
|
-
const supportedLanguage = availableLocales.find((locale) => locale === languageCode);
|
|
91
|
-
if (supportedLanguage) {
|
|
92
|
-
return supportedLanguage;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
} catch (error) {
|
|
98
|
-
console.warn("[locon] \u274C Could not detect system language:", error);
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
var getSystemLanguage_default = getSystemLanguage;
|
|
103
|
-
export {
|
|
104
|
-
getSystemLanguage_default as default
|
|
105
|
-
};
|