exceptionz-react-native-lingua 1.0.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/dist/LinguaContext.d.ts +18 -0
- package/dist/LinguaContext.d.ts.map +1 -0
- package/dist/LinguaContext.js +102 -0
- package/dist/LinguaContext.js.map +1 -0
- package/dist/components/LanguageModal.d.ts +3 -0
- package/dist/components/LanguageModal.d.ts.map +1 -0
- package/dist/components/LanguageModal.js +155 -0
- package/dist/components/LanguageModal.js.map +1 -0
- package/dist/components/LanguageSwitcher.d.ts +3 -0
- package/dist/components/LanguageSwitcher.d.ts.map +1 -0
- package/dist/components/LanguageSwitcher.js +162 -0
- package/dist/components/LanguageSwitcher.js.map +1 -0
- package/dist/components/T.d.ts +8 -0
- package/dist/components/T.d.ts.map +1 -0
- package/dist/components/T.js +27 -0
- package/dist/components/T.js.map +1 -0
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +25 -0
- package/dist/constants.js.map +1 -0
- package/dist/hooks/useTranslate.d.ts +2 -0
- package/dist/hooks/useTranslate.d.ts.map +1 -0
- package/dist/hooks/useTranslate.js +35 -0
- package/dist/hooks/useTranslate.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/translator.d.ts +2 -0
- package/dist/utils/translator.d.ts.map +1 -0
- package/dist/utils/translator.js +51 -0
- package/dist/utils/translator.js.map +1 -0
- package/package.json +39 -0
- package/react-native-lingua-1.0.0.tgz +0 -0
- package/src/LinguaContext.tsx +72 -0
- package/src/components/LanguageModal.tsx +141 -0
- package/src/components/LanguageSwitcher.tsx +142 -0
- package/src/components/T.tsx +12 -0
- package/src/constants.ts +21 -0
- package/src/hooks/useTranslate.ts +36 -0
- package/src/index.ts +6 -0
- package/src/utils/translator.ts +37 -0
- package/tsconfig.json +22 -0
- package/tsup.config.ts +10 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
interface LinguaContextProps {
|
|
3
|
+
currentLanguage: string;
|
|
4
|
+
setLanguage: (lang: string) => Promise<void>;
|
|
5
|
+
availableLanguages: string[];
|
|
6
|
+
isLoading: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const useI18n: () => LinguaContextProps;
|
|
9
|
+
interface LinguaProviderProps {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
defaultLang?: string;
|
|
12
|
+
languages?: string[];
|
|
13
|
+
}
|
|
14
|
+
export declare const translationCache: Map<string, string>;
|
|
15
|
+
export declare const getCacheKey: (text: string, lang: string) => string;
|
|
16
|
+
export declare const LinguaProvider: React.FC<LinguaProviderProps>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=LinguaContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinguaContext.d.ts","sourceRoot":"","sources":["../src/LinguaContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAuC,SAAS,EAAa,MAAM,OAAO,CAAC;AAIzF,UAAU,kBAAkB;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,eAAO,MAAM,OAAO,0BAInB,CAAC;AAEF,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,gBAAgB,qBAA4B,CAAC;AAC1D,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,WAAsB,CAAC;AAE7E,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2CxD,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.LinguaProvider = exports.getCacheKey = exports.translationCache = exports.useI18n = void 0;
|
|
49
|
+
const react_1 = __importStar(require("react"));
|
|
50
|
+
const async_storage_1 = __importDefault(require("@react-native-async-storage/async-storage"));
|
|
51
|
+
const constants_1 = require("./constants");
|
|
52
|
+
const LinguaContext = (0, react_1.createContext)(undefined);
|
|
53
|
+
const useI18n = () => {
|
|
54
|
+
const context = (0, react_1.useContext)(LinguaContext);
|
|
55
|
+
if (!context)
|
|
56
|
+
throw new Error('useI18n must be used within a LinguaProvider');
|
|
57
|
+
return context;
|
|
58
|
+
};
|
|
59
|
+
exports.useI18n = useI18n;
|
|
60
|
+
exports.translationCache = new Map();
|
|
61
|
+
const getCacheKey = (text, lang) => `${lang}:${text}`;
|
|
62
|
+
exports.getCacheKey = getCacheKey;
|
|
63
|
+
const LinguaProvider = ({ children, defaultLang = 'en', languages = constants_1.SUPPORTED_LANGUAGES.map(l => l.code) }) => {
|
|
64
|
+
const [currentLanguage, setCurrentLanguage] = (0, react_1.useState)(defaultLang);
|
|
65
|
+
const [isLoading, setIsLoading] = (0, react_1.useState)(true);
|
|
66
|
+
(0, react_1.useEffect)(() => {
|
|
67
|
+
const loadLanguage = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
68
|
+
try {
|
|
69
|
+
const saved = yield async_storage_1.default.getItem('app-language-preference');
|
|
70
|
+
if (saved) {
|
|
71
|
+
setCurrentLanguage(saved);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
console.error('Failed to load language preference', e);
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
setIsLoading(false);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
loadLanguage();
|
|
82
|
+
}, []);
|
|
83
|
+
const handleSetLanguage = (lang) => __awaiter(void 0, void 0, void 0, function* () {
|
|
84
|
+
try {
|
|
85
|
+
setCurrentLanguage(lang);
|
|
86
|
+
yield async_storage_1.default.setItem('app-language-preference', lang);
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
console.error('Failed to save language preference', e);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return (<LinguaContext.Provider value={{
|
|
93
|
+
currentLanguage,
|
|
94
|
+
setLanguage: handleSetLanguage,
|
|
95
|
+
availableLanguages: languages,
|
|
96
|
+
isLoading
|
|
97
|
+
}}>
|
|
98
|
+
{children}
|
|
99
|
+
</LinguaContext.Provider>);
|
|
100
|
+
};
|
|
101
|
+
exports.LinguaProvider = LinguaProvider;
|
|
102
|
+
//# sourceMappingURL=LinguaContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinguaContext.js","sourceRoot":"","sources":["../src/LinguaContext.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAyF;AACzF,8FAAqE;AACrE,2CAAkD;AASlD,MAAM,aAAa,GAAG,IAAA,qBAAa,EAAiC,SAAS,CAAC,CAAC;AAExE,MAAM,OAAO,GAAG,GAAG,EAAE;IAC1B,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC9E,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB;AAQW,QAAA,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;AACnD,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAAhE,QAAA,WAAW,eAAqD;AAEtE,MAAM,cAAc,GAAkC,CAAC,EAC5D,QAAQ,EACR,WAAW,GAAG,IAAI,EAClB,SAAS,GAAG,+BAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACjD,EAAE,EAAE;IACH,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,WAAW,CAAC,CAAC;IACpE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAEjD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,GAAS,EAAE;YAC9B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,uBAAY,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;gBACpE,IAAI,KAAK,EAAE,CAAC;oBACV,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAC;YACzD,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAA,CAAC;QACF,YAAY,EAAE,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,iBAAiB,GAAG,CAAO,IAAY,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,uBAAY,CAAC,OAAO,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAA,CAAC;IAEF,OAAO,CACL,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7B,eAAe;YACf,WAAW,EAAE,iBAAiB;YAC9B,kBAAkB,EAAE,SAAS;YAC7B,SAAS;SACV,CAAC,CACA;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,aAAa,CAAC,QAAQ,CAAC,CAC1B,CAAC;AACJ,CAAC,CAAC;AA3CW,QAAA,cAAc,kBA2CzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LanguageModal.d.ts","sourceRoot":"","sources":["../../src/components/LanguageModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAanD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EA4DjC,CAAC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.LanguageModal = void 0;
|
|
46
|
+
const react_1 = __importStar(require("react"));
|
|
47
|
+
const react_native_1 = require("react-native");
|
|
48
|
+
const LinguaContext_1 = require("../LinguaContext");
|
|
49
|
+
const constants_1 = require("../constants");
|
|
50
|
+
const LanguageModal = () => {
|
|
51
|
+
const { setLanguage, currentLanguage, isLoading } = (0, LinguaContext_1.useI18n)();
|
|
52
|
+
const [modalVisible, setModalVisible] = (0, react_1.useState)(false);
|
|
53
|
+
(0, react_1.useEffect)(() => {
|
|
54
|
+
if (!isLoading && !currentLanguage) {
|
|
55
|
+
setModalVisible(true);
|
|
56
|
+
}
|
|
57
|
+
}, [isLoading, currentLanguage]);
|
|
58
|
+
const handleSelectLanguage = (code) => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
+
yield setLanguage(code);
|
|
60
|
+
setModalVisible(false);
|
|
61
|
+
});
|
|
62
|
+
return (<react_native_1.Modal animationType="slide" transparent={true} visible={modalVisible} onRequestClose={() => setModalVisible(false)}>
|
|
63
|
+
<react_native_1.View style={styles.centeredView}>
|
|
64
|
+
<react_native_1.View style={styles.modalView}>
|
|
65
|
+
<react_native_1.Text style={styles.modalTitle}>Select Language</react_native_1.Text>
|
|
66
|
+
<react_native_1.Text style={styles.modalSubtitle}>Choose your preferred language.</react_native_1.Text>
|
|
67
|
+
|
|
68
|
+
<react_native_1.FlatList data={constants_1.SUPPORTED_LANGUAGES} keyExtractor={(item) => item.code} renderItem={({ item }) => (<react_native_1.TouchableOpacity style={[
|
|
69
|
+
styles.languageItem,
|
|
70
|
+
currentLanguage === item.code && styles.selectedItem
|
|
71
|
+
]} onPress={() => handleSelectLanguage(item.code)}>
|
|
72
|
+
<react_native_1.Text style={styles.icon}>{item.icon}</react_native_1.Text>
|
|
73
|
+
<react_native_1.Text style={[
|
|
74
|
+
styles.label,
|
|
75
|
+
currentLanguage === item.code && styles.selectedLabel
|
|
76
|
+
]}>
|
|
77
|
+
{item.label}
|
|
78
|
+
</react_native_1.Text>
|
|
79
|
+
</react_native_1.TouchableOpacity>)} style={styles.list}/>
|
|
80
|
+
|
|
81
|
+
<react_native_1.TouchableOpacity style={styles.closeButton} onPress={() => setModalVisible(false)}>
|
|
82
|
+
<react_native_1.Text style={styles.closeButtonText}>Close</react_native_1.Text>
|
|
83
|
+
</react_native_1.TouchableOpacity>
|
|
84
|
+
</react_native_1.View>
|
|
85
|
+
</react_native_1.View>
|
|
86
|
+
</react_native_1.Modal>);
|
|
87
|
+
};
|
|
88
|
+
exports.LanguageModal = LanguageModal;
|
|
89
|
+
const styles = react_native_1.StyleSheet.create({
|
|
90
|
+
centeredView: {
|
|
91
|
+
flex: 1,
|
|
92
|
+
justifyContent: 'center',
|
|
93
|
+
alignItems: 'center',
|
|
94
|
+
backgroundColor: 'rgba(0,0,0,0.5)',
|
|
95
|
+
},
|
|
96
|
+
modalView: {
|
|
97
|
+
width: '85%',
|
|
98
|
+
backgroundColor: '#1e293b',
|
|
99
|
+
borderRadius: 20,
|
|
100
|
+
padding: 20,
|
|
101
|
+
alignItems: 'center',
|
|
102
|
+
shadowColor: '#000',
|
|
103
|
+
shadowOffset: { width: 0, height: 2 },
|
|
104
|
+
shadowOpacity: 0.25,
|
|
105
|
+
shadowRadius: 4,
|
|
106
|
+
elevation: 5,
|
|
107
|
+
maxHeight: '80%',
|
|
108
|
+
},
|
|
109
|
+
modalTitle: {
|
|
110
|
+
fontSize: 20,
|
|
111
|
+
fontWeight: 'bold',
|
|
112
|
+
color: '#f8fafc',
|
|
113
|
+
marginBottom: 8,
|
|
114
|
+
},
|
|
115
|
+
modalSubtitle: {
|
|
116
|
+
fontSize: 14,
|
|
117
|
+
color: '#94a3b8',
|
|
118
|
+
marginBottom: 20,
|
|
119
|
+
},
|
|
120
|
+
list: {
|
|
121
|
+
width: '100%',
|
|
122
|
+
},
|
|
123
|
+
languageItem: {
|
|
124
|
+
flexDirection: 'row',
|
|
125
|
+
alignItems: 'center',
|
|
126
|
+
padding: 15,
|
|
127
|
+
borderRadius: 12,
|
|
128
|
+
backgroundColor: 'rgba(255,255,255,0.05)',
|
|
129
|
+
marginBottom: 8,
|
|
130
|
+
gap: 12,
|
|
131
|
+
},
|
|
132
|
+
selectedItem: {
|
|
133
|
+
backgroundColor: '#3b82f6',
|
|
134
|
+
},
|
|
135
|
+
icon: {
|
|
136
|
+
fontSize: 18,
|
|
137
|
+
},
|
|
138
|
+
label: {
|
|
139
|
+
fontSize: 14,
|
|
140
|
+
color: '#cbd5e1',
|
|
141
|
+
fontWeight: '500',
|
|
142
|
+
},
|
|
143
|
+
selectedLabel: {
|
|
144
|
+
color: '#fff',
|
|
145
|
+
},
|
|
146
|
+
closeButton: {
|
|
147
|
+
marginTop: 20,
|
|
148
|
+
padding: 10,
|
|
149
|
+
},
|
|
150
|
+
closeButtonText: {
|
|
151
|
+
color: '#3b82f6',
|
|
152
|
+
fontWeight: '600',
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
//# sourceMappingURL=LanguageModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LanguageModal.js","sourceRoot":"","sources":["../../src/components/LanguageModal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LanguageSwitcher.d.ts","sourceRoot":"","sources":["../../src/components/LanguageSwitcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAaxC,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EA8DpC,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.LanguageSwitcher = void 0;
|
|
46
|
+
const react_1 = __importStar(require("react"));
|
|
47
|
+
const react_native_1 = require("react-native");
|
|
48
|
+
const LinguaContext_1 = require("../LinguaContext");
|
|
49
|
+
const constants_1 = require("../constants");
|
|
50
|
+
const LanguageSwitcher = () => {
|
|
51
|
+
var _a;
|
|
52
|
+
const { currentLanguage, setLanguage, availableLanguages } = (0, LinguaContext_1.useI18n)();
|
|
53
|
+
const [isOpen, setIsOpen] = (0, react_1.useState)(false);
|
|
54
|
+
const langMap = constants_1.SUPPORTED_LANGUAGES.reduce((acc, lang) => {
|
|
55
|
+
acc[lang.code] = { label: lang.label, icon: lang.icon };
|
|
56
|
+
return acc;
|
|
57
|
+
}, {});
|
|
58
|
+
const handleSelect = (lang) => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
+
yield setLanguage(lang);
|
|
60
|
+
setIsOpen(false);
|
|
61
|
+
});
|
|
62
|
+
return (<react_native_1.View style={styles.container}>
|
|
63
|
+
{isOpen && (<react_native_1.Modal transparent={true} visible={isOpen} animationType="fade" onRequestClose={() => setIsOpen(false)}>
|
|
64
|
+
<react_native_1.TouchableWithoutFeedback onPress={() => setIsOpen(false)}>
|
|
65
|
+
<react_native_1.View style={styles.overlay}>
|
|
66
|
+
<react_native_1.View style={styles.dropdown}>
|
|
67
|
+
<react_native_1.ScrollView bounces={false} style={{ maxHeight: 350 }}>
|
|
68
|
+
{availableLanguages.map((lang) => {
|
|
69
|
+
var _a, _b;
|
|
70
|
+
return (<react_native_1.TouchableOpacity key={lang} onPress={() => handleSelect(lang)} style={[
|
|
71
|
+
styles.menuItem,
|
|
72
|
+
currentLanguage === lang && styles.selectedMenuItem
|
|
73
|
+
]}>
|
|
74
|
+
<react_native_1.Text style={styles.icon}>{((_a = langMap[lang]) === null || _a === void 0 ? void 0 : _a.icon) || '🌐'}</react_native_1.Text>
|
|
75
|
+
<react_native_1.Text style={[
|
|
76
|
+
styles.label,
|
|
77
|
+
currentLanguage === lang && styles.selectedLabel
|
|
78
|
+
]}>
|
|
79
|
+
{((_b = langMap[lang]) === null || _b === void 0 ? void 0 : _b.label) || lang}
|
|
80
|
+
</react_native_1.Text>
|
|
81
|
+
</react_native_1.TouchableOpacity>);
|
|
82
|
+
})}
|
|
83
|
+
</react_native_1.ScrollView>
|
|
84
|
+
</react_native_1.View>
|
|
85
|
+
</react_native_1.View>
|
|
86
|
+
</react_native_1.TouchableWithoutFeedback>
|
|
87
|
+
</react_native_1.Modal>)}
|
|
88
|
+
|
|
89
|
+
<react_native_1.TouchableOpacity style={styles.floatingButton} onPress={() => setIsOpen(true)}>
|
|
90
|
+
<react_native_1.Text style={styles.buttonIcon}>
|
|
91
|
+
{((_a = langMap[currentLanguage]) === null || _a === void 0 ? void 0 : _a.icon) || '🌐'}
|
|
92
|
+
</react_native_1.Text>
|
|
93
|
+
</react_native_1.TouchableOpacity>
|
|
94
|
+
</react_native_1.View>);
|
|
95
|
+
};
|
|
96
|
+
exports.LanguageSwitcher = LanguageSwitcher;
|
|
97
|
+
const styles = react_native_1.StyleSheet.create({
|
|
98
|
+
container: {
|
|
99
|
+
position: 'absolute',
|
|
100
|
+
bottom: 24,
|
|
101
|
+
right: 24,
|
|
102
|
+
zIndex: 99999,
|
|
103
|
+
},
|
|
104
|
+
floatingButton: {
|
|
105
|
+
width: 48,
|
|
106
|
+
height: 48,
|
|
107
|
+
borderRadius: 24,
|
|
108
|
+
backgroundColor: '#3b82f6',
|
|
109
|
+
justifyContent: 'center',
|
|
110
|
+
alignItems: 'center',
|
|
111
|
+
shadowColor: '#3b82f6',
|
|
112
|
+
shadowOffset: { width: 0, height: 4 },
|
|
113
|
+
shadowOpacity: 0.3,
|
|
114
|
+
shadowRadius: 12,
|
|
115
|
+
elevation: 8,
|
|
116
|
+
},
|
|
117
|
+
buttonIcon: {
|
|
118
|
+
fontSize: 20,
|
|
119
|
+
color: '#fff',
|
|
120
|
+
},
|
|
121
|
+
overlay: {
|
|
122
|
+
flex: 1,
|
|
123
|
+
backgroundColor: 'transparent',
|
|
124
|
+
justifyContent: 'flex-end',
|
|
125
|
+
alignItems: 'flex-end',
|
|
126
|
+
paddingBottom: 80,
|
|
127
|
+
paddingRight: 24,
|
|
128
|
+
},
|
|
129
|
+
dropdown: {
|
|
130
|
+
backgroundColor: '#1e293b',
|
|
131
|
+
borderRadius: 12,
|
|
132
|
+
padding: 6,
|
|
133
|
+
width: 180,
|
|
134
|
+
shadowColor: '#000',
|
|
135
|
+
shadowOffset: { width: 0, height: 10 },
|
|
136
|
+
shadowOpacity: 0.3,
|
|
137
|
+
shadowRadius: 20,
|
|
138
|
+
elevation: 10,
|
|
139
|
+
},
|
|
140
|
+
menuItem: {
|
|
141
|
+
flexDirection: 'row',
|
|
142
|
+
alignItems: 'center',
|
|
143
|
+
padding: 10,
|
|
144
|
+
borderRadius: 8,
|
|
145
|
+
gap: 10,
|
|
146
|
+
},
|
|
147
|
+
selectedMenuItem: {
|
|
148
|
+
backgroundColor: '#3b82f6',
|
|
149
|
+
},
|
|
150
|
+
icon: {
|
|
151
|
+
fontSize: 16,
|
|
152
|
+
},
|
|
153
|
+
label: {
|
|
154
|
+
fontSize: 13,
|
|
155
|
+
fontWeight: '500',
|
|
156
|
+
color: '#cbd5e1',
|
|
157
|
+
},
|
|
158
|
+
selectedLabel: {
|
|
159
|
+
color: '#fff',
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
//# sourceMappingURL=LanguageSwitcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LanguageSwitcher.js","sourceRoot":"","sources":["../../src/components/LanguageSwitcher.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"T.d.ts","sourceRoot":"","sources":["../../src/components/T.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAQ,SAAS,EAAE,MAAM,cAAc,CAAC;AAG/C,UAAU,MAAO,SAAQ,SAAS;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAG9B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.T = void 0;
|
|
18
|
+
const react_1 = __importDefault(require("react"));
|
|
19
|
+
const react_native_1 = require("react-native");
|
|
20
|
+
const useTranslate_1 = require("../hooks/useTranslate");
|
|
21
|
+
const T = (_a) => {
|
|
22
|
+
var { children } = _a, props = __rest(_a, ["children"]);
|
|
23
|
+
const translatedText = (0, useTranslate_1.useTranslate)(children);
|
|
24
|
+
return <react_native_1.Text {...props}>{translatedText}</react_native_1.Text>;
|
|
25
|
+
};
|
|
26
|
+
exports.T = T;
|
|
27
|
+
//# sourceMappingURL=T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"T.js","sourceRoot":"","sources":["../../src/components/T.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,+CAA+C;AAC/C,wDAAqD;AAM9C,MAAM,CAAC,GAAqB,CAAC,EAAsB,EAAE,EAAE;QAA1B,EAAE,QAAQ,OAAY,EAAP,KAAK,cAApB,YAAsB,CAAF;IACtD,MAAM,cAAc,GAAG,IAAA,2BAAY,EAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,CAAC,mBAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,mBAAI,CAAC,CAAC;AAClD,CAAC,CAAC;AAHW,QAAA,CAAC,KAGZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB;;;;GAoB/B,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SUPPORTED_LANGUAGES = void 0;
|
|
4
|
+
exports.SUPPORTED_LANGUAGES = [
|
|
5
|
+
{ code: 'en', label: 'English', icon: '🇺🇸' },
|
|
6
|
+
{ code: 'hi', label: 'हिन्दी', icon: '🇮🇳' },
|
|
7
|
+
{ code: 'bn', label: 'বাংলা', icon: '🇮🇳' },
|
|
8
|
+
{ code: 'gu', label: 'ગુજરાતી', icon: '🇮🇳' },
|
|
9
|
+
{ code: 'kn', label: 'ಕನ್ನಡ', icon: '🇮🇳' },
|
|
10
|
+
{ code: 'ks', label: 'کٲشُر', icon: '🇮🇳' },
|
|
11
|
+
{ code: 'kok', label: 'कोंकणी', icon: '🇮🇳' },
|
|
12
|
+
{ code: 'ml', label: 'മലയാളം', icon: '🇮🇳' },
|
|
13
|
+
{ code: 'mr', label: 'मराठी', icon: '🇮🇳' },
|
|
14
|
+
{ code: 'ne', label: 'नेपाली', icon: '🇮🇳' },
|
|
15
|
+
{ code: 'or', label: 'ଓଡ଼ିଆ', icon: '🇮🇳' },
|
|
16
|
+
{ code: 'pa', label: 'ਪੰਜਾਬੀ', icon: '🇮🇳' },
|
|
17
|
+
{ code: 'sa', label: 'संस्कृतम्', icon: '🇮🇳' },
|
|
18
|
+
{ code: 'sat', label: 'ᱥᱟᱱᱛᱟᱲᱤ', icon: '🇮🇳' },
|
|
19
|
+
{ code: 'sd', label: 'سنڌي', icon: '🇮🇳' },
|
|
20
|
+
{ code: 'ta', label: 'தமிழ்', icon: '🇮🇳' },
|
|
21
|
+
{ code: 'te', label: 'తెలుగు', icon: '🇮🇳' },
|
|
22
|
+
{ code: 'ur', label: 'اردو', icon: '🇮🇳' },
|
|
23
|
+
{ code: 'fr', label: 'Français', icon: '🇫🇷' },
|
|
24
|
+
];
|
|
25
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG;IACjC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;IAChD,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;IAC/C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAC3C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAC3C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;CAChD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslate.d.ts","sourceRoot":"","sources":["../../src/hooks/useTranslate.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+BjD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useTranslate = useTranslate;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const LinguaContext_1 = require("../LinguaContext");
|
|
6
|
+
const translator_1 = require("../utils/translator");
|
|
7
|
+
function useTranslate(text) {
|
|
8
|
+
const { currentLanguage } = (0, LinguaContext_1.useI18n)();
|
|
9
|
+
const [translated, setTranslated] = (0, react_1.useState)(text);
|
|
10
|
+
(0, react_1.useEffect)(() => {
|
|
11
|
+
if (!text)
|
|
12
|
+
return;
|
|
13
|
+
if (currentLanguage === 'en') {
|
|
14
|
+
setTranslated(text);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const key = (0, LinguaContext_1.getCacheKey)(text, currentLanguage);
|
|
18
|
+
if (LinguaContext_1.translationCache.has(key)) {
|
|
19
|
+
setTranslated(LinguaContext_1.translationCache.get(key));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
let isMounted = true;
|
|
23
|
+
(0, translator_1.translateText)(text, currentLanguage).then((res) => {
|
|
24
|
+
if (isMounted) {
|
|
25
|
+
LinguaContext_1.translationCache.set(key, res);
|
|
26
|
+
setTranslated(res);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return () => {
|
|
30
|
+
isMounted = false;
|
|
31
|
+
};
|
|
32
|
+
}, [text, currentLanguage]);
|
|
33
|
+
return translated;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=useTranslate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslate.js","sourceRoot":"","sources":["../../src/hooks/useTranslate.ts"],"names":[],"mappings":";;AAIA,oCA+BC;AAnCD,iCAA4C;AAC5C,oDAA0E;AAC1E,oDAAoD;AAEpD,SAAgB,YAAY,CAAC,IAAY;IACvC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAA,uBAAO,GAAE,CAAC;IACtC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAS,IAAI,CAAC,CAAC;IAE3D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7B,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,2BAAW,EAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC/C,IAAI,gCAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,aAAa,CAAC,gCAAgB,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAA,0BAAa,EAAC,IAAI,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAChD,IAAI,SAAS,EAAE,CAAC;gBACd,gCAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC/B,aAAa,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IAE5B,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { LinguaProvider, useI18n } from './LinguaContext';
|
|
2
|
+
export { LanguageModal } from './components/LanguageModal';
|
|
3
|
+
export { LanguageSwitcher } from './components/LanguageSwitcher';
|
|
4
|
+
export { T } from './components/T';
|
|
5
|
+
export { useTranslate } from './hooks/useTranslate';
|
|
6
|
+
export { SUPPORTED_LANGUAGES } from './constants';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
|