langie 1.12.0 → 1.13.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/components/index.cjs +25 -9
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.css.map +1 -1
- package/dist/components/index.mjs +26 -10
- package/dist/components/index.mjs.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/core.cjs +12 -3
- package/dist/core.cjs.map +1 -1
- package/dist/core.mjs +12 -3
- package/dist/core.mjs.map +1 -1
- package/dist/index.cjs +25 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.mjs +26 -10
- package/dist/index.mjs.map +1 -1
- package/dist/types.d.ts +5 -1
- package/dist/utils/flagUrl.d.ts +12 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* langie v1.
|
|
2
|
+
* langie v1.13.0
|
|
3
3
|
* (c) 2026 nlit
|
|
4
4
|
* @license Apache-2.0
|
|
5
5
|
*
|
|
@@ -595,6 +595,10 @@ function displayNative(name = "", native = "") {
|
|
|
595
595
|
return name !== native && TRAILING_PAREN.test(name) && TRAILING_PAREN.test(native) ? native.replace(TRAILING_PAREN, "") : native;
|
|
596
596
|
}
|
|
597
597
|
|
|
598
|
+
// src/utils/flagUrl.ts
|
|
599
|
+
var isReadyFlagUrl = (flagCode) => flagCode.startsWith("/") || /^https?:\/\//i.test(flagCode);
|
|
600
|
+
var flagImageUrl = (flagCode) => isReadyFlagUrl(flagCode) ? flagCode : `/flags/${flagCode}.svg`;
|
|
601
|
+
|
|
598
602
|
// src/constants/colors.ts
|
|
599
603
|
var COLORS = {
|
|
600
604
|
// Primary colors
|
|
@@ -671,14 +675,14 @@ var _hoisted_1 = {
|
|
|
671
675
|
key: 0,
|
|
672
676
|
class: "multiselect-single-label"
|
|
673
677
|
};
|
|
674
|
-
var _hoisted_2 = ["src", "alt"];
|
|
678
|
+
var _hoisted_2 = ["src", "alt", "data-custom-flag"];
|
|
675
679
|
var _hoisted_3 = { class: "language-text" };
|
|
676
680
|
var _hoisted_4 = {
|
|
677
681
|
key: 0,
|
|
678
682
|
class: "native-name"
|
|
679
683
|
};
|
|
680
684
|
var _hoisted_5 = ["data-lang-code"];
|
|
681
|
-
var _hoisted_6 = ["src", "alt"];
|
|
685
|
+
var _hoisted_6 = ["src", "alt", "data-custom-flag"];
|
|
682
686
|
var _hoisted_7 = { class: "language-text" };
|
|
683
687
|
var _hoisted_8 = {
|
|
684
688
|
key: 0,
|
|
@@ -746,10 +750,7 @@ var LanguageSelect_default = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
746
750
|
const flagCode = lang.flag_country || lang.code;
|
|
747
751
|
return flagCode;
|
|
748
752
|
};
|
|
749
|
-
const getFlagImageUrl = (lang) =>
|
|
750
|
-
const flagCode = getFlagCode(lang);
|
|
751
|
-
return `/flags/${flagCode}.svg`;
|
|
752
|
-
};
|
|
753
|
+
const getFlagImageUrl = (lang) => flagImageUrl(getFlagCode(lang));
|
|
753
754
|
const props = __props;
|
|
754
755
|
const emit = __emit;
|
|
755
756
|
const multiselectRef = (0, import_vue3.ref)(null);
|
|
@@ -874,6 +875,10 @@ var LanguageSelect_default = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
874
875
|
const onFlagError = (event) => {
|
|
875
876
|
const target = event.target;
|
|
876
877
|
const currentSrc = target.src;
|
|
878
|
+
if (target.dataset.customFlag) {
|
|
879
|
+
target.style.display = "none";
|
|
880
|
+
return;
|
|
881
|
+
}
|
|
877
882
|
if (currentSrc && currentSrc.includes("/flags/")) {
|
|
878
883
|
const match = currentSrc.match(/\/flags\/([a-z]{2})\.svg/);
|
|
879
884
|
if (match) {
|
|
@@ -923,6 +928,7 @@ var LanguageSelect_default = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
923
928
|
src: getFlagImageUrl(value),
|
|
924
929
|
class: "lang-flag",
|
|
925
930
|
alt: `${value.native_name || value.name} flag`,
|
|
931
|
+
"data-custom-flag": (0, import_vue2.unref)(isReadyFlagUrl)(getFlagCode(value)) || void 0,
|
|
926
932
|
onError: onFlagError
|
|
927
933
|
}, null, 40, _hoisted_2)) : (0, import_vue2.createCommentVNode)("v-if", true),
|
|
928
934
|
(0, import_vue2.createElementVNode)("span", _hoisted_3, [
|
|
@@ -951,6 +957,7 @@ var LanguageSelect_default = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
951
957
|
src: getFlagImageUrl(option),
|
|
952
958
|
class: "lang-flag",
|
|
953
959
|
alt: `${option.name} flag`,
|
|
960
|
+
"data-custom-flag": (0, import_vue2.unref)(isReadyFlagUrl)(getFlagCode(option)) || void 0,
|
|
954
961
|
onError: onFlagError
|
|
955
962
|
}, null, 40, _hoisted_6)),
|
|
956
963
|
(0, import_vue2.createElementVNode)("span", _hoisted_7, [
|
|
@@ -1031,6 +1038,8 @@ var API_FIELD_TEXT = "t";
|
|
|
1031
1038
|
var API_FIELD_FROM = "from";
|
|
1032
1039
|
var API_FIELD_TO = "to";
|
|
1033
1040
|
var API_FIELD_CTX = "ctx";
|
|
1041
|
+
var API_FIELD_GLOSSARY_SRC = "gs";
|
|
1042
|
+
var API_FIELD_GLOSSARY_TGT = "gt";
|
|
1034
1043
|
var API_FIELD_TRANSLATIONS = "translations";
|
|
1035
1044
|
var API_FIELD_ERROR = "error";
|
|
1036
1045
|
var API_FIELD_TURNSTILE = "turnstileToken";
|
|
@@ -1044,6 +1053,11 @@ function resolveApiKey(options) {
|
|
|
1044
1053
|
if (!env) return void 0;
|
|
1045
1054
|
return env[options.apiKeyEnv || DEFAULT_API_KEY_ENV];
|
|
1046
1055
|
}
|
|
1056
|
+
function glossaryFields(t) {
|
|
1057
|
+
const src = t[API_FIELD_GLOSSARY_SRC];
|
|
1058
|
+
const tgt = t[API_FIELD_GLOSSARY_TGT];
|
|
1059
|
+
return src && tgt ? { [API_FIELD_GLOSSARY_SRC]: src, [API_FIELD_GLOSSARY_TGT]: tgt } : {};
|
|
1060
|
+
}
|
|
1047
1061
|
var translationCache = /* @__PURE__ */ new Map();
|
|
1048
1062
|
function getTranslationCacheKey(serviceTranslations, options) {
|
|
1049
1063
|
return JSON.stringify({
|
|
@@ -1051,7 +1065,8 @@ function getTranslationCacheKey(serviceTranslations, options) {
|
|
|
1051
1065
|
[API_FIELD_TEXT]: t[API_FIELD_TEXT],
|
|
1052
1066
|
[API_FIELD_FROM]: t[API_FIELD_FROM],
|
|
1053
1067
|
[API_FIELD_TO]: t[API_FIELD_TO],
|
|
1054
|
-
[API_FIELD_CTX]: t[API_FIELD_CTX] || options[API_FIELD_CTX] || "ui"
|
|
1068
|
+
[API_FIELD_CTX]: t[API_FIELD_CTX] || options[API_FIELD_CTX] || "ui",
|
|
1069
|
+
...glossaryFields(t)
|
|
1055
1070
|
})),
|
|
1056
1071
|
host: options.translatorHost || DEFAULT_TRANSLATOR_HOST,
|
|
1057
1072
|
context: options[API_FIELD_CTX] || "ui"
|
|
@@ -1096,7 +1111,8 @@ async function translateBatch(translations2 = [], options = {}) {
|
|
|
1096
1111
|
[API_FIELD_TEXT]: t[API_FIELD_TEXT],
|
|
1097
1112
|
[API_FIELD_FROM]: t[API_FIELD_FROM],
|
|
1098
1113
|
[API_FIELD_TO]: t[API_FIELD_TO],
|
|
1099
|
-
[API_FIELD_CTX]: t[API_FIELD_CTX] || options[API_FIELD_CTX] || "ui"
|
|
1114
|
+
[API_FIELD_CTX]: t[API_FIELD_CTX] || options[API_FIELD_CTX] || "ui",
|
|
1115
|
+
...glossaryFields(t)
|
|
1100
1116
|
})),
|
|
1101
1117
|
[API_FIELD_CTX]: options[API_FIELD_CTX] || "ui",
|
|
1102
1118
|
...turnstileToken ? { [API_FIELD_TURNSTILE]: turnstileToken } : {}
|