generaltranslation 2.0.65 → 2.0.67
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/codes/determineLanguage.d.ts +1 -0
- package/dist/codes/determineLanguage.js +30 -0
- package/dist/index.d.ts +24 -5
- package/dist/index.js +30 -7
- package/package.json +1 -1
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.default = _determineLanguage;
|
4
|
+
var codes_1 = require("./codes");
|
5
|
+
/**
|
6
|
+
* Given a list of language and a list of approved language, sorted in preference order
|
7
|
+
* Determines which language of the given languages is the best match in the approvedLanguages, prioritizing exact matches and falling back to dialects of the same language
|
8
|
+
* @internal
|
9
|
+
*/
|
10
|
+
function _determineLanguage(languages, approvedLanguages) {
|
11
|
+
if (typeof languages === 'string')
|
12
|
+
languages = [languages];
|
13
|
+
if (!approvedLanguages)
|
14
|
+
return languages[0];
|
15
|
+
var _loop_1 = function (language) {
|
16
|
+
var exactMatch = approvedLanguages.find(function (approvedLanguage) { return approvedLanguage === language; });
|
17
|
+
if (exactMatch)
|
18
|
+
return { value: exactMatch };
|
19
|
+
var sameLanguage = approvedLanguages.find(function (approvedLanguage) { return (0, codes_1._isSameLanguage)(approvedLanguage, language); });
|
20
|
+
if (sameLanguage)
|
21
|
+
return { value: sameLanguage };
|
22
|
+
};
|
23
|
+
for (var _i = 0, languages_1 = languages; _i < languages_1.length; _i++) {
|
24
|
+
var language = languages_1[_i];
|
25
|
+
var state_1 = _loop_1(language);
|
26
|
+
if (typeof state_1 === "object")
|
27
|
+
return state_1.value;
|
28
|
+
}
|
29
|
+
return undefined;
|
30
|
+
}
|
package/dist/index.d.ts
CHANGED
@@ -32,14 +32,14 @@ declare class GT {
|
|
32
32
|
* If `metadata.save` is provided, the translation is cached for use in a public project.
|
33
33
|
*
|
34
34
|
* @param {Content} content - The string or array of strings/variables to be translated.
|
35
|
-
* @param {string}
|
35
|
+
* @param {string} language - The target language code (e.g., 'en', 'fr') for the translation.
|
36
36
|
* @param {{ context?: string, save?: boolean, [key: string]: any }} [metadata] - Additional metadata for the translation request.
|
37
37
|
* @param {string} [metadata.context] - Contextual information to assist with the translation.
|
38
38
|
* @param {boolean} [metadata.save] - Whether to cache the translation for use in a public project.
|
39
39
|
*
|
40
40
|
* @returns {Promise<ContentTranslationResult>} A promise that resolves to the translated content, or an error if the translation fails.
|
41
41
|
*/
|
42
|
-
translate(content: Content,
|
42
|
+
translate(content: Content, language: string, metadata?: {
|
43
43
|
context?: string;
|
44
44
|
save?: boolean;
|
45
45
|
[key: string]: any;
|
@@ -52,12 +52,12 @@ declare class GT {
|
|
52
52
|
*
|
53
53
|
* @param {Object} params - The parameters for the translation.
|
54
54
|
* @param {ReactChildrenAsObject} params.children - The React children content to be translated.
|
55
|
-
* @param {string} params.
|
55
|
+
* @param {string} params.language - The target language for the translation.
|
56
56
|
* @param {Object} params.metadata - Additional metadata for the translation process.
|
57
57
|
*
|
58
58
|
* @returns {Promise<ReactTranslationResult>} - A promise that resolves to the translated content.
|
59
59
|
*/
|
60
|
-
translateReact(children: ReactChildrenAsObject,
|
60
|
+
translateReact(children: ReactChildrenAsObject, language: string, metadata?: {
|
61
61
|
context?: string;
|
62
62
|
save?: boolean;
|
63
63
|
[key: string]: any;
|
@@ -70,7 +70,7 @@ declare class GT {
|
|
70
70
|
translateBundle(requests: Request[]): Promise<Array<ReactTranslationResult | ContentTranslationResult>>;
|
71
71
|
/**
|
72
72
|
* Pushes updates to a remotely cached translation dictionary.
|
73
|
-
* @param {Update[]} updates - Array of updates
|
73
|
+
* @param {Update[]} updates - Array of updates.
|
74
74
|
* @param {string[]} [languages] - Array of languages to be updated.
|
75
75
|
* @param {string} [projectID=this.projectID] - The ID of the project. Defaults to the instance's projectID.
|
76
76
|
* @param {boolean} [replace=false] - Whether to replace the existing dictionary. Defaults to false.
|
@@ -200,3 +200,22 @@ export declare function splitStringToContent(string: string): Content;
|
|
200
200
|
export declare function renderContentToString<V extends Record<string, any>>(content: Content, languages?: string | string[], variables?: V, variableOptions?: {
|
201
201
|
[key in keyof V]?: Intl.NumberFormatOptions | Intl.DateTimeFormatOptions;
|
202
202
|
}): string;
|
203
|
+
/**
|
204
|
+
* Determines the best matching language from the approved languages list based on a provided
|
205
|
+
* list of preferred languages. The function prioritizes exact matches, but will also consider
|
206
|
+
* dialects of the same language if an exact match is not available.
|
207
|
+
*
|
208
|
+
* It also respects the order of preference in both the provided languages list and the
|
209
|
+
* approved languages list. A dialect match of a higher-preference language is considered better
|
210
|
+
* than an exact match of a lower-preference language.
|
211
|
+
*
|
212
|
+
* For example, if the `languages` list is ['en', 'fr'], and the `approvedLanguages` list is
|
213
|
+
* ['fr', 'en-GB'], it will prefer 'en-GB' over 'fr', even though 'fr' has an exact
|
214
|
+
* dialect match, because 'en' appears earlier in the `languages` list.
|
215
|
+
*
|
216
|
+
* @param {string | string[]} languages - A single language or an array of languages sorted in preference order.
|
217
|
+
* @param {string[]} approvedLanguages - An array of approved languages, also sorted by preference.
|
218
|
+
*
|
219
|
+
* @returns {string | undefined} - The best matching language from the approvedLanguages list, or undefined if no match is found.
|
220
|
+
*/
|
221
|
+
export declare function determineLanguage(languages: string | string[], approvedLanguages: string[]): string | undefined;
|
package/dist/index.js
CHANGED
@@ -62,6 +62,7 @@ exports.formatDateTime = formatDateTime;
|
|
62
62
|
exports.formatCurrency = formatCurrency;
|
63
63
|
exports.splitStringToContent = splitStringToContent;
|
64
64
|
exports.renderContentToString = renderContentToString;
|
65
|
+
exports.determineLanguage = determineLanguage;
|
65
66
|
// ----- IMPORTS ----- //
|
66
67
|
var codes_1 = require("./codes/codes");
|
67
68
|
var getLanguageDirection_1 = __importDefault(require("./codes/getLanguageDirection"));
|
@@ -71,6 +72,7 @@ var _translateReact_1 = __importDefault(require("./translation/react/_translateR
|
|
71
72
|
var _updateProjectDictionary_1 = __importDefault(require("./translation/dictionaries/_updateProjectDictionary"));
|
72
73
|
var _format_1 = require("./formatting/_format");
|
73
74
|
var _string_content_1 = require("./formatting/_string_content");
|
75
|
+
var determineLanguage_1 = __importDefault(require("./codes/determineLanguage"));
|
74
76
|
// ----- CORE CLASS ----- //
|
75
77
|
var getDefaultFromEnv = function (VARIABLE) {
|
76
78
|
if (typeof process !== 'undefined' && process.env) {
|
@@ -103,18 +105,18 @@ var GT = /** @class */ (function () {
|
|
103
105
|
* If `metadata.save` is provided, the translation is cached for use in a public project.
|
104
106
|
*
|
105
107
|
* @param {Content} content - The string or array of strings/variables to be translated.
|
106
|
-
* @param {string}
|
108
|
+
* @param {string} language - The target language code (e.g., 'en', 'fr') for the translation.
|
107
109
|
* @param {{ context?: string, save?: boolean, [key: string]: any }} [metadata] - Additional metadata for the translation request.
|
108
110
|
* @param {string} [metadata.context] - Contextual information to assist with the translation.
|
109
111
|
* @param {boolean} [metadata.save] - Whether to cache the translation for use in a public project.
|
110
112
|
*
|
111
113
|
* @returns {Promise<ContentTranslationResult>} A promise that resolves to the translated content, or an error if the translation fails.
|
112
114
|
*/
|
113
|
-
GT.prototype.translate = function (content,
|
115
|
+
GT.prototype.translate = function (content, language, metadata) {
|
114
116
|
return __awaiter(this, void 0, void 0, function () {
|
115
117
|
return __generator(this, function (_a) {
|
116
118
|
switch (_a.label) {
|
117
|
-
case 0: return [4 /*yield*/, (0, _translate_1.default)(this, content,
|
119
|
+
case 0: return [4 /*yield*/, (0, _translate_1.default)(this, content, language, __assign({ projectID: this.projectID, defaultLanguage: this.defaultLanguage }, metadata))];
|
118
120
|
case 1: return [2 /*return*/, _a.sent()];
|
119
121
|
}
|
120
122
|
});
|
@@ -125,16 +127,16 @@ var GT = /** @class */ (function () {
|
|
125
127
|
*
|
126
128
|
* @param {Object} params - The parameters for the translation.
|
127
129
|
* @param {ReactChildrenAsObject} params.children - The React children content to be translated.
|
128
|
-
* @param {string} params.
|
130
|
+
* @param {string} params.language - The target language for the translation.
|
129
131
|
* @param {Object} params.metadata - Additional metadata for the translation process.
|
130
132
|
*
|
131
133
|
* @returns {Promise<ReactTranslationResult>} - A promise that resolves to the translated content.
|
132
134
|
*/
|
133
|
-
GT.prototype.translateReact = function (children,
|
135
|
+
GT.prototype.translateReact = function (children, language, metadata) {
|
134
136
|
return __awaiter(this, void 0, void 0, function () {
|
135
137
|
return __generator(this, function (_a) {
|
136
138
|
switch (_a.label) {
|
137
|
-
case 0: return [4 /*yield*/, (0, _translateReact_1.default)(this, children,
|
139
|
+
case 0: return [4 /*yield*/, (0, _translateReact_1.default)(this, children, language, __assign({ projectID: this.projectID, defaultLanguage: this.defaultLanguage }, metadata))];
|
138
140
|
case 1: return [2 /*return*/, _a.sent()];
|
139
141
|
}
|
140
142
|
});
|
@@ -154,7 +156,7 @@ var GT = /** @class */ (function () {
|
|
154
156
|
};
|
155
157
|
/**
|
156
158
|
* Pushes updates to a remotely cached translation dictionary.
|
157
|
-
* @param {Update[]} updates - Array of updates
|
159
|
+
* @param {Update[]} updates - Array of updates.
|
158
160
|
* @param {string[]} [languages] - Array of languages to be updated.
|
159
161
|
* @param {string} [projectID=this.projectID] - The ID of the project. Defaults to the instance's projectID.
|
160
162
|
* @param {boolean} [replace=false] - Whether to replace the existing dictionary. Defaults to false.
|
@@ -278,3 +280,24 @@ function splitStringToContent(string) {
|
|
278
280
|
function renderContentToString(content, languages, variables, variableOptions) {
|
279
281
|
return (0, _string_content_1._renderContentToString)(content, languages, variables, variableOptions);
|
280
282
|
}
|
283
|
+
/**
|
284
|
+
* Determines the best matching language from the approved languages list based on a provided
|
285
|
+
* list of preferred languages. The function prioritizes exact matches, but will also consider
|
286
|
+
* dialects of the same language if an exact match is not available.
|
287
|
+
*
|
288
|
+
* It also respects the order of preference in both the provided languages list and the
|
289
|
+
* approved languages list. A dialect match of a higher-preference language is considered better
|
290
|
+
* than an exact match of a lower-preference language.
|
291
|
+
*
|
292
|
+
* For example, if the `languages` list is ['en', 'fr'], and the `approvedLanguages` list is
|
293
|
+
* ['fr', 'en-GB'], it will prefer 'en-GB' over 'fr', even though 'fr' has an exact
|
294
|
+
* dialect match, because 'en' appears earlier in the `languages` list.
|
295
|
+
*
|
296
|
+
* @param {string | string[]} languages - A single language or an array of languages sorted in preference order.
|
297
|
+
* @param {string[]} approvedLanguages - An array of approved languages, also sorted by preference.
|
298
|
+
*
|
299
|
+
* @returns {string | undefined} - The best matching language from the approvedLanguages list, or undefined if no match is found.
|
300
|
+
*/
|
301
|
+
function determineLanguage(languages, approvedLanguages) {
|
302
|
+
return (0, determineLanguage_1.default)(languages, approvedLanguages);
|
303
|
+
}
|