Compare commits

...

9 Commits

Author SHA1 Message Date
semantic-release-bot cf1d66d07e 🔖 chore(release): v1.0.0-beta.23 [skip ci]
# [1.0.0-beta.23](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.22...v1.0.0-beta.23) (2025-02-24)

### 🐛 Bug Fixes

* **auth**: Update email verification logic to use domain suffix check ([62662bb](https://github.com/perfect-panel/ppanel-web/commit/62662bb))
2025-02-24 05:10:30 +00:00
web@ppanel 62662bb79c 🐛 fix(auth): Update email verification logic to use domain suffix check 2025-02-24 12:07:41 +07:00
semantic-release-bot c0fb34fa50 🔖 chore(release): v1.0.0-beta.22 [skip ci]
# [1.0.0-beta.22](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.21...v1.0.0-beta.22) (2025-02-23)

### 🐛 Bug Fixes

* **locales**: Removed language file import to clean up unnecessary language support ([68f6ab2](https://github.com/perfect-panel/ppanel-web/commit/68f6ab2))
2025-02-23 15:06:05 +00:00
web@ppanel 68f6ab2e6c 🐛 fix(locales): Removed language file import to clean up unnecessary language support 2025-02-23 22:03:15 +07:00
semantic-release-bot ca642c2001 🔖 chore(release): v1.0.0-beta.21 [skip ci]
# [1.0.0-beta.21](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.20...v1.0.0-beta.21) (2025-02-23)

###  Features

* **privacy-policy**: Add privacy policy related text and links ([baa68f0](https://github.com/perfect-panel/ppanel-web/commit/baa68f0))

### 🐛 Bug Fixes

* **locales**: Removed multilingual files to clean up unnecessary language support ([5b151cd](https://github.com/perfect-panel/ppanel-web/commit/5b151cd))
* **locales**: Update custom HTML description in language file, ([87381da](https://github.com/perfect-panel/ppanel-web/commit/87381da))
* **table**: Update privacy policy tab translation key and remove unnecessary requestType from OAuth callback ([14b3af5](https://github.com/perfect-panel/ppanel-web/commit/14b3af5))
2025-02-23 14:17:29 +00:00
web@ppanel 5b151cdbfc 🐛 fix(locales): Removed multilingual files to clean up unnecessary language support 2025-02-23 21:14:17 +07:00
web@ppanel 14b3af5f96 🐛 fix(table): Update privacy policy tab translation key and remove unnecessary requestType from OAuth callback 2025-02-23 20:59:48 +07:00
web@ppanel baa68f03e3 feat(privacy-policy): Add privacy policy related text and links 2025-02-23 20:54:56 +07:00
web@ppanel 87381da1e5 🐛 fix(locales): Update custom HTML description in language file, 2025-02-23 17:25:31 +07:00
112 changed files with 363 additions and 1197 deletions
+39 -12
View File
@@ -1,38 +1,65 @@
<a name="readme-top"></a> <a name="readme-top"></a>
# Changelog # Changelog
# [1.0.0-beta.23](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.22...v1.0.0-beta.23) (2025-02-24)
### 🐛 Bug Fixes
* **auth**: Update email verification logic to use domain suffix check ([62662bb](https://github.com/perfect-panel/ppanel-web/commit/62662bb))
# [1.0.0-beta.22](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.21...v1.0.0-beta.22) (2025-02-23)
### 🐛 Bug Fixes
* **locales**: Removed language file import to clean up unnecessary language support ([68f6ab2](https://github.com/perfect-panel/ppanel-web/commit/68f6ab2))
# [1.0.0-beta.21](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.20...v1.0.0-beta.21) (2025-02-23)
### ✨ Features
* **privacy-policy**: Add privacy policy related text and links ([baa68f0](https://github.com/perfect-panel/ppanel-web/commit/baa68f0))
### 🐛 Bug Fixes
* **locales**: Removed multilingual files to clean up unnecessary language support ([5b151cd](https://github.com/perfect-panel/ppanel-web/commit/5b151cd))
* **locales**: Update custom HTML description in language file, ([87381da](https://github.com/perfect-panel/ppanel-web/commit/87381da))
* **table**: Update privacy policy tab translation key and remove unnecessary requestType from OAuth callback ([14b3af5](https://github.com/perfect-panel/ppanel-web/commit/14b3af5))
<a name="readme-top"></a>
# Changelog
# [1.0.0-beta.20](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.19...v1.0.0-beta.20) (2025-02-23) # [1.0.0-beta.20](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.19...v1.0.0-beta.20) (2025-02-23)
### 🐛 Bug Fixes ### 🐛 Bug Fixes
* **auth**: Add error handling to form submission and reset Turnstile on failure ([715d011](https://github.com/perfect-panel/ppanel-web/commit/715d011)) - **auth**: Add error handling to form submission and reset Turnstile on failure ([715d011](https://github.com/perfect-panel/ppanel-web/commit/715d011))
* **subscribe**: Update subscription domain placeholder to include examples; improve site name retrieval in global store ([c65a44c](https://github.com/perfect-panel/ppanel-web/commit/c65a44c)) - **subscribe**: Update subscription domain placeholder to include examples; improve site name retrieval in global store ([c65a44c](https://github.com/perfect-panel/ppanel-web/commit/c65a44c))
# [1.0.0-beta.19](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.18...v1.0.0-beta.19) (2025-02-23) # [1.0.0-beta.19](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.18...v1.0.0-beta.19) (2025-02-23)
### ✨ Features ### ✨ Features
* **form**: Make version field optional and set default value; update site domain placeholder for clarity ([42ba9e8](https://github.com/perfect-panel/ppanel-web/commit/42ba9e8)) - **form**: Make version field optional and set default value; update site domain placeholder for clarity ([42ba9e8](https://github.com/perfect-panel/ppanel-web/commit/42ba9e8))
### 🐛 Bug Fixes ### 🐛 Bug Fixes
* **auth**: Refactor forms to use Turnstile ref for reset functionality ([320a7dc](https://github.com/perfect-panel/ppanel-web/commit/320a7dc)) - **auth**: Refactor forms to use Turnstile ref for reset functionality ([320a7dc](https://github.com/perfect-panel/ppanel-web/commit/320a7dc))
# [1.0.0-beta.18](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.17...v1.0.0-beta.18) (2025-02-22) # [1.0.0-beta.18](https://github.com/perfect-panel/ppanel-web/compare/v1.0.0-beta.17...v1.0.0-beta.18) (2025-02-22)
### ✨ Features ### ✨ Features
* **platform**: Update platform naming and add keywords and custom HTML fields ([6384237](https://github.com/perfect-panel/ppanel-web/commit/6384237)) - **platform**: Update platform naming and add keywords and custom HTML fields ([6384237](https://github.com/perfect-panel/ppanel-web/commit/6384237))
* **site**: Added localization support for custom HTML and keyword fields ([f9d7736](https://github.com/perfect-panel/ppanel-web/commit/f9d7736)) - **site**: Added localization support for custom HTML and keyword fields ([f9d7736](https://github.com/perfect-panel/ppanel-web/commit/f9d7736))
### 🐛 Bug Fixes ### 🐛 Bug Fixes
* **locales**: Update custom HTML description for clarity across multiple languages ([557c5cd](https://github.com/perfect-panel/ppanel-web/commit/557c5cd)) - **locales**: Update custom HTML description for clarity across multiple languages ([557c5cd](https://github.com/perfect-panel/ppanel-web/commit/557c5cd))
<a name="readme-top"></a> <a name="readme-top"></a>
@@ -31,7 +31,7 @@ export default function RegisterForm({
const handleCheckUser = async (email: string) => { const handleCheckUser = async (email: string) => {
try { try {
if (!auth.email.enable_verify) return true; if (!auth.email.enable_domain_suffix) return true;
const domain = email.split('@')[1]; const domain = email.split('@')[1];
const isValid = auth.email?.domain_suffix_list.split('\n').includes(domain || ''); const isValid = auth.email?.domain_suffix_list.split('\n').includes(domain || '');
return isValid; return isValid;
+5
View File
@@ -1,6 +1,7 @@
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@workspace/ui/components/tabs'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@workspace/ui/components/tabs';
import { getTranslations } from 'next-intl/server'; import { getTranslations } from 'next-intl/server';
import Currency from './currency'; import Currency from './currency';
import PrivacyPolicy from './privacy-policy';
import Site from './site'; import Site from './site';
import Tos from './tos'; import Tos from './tos';
@@ -13,6 +14,7 @@ export default async function Page() {
<TabsTrigger value='site'>{t('tabs.site')}</TabsTrigger> <TabsTrigger value='site'>{t('tabs.site')}</TabsTrigger>
<TabsTrigger value='currency'>{t('tabs.currency')}</TabsTrigger> <TabsTrigger value='currency'>{t('tabs.currency')}</TabsTrigger>
<TabsTrigger value='tos'>{t('tabs.tos')}</TabsTrigger> <TabsTrigger value='tos'>{t('tabs.tos')}</TabsTrigger>
<TabsTrigger value='privacy-policy'>{t('privacy-policy.title')}</TabsTrigger>
</TabsList> </TabsList>
<TabsContent value='site'> <TabsContent value='site'>
<Site /> <Site />
@@ -23,6 +25,9 @@ export default async function Page() {
<TabsContent value='tos'> <TabsContent value='tos'>
<Tos /> <Tos />
</TabsContent> </TabsContent>
<TabsContent value='privacy-policy'>
<PrivacyPolicy />
</TabsContent>
</Tabs> </Tabs>
); );
} }
@@ -0,0 +1,48 @@
'use client';
import { getPrivacyPolicyConfig, updatePrivacyPolicyConfig } from '@/services/admin/system';
import { useQuery } from '@tanstack/react-query';
import { MarkdownEditor } from '@workspace/ui/custom-components/editor';
import { useTranslations } from 'next-intl';
import { toast } from 'sonner';
export default function PrivacyPolicy() {
const t = useTranslations('system.privacy-policy');
const { data, refetch, isFetched } = useQuery({
queryKey: ['getPrivacyPolicyConfig'],
queryFn: async () => {
const { data } = await getPrivacyPolicyConfig();
return data.data;
},
});
async function updateConfig(key: string, value: unknown) {
if (data?.[key] === value) return;
try {
await updatePrivacyPolicyConfig({
...data,
[key]: value,
} as API.PrivacyPolicyConfig);
toast.success(t('saveSuccess'));
refetch();
} catch (error) {
/* empty */
}
}
return (
isFetched && (
<div className='h-[calc(100dvh-132px-env(safe-area-inset-top))] overflow-hidden'>
<MarkdownEditor
title={t('title')}
value={data?.privacy_policy}
onBlur={(value) => {
if (data?.privacy_policy !== value) {
updateConfig('privacy_policy', value);
}
}}
/>
</div>
)
);
}
+29 -4
View File
@@ -11,13 +11,38 @@ import {
} from '@workspace/ui/components/select'; } from '@workspace/ui/components/select';
import { Icon } from '@workspace/ui/custom-components/icon'; import { Icon } from '@workspace/ui/custom-components/icon';
import { getCountry } from '@workspace/ui/utils'; import { getCountry } from '@workspace/ui/utils';
import { useLocale, useTranslations } from 'next-intl'; import { useLocale } from 'next-intl';
import { useRouter } from 'next/navigation'; import { useRouter } from 'next/navigation';
const languages = {
'cs-CZ': 'Čeština',
'de-DE': 'Deutsch',
'en-US': 'English',
'es-ES': 'Español',
'es-MX': 'Español (México)',
'fa-IR': 'فارسی',
'fi-FI': 'Suomi',
'fr-FR': 'Français',
'hi-IN': 'हिन्दी',
'hu-HU': 'Magyar',
'ja-JP': '日本語',
'ko-KR': '한국어',
'no-NO': 'Norsk',
'pl-PL': 'Polski',
'pt-BR': 'Português (Brasil)',
'ro-RO': 'Română',
'ru-RU': 'Русский',
'th-TH': 'ไทย',
'tr-TR': 'Türkçe',
'uk-UA': 'Українська',
'vi-VN': 'Tiếng Việt',
'zh-CN': '简体中文',
'zh-HK': '繁體中文',
} as const;
export default function LanguageSwitch() { export default function LanguageSwitch() {
const locale = useLocale(); const locale = useLocale();
const country = getCountry(locale); const country = getCountry(locale);
const t = useTranslations('language');
const router = useRouter(); const router = useRouter();
const handleLanguageChange = (value: string) => { const handleLanguageChange = (value: string) => {
@@ -31,7 +56,7 @@ export default function LanguageSwitch() {
<SelectValue> <SelectValue>
<div className='flex items-center'> <div className='flex items-center'>
<Icon icon={`flagpack:${country?.alpha2.toLowerCase()}`} className='!size-5' /> <Icon icon={`flagpack:${country?.alpha2.toLowerCase()}`} className='!size-5' />
<span className='sr-only'>{t(`${locale}`)}</span> <span className='sr-only'>{languages[locale as keyof typeof languages]}</span>
</div> </div>
</SelectValue> </SelectValue>
</SelectTrigger> </SelectTrigger>
@@ -40,7 +65,7 @@ export default function LanguageSwitch() {
<SelectItem key={`${item?.lang}-${item?.alpha2}`} value={`${item?.lang}-${item?.alpha2}`}> <SelectItem key={`${item?.lang}-${item?.alpha2}`} value={`${item?.lang}-${item?.alpha2}`}>
<div className='flex items-center gap-2'> <div className='flex items-center gap-2'>
<Icon icon={`flagpack:${item?.alpha2.toLowerCase()}`} className='!size-5' /> <Icon icon={`flagpack:${item?.alpha2.toLowerCase()}`} className='!size-5' />
{t(`${item?.lang}-${item?.alpha2}`)} {languages[`${item?.lang}-${item?.alpha2}` as keyof typeof languages]}
</div> </div>
</SelectItem> </SelectItem>
))} ))}
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "čeština",
"de-DE": "němčina",
"en-US": "angličtina",
"es-ES": "španělština",
"es-MX": "španělština (Mexiko)",
"fa-IR": "Perština",
"fi-FI": "finština",
"fr-FR": "Francouzština",
"hi-IN": "hindština",
"hu-HU": "maďarština",
"ja-JP": "Japonština",
"ko-KR": "Korejština",
"no-NO": "norština",
"pl-PL": "polština",
"pt-BR": "portugalština (Brazílie)",
"ro-RO": "rumunština",
"ru-RU": "ruština",
"th-TH": "thajština",
"tr-TR": "turečtina",
"uk-UA": "Ukrajinština",
"vi-VN": "Vietnamština",
"zh-CN": "čeština (CS)",
"zh-HK": "čínština (tradiční)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Pouze pro zobrazení, po změně se změní všechny měnové jednotky v systému", "currencyUnitDescription": "Pouze pro zobrazení, po změně se změní všechny měnové jednotky v systému",
"saveSuccess": "Úspěšně uloženo" "saveSuccess": "Úspěšně uloženo"
}, },
"privacy-policy": {
"saveSuccess": "Uložení bylo úspěšné",
"title": "Zásady ochrany osobních údajů"
},
"site": { "site": {
"customHtml": "Vlastní HTML", "customHtml": "Vlastní HTML",
"customHtmlDescription": "Vlastní HTML kód, který bude vložen na konec tagu <body> na stránce.", "customHtmlDescription": "Vlastní HTML kód, který bude vložen na konec tagu body na stránce.",
"keywords": "Klíčová slova", "keywords": "Klíčová slova",
"keywordsDescription": "Používá se pro SEO účely", "keywordsDescription": "Používá se pro SEO účely",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Tschechisch",
"de-DE": "Deutsch",
"en-US": "Englisch",
"es-ES": "Spanisch",
"es-MX": "Spanisch (Mexiko)",
"fa-IR": "Persisch",
"fi-FI": "Finnisch",
"fr-FR": "Französisch",
"hi-IN": "Hindi",
"hu-HU": "Ungarisch",
"ja-JP": "Japanisch",
"ko-KR": "Koreanisch",
"no-NO": "Norwegisch",
"pl-PL": "Polnisch",
"pt-BR": "Portugiesisch (Brasilien)",
"ro-RO": "Rumänisch",
"ru-RU": "Russisch",
"th-TH": "Thailändisch",
"tr-TR": "Türkisch",
"uk-UA": "Ukrainisch",
"vi-VN": "Vietnamesisch",
"zh-CN": "Chinesisch (vereinfacht)",
"zh-HK": "Chinesisch (Traditionell)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Nur zur Anzeige verwendet, nach der Änderung werden alle Währungseinheiten im System geändert", "currencyUnitDescription": "Nur zur Anzeige verwendet, nach der Änderung werden alle Währungseinheiten im System geändert",
"saveSuccess": "Erfolgreich gespeichert" "saveSuccess": "Erfolgreich gespeichert"
}, },
"privacy-policy": {
"saveSuccess": "Erfolgreich gespeichert",
"title": "Datenschutzrichtlinie"
},
"site": { "site": {
"customHtml": "Benutzerdefiniertes HTML", "customHtml": "Benutzerdefiniertes HTML",
"customHtmlDescription": "Benutzerdefinierter HTML-Code, der am Ende des <body>-Tags der Seite eingefügt werden soll.", "customHtmlDescription": "Benutzerdefinierter HTML-Code, der am Ende des body-Tags der Seite eingefügt werden soll.",
"keywords": "Schlüsselwörter", "keywords": "Schlüsselwörter",
"keywordsDescription": "Für SEO-Zwecke verwendet", "keywordsDescription": "Für SEO-Zwecke verwendet",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Czech",
"de-DE": "German",
"en-US": "English",
"es-ES": "Spanish",
"es-MX": "Spanish (Mexico)",
"fa-IR": "Persian",
"fi-FI": "Finnish",
"fr-FR": "French",
"hi-IN": "Hindi",
"hu-HU": "Hungarian",
"ja-JP": "Japanese",
"ko-KR": "Korean",
"no-NO": "Norwegian",
"pl-PL": "Polish",
"pt-BR": "Portuguese (Brazil)",
"ro-RO": "Romanian",
"ru-RU": "Russian",
"th-TH": "Thai",
"tr-TR": "Turkish",
"uk-UA": "Ukrainian",
"vi-VN": "Vietnamese",
"zh-CN": "Chinese (Simplified)",
"zh-HK": "Chinese (Traditional)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Used for display purposes only; changing this will affect all currency units in the system", "currencyUnitDescription": "Used for display purposes only; changing this will affect all currency units in the system",
"saveSuccess": "Save Successful" "saveSuccess": "Save Successful"
}, },
"privacy-policy": {
"saveSuccess": "Save Successful",
"title": "Privacy Policy"
},
"site": { "site": {
"customHtml": "Custom HTML", "customHtml": "Custom HTML",
"customHtmlDescription": "Custom HTML code to be injected into the bottom of the site's <body> tag.", "customHtmlDescription": "Custom HTML code to be injected into the bottom of the site's body tag.",
"keywords": "Keywords", "keywords": "Keywords",
"keywordsDescription": "Used for SEO purposes", "keywordsDescription": "Used for SEO purposes",
"logo": "Logo", "logo": "Logo",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Checo",
"de-DE": "Alemán",
"en-US": "inglés",
"es-ES": "español",
"es-MX": "Español (México)",
"fa-IR": "Persa",
"fi-FI": "Finlandés",
"fr-FR": "Francés",
"hi-IN": "hindi",
"hu-HU": "húngaro",
"ja-JP": "Japonés",
"ko-KR": "Coreano",
"no-NO": "Noruego",
"pl-PL": "Polaco",
"pt-BR": "portugués (Brasil)",
"ro-RO": "Rumano",
"ru-RU": "Ruso",
"th-TH": "Tailandés",
"tr-TR": "turco",
"uk-UA": "Ucraniano",
"vi-VN": "Vietnamita",
"zh-CN": "Español (España)",
"zh-HK": "chino (tradicional)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Solo para uso de visualización, al cambiarlo se modificarán todas las unidades monetarias en el sistema", "currencyUnitDescription": "Solo para uso de visualización, al cambiarlo se modificarán todas las unidades monetarias en el sistema",
"saveSuccess": "Guardado exitosamente" "saveSuccess": "Guardado exitosamente"
}, },
"privacy-policy": {
"saveSuccess": "Guardado con éxito",
"title": "Política de Privacidad"
},
"site": { "site": {
"customHtml": "HTML personalizado", "customHtml": "HTML personalizado",
"customHtmlDescription": "Código HTML personalizado que se inyectará en la parte inferior de la etiqueta <body> del sitio.", "customHtmlDescription": "Código HTML personalizado que se inyectará en la parte inferior de la etiqueta body del sitio.",
"keywords": "Palabras clave", "keywords": "Palabras clave",
"keywordsDescription": "Utilizado para fines de SEO", "keywordsDescription": "Utilizado para fines de SEO",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Checo",
"de-DE": "Alemán",
"en-US": "inglés",
"es-ES": "español",
"es-MX": "Español (México)",
"fa-IR": "Persa",
"fi-FI": "Finlandés",
"fr-FR": "Francés",
"hi-IN": "Hindi",
"hu-HU": "Húngaro",
"ja-JP": "Japonés",
"ko-KR": "Coreano",
"no-NO": "Noruego",
"pl-PL": "Polaco",
"pt-BR": "portugués (Brasil)",
"ro-RO": "Rumano",
"ru-RU": "Ruso",
"th-TH": "Tailandés",
"tr-TR": "turco",
"uk-UA": "Ucraniano",
"vi-VN": "Vietnamita",
"zh-CN": "español (México)",
"zh-HK": "Chino (Tradicional)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Solo para fines de visualización, cambiarlo alterará todas las unidades monetarias en el sistema", "currencyUnitDescription": "Solo para fines de visualización, cambiarlo alterará todas las unidades monetarias en el sistema",
"saveSuccess": "Guardado exitosamente" "saveSuccess": "Guardado exitosamente"
}, },
"privacy-policy": {
"saveSuccess": "Guardado exitoso",
"title": "Política de Privacidad"
},
"site": { "site": {
"customHtml": "HTML personalizado", "customHtml": "HTML personalizado",
"customHtmlDescription": "Código HTML personalizado que se inyectará al final de la etiqueta <body> del sitio.", "customHtmlDescription": "Código HTML personalizado que se inyectará al final de la etiqueta body del sitio.",
"keywords": "Palabras clave", "keywords": "Palabras clave",
"keywordsDescription": "Utilizado para propósitos de SEO", "keywordsDescription": "Utilizado para propósitos de SEO",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "چکی",
"de-DE": "آلمانی",
"en-US": "انگلیسی",
"es-ES": "اسپانیایی",
"es-MX": "اسپانیایی (مکزیک)",
"fa-IR": "فارسی",
"fi-FI": "فنلاندی",
"fr-FR": "فرانسوی",
"hi-IN": "هندی",
"hu-HU": "مجاری",
"ja-JP": "ژاپنی",
"ko-KR": "کره‌ای",
"no-NO": "نروژی",
"pl-PL": "لهستانی",
"pt-BR": "پرتغالی (برزیل)",
"ro-RO": "رومانیایی",
"ru-RU": "روسی",
"th-TH": "تایلندی",
"tr-TR": "ترکی",
"uk-UA": "اوکراینی",
"vi-VN": "ویتنامی",
"zh-CN": "چینی (ساده شده)",
"zh-HK": "چینی (سنتی)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "فقط برای نمایش استفاده می‌شود؛ تغییر این مورد بر تمام واحدهای ارزی در سیستم تأثیر خواهد گذاشت", "currencyUnitDescription": "فقط برای نمایش استفاده می‌شود؛ تغییر این مورد بر تمام واحدهای ارزی در سیستم تأثیر خواهد گذاشت",
"saveSuccess": "ذخیره‌سازی موفقیت‌آمیز" "saveSuccess": "ذخیره‌سازی موفقیت‌آمیز"
}, },
"privacy-policy": {
"saveSuccess": "ذخیره با موفقیت انجام شد",
"title": "سیاست حفظ حریم خصوصی"
},
"site": { "site": {
"customHtml": "HTML سفارشی", "customHtml": "HTML سفارشی",
"customHtmlDescription": "کد HTML سفارشی که باید در انتهای تگ <body> سایت وارد شود.", "customHtmlDescription": "کد HTML سفارشی که باید در انتهای تگ body سایت وارد شود.",
"keywords": "کلمات کلیدی", "keywords": "کلمات کلیدی",
"keywordsDescription": "برای اهداف سئو استفاده می‌شود", "keywordsDescription": "برای اهداف سئو استفاده می‌شود",
"logo": "لوگو", "logo": "لوگو",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "tšekki",
"de-DE": "Saksa",
"en-US": "englanti",
"es-ES": "espanja",
"es-MX": "espanja (Meksiko)",
"fa-IR": "Persia",
"fi-FI": "suomi",
"fr-FR": "ranska",
"hi-IN": "hindi",
"hu-HU": "unkarinkieli",
"ja-JP": "japani",
"ko-KR": "Korea",
"no-NO": "norja",
"pl-PL": "puola",
"pt-BR": "portugali (Brasilia)",
"ro-RO": "romania",
"ru-RU": "Venäjä",
"th-TH": "thaikieli",
"tr-TR": "turkki",
"uk-UA": "ukrainaksi",
"vi-VN": "vietnamiksi",
"zh-CN": "kiina (yksinkertaistettu)",
"zh-HK": "kiina (perinteinen)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Käytetään vain näyttötarkoituksiin, muutoksen jälkeen kaikki järjestelmän valuuttayksiköt muuttuvat", "currencyUnitDescription": "Käytetään vain näyttötarkoituksiin, muutoksen jälkeen kaikki järjestelmän valuuttayksiköt muuttuvat",
"saveSuccess": "Tallennus onnistui" "saveSuccess": "Tallennus onnistui"
}, },
"privacy-policy": {
"saveSuccess": "Tallennus onnistui",
"title": "Tietosuojakäytäntö"
},
"site": { "site": {
"customHtml": "Mukautettu HTML", "customHtml": "Mukautettu HTML",
"customHtmlDescription": "Mukautettu HTML-koodi, joka lisätään sivuston <body> -tagin loppuun.", "customHtmlDescription": "Mukautettu HTML-koodi, joka lisätään sivuston body -tagin loppuun.",
"keywords": "Avainsanat", "keywords": "Avainsanat",
"keywordsDescription": "Käytetään SEO-tarkoituksiin", "keywordsDescription": "Käytetään SEO-tarkoituksiin",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Tchèque",
"de-DE": "Allemand",
"en-US": "anglais",
"es-ES": "Espagnol",
"es-MX": "Espagnol (Mexique)",
"fa-IR": "Persan",
"fi-FI": "finnois",
"fr-FR": "français",
"hi-IN": "hindi",
"hu-HU": "Hongrois",
"ja-JP": "Japonais",
"ko-KR": "coréen",
"no-NO": "Norvégien",
"pl-PL": "Polonais",
"pt-BR": "portugais (Brésil)",
"ro-RO": "Roumain",
"ru-RU": "Russe",
"th-TH": "thaïlandais",
"tr-TR": "turc",
"uk-UA": "Ukrainien",
"vi-VN": "Vietnamien",
"zh-CN": "français (France)",
"zh-HK": "chinois (traditionnel)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Utilisé uniquement pour l'affichage, toute modification entraînera un changement de toutes les unités monétaires dans le système", "currencyUnitDescription": "Utilisé uniquement pour l'affichage, toute modification entraînera un changement de toutes les unités monétaires dans le système",
"saveSuccess": "Enregistrement réussi" "saveSuccess": "Enregistrement réussi"
}, },
"privacy-policy": {
"saveSuccess": "Enregistrement réussi",
"title": "Politique de confidentialité"
},
"site": { "site": {
"customHtml": "HTML personnalisé", "customHtml": "HTML personnalisé",
"customHtmlDescription": "Code HTML personnalisé à injecter dans le bas de la balise <body> du site.", "customHtmlDescription": "Code HTML personnalisé à injecter dans le bas de la balise body du site.",
"keywords": "Mots-clés", "keywords": "Mots-clés",
"keywordsDescription": "Utilisé à des fins de référencement", "keywordsDescription": "Utilisé à des fins de référencement",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "चेक",
"de-DE": "जर्मन",
"en-US": "अंग्रेज़ी",
"es-ES": "स्पेनिश",
"es-MX": "स्पेनिश (मेक्सिको)",
"fa-IR": "फ़ारसी",
"fi-FI": "फिनिश",
"fr-FR": "फ्रेंच",
"hi-IN": "हिंदी",
"hu-HU": "हंगेरियन",
"ja-JP": "जापानी",
"ko-KR": "कोरियाई",
"no-NO": "नॉर्वेजियन",
"pl-PL": "पोलिश",
"pt-BR": "पुर्तगाली (ब्राज़ील)",
"ro-RO": "रोमानियाई",
"ru-RU": "रूसी",
"th-TH": "थाई",
"tr-TR": "तुर्की",
"uk-UA": "यूक्रेनी",
"vi-VN": "वियतनामी",
"zh-CN": "चीनी (सरल)",
"zh-HK": "चीनी (पारंपरिक)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "केवल प्रदर्शन के लिए उपयोग किया जाता है, परिवर्तन के बाद सिस्टम में सभी मुद्रा इकाइयाँ बदल जाएँगी", "currencyUnitDescription": "केवल प्रदर्शन के लिए उपयोग किया जाता है, परिवर्तन के बाद सिस्टम में सभी मुद्रा इकाइयाँ बदल जाएँगी",
"saveSuccess": "सफलतापूर्वक सहेजा गया" "saveSuccess": "सफलतापूर्वक सहेजा गया"
}, },
"privacy-policy": {
"saveSuccess": "सफलता से सहेजा गया",
"title": "गोपनीयता नीति"
},
"site": { "site": {
"customHtml": "कस्टम HTML", "customHtml": "कस्टम HTML",
"customHtmlDescription": "साइट के <body> टैग के नीचे इंजेक्ट करने के लिए कस्टम HTML कोड।", "customHtmlDescription": "साइट के bodyैग के नीचे इंजेक्ट करने के लिए कस्टम HTML कोड।",
"keywords": "कीवर्ड", "keywords": "कीवर्ड",
"keywordsDescription": "SEO उद्देश्यों के लिए उपयोग किया जाता है", "keywordsDescription": "SEO उद्देश्यों के लिए उपयोग किया जाता है",
"logo": "लोगो", "logo": "लोगो",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "cseh",
"de-DE": "német",
"en-US": "angol",
"es-ES": "spanyol",
"es-MX": "spanyol (Mexikó)",
"fa-IR": "Perzsa",
"fi-FI": "finn",
"fr-FR": "francia",
"hi-IN": "hindi",
"hu-HU": "magyar",
"ja-JP": "japán",
"ko-KR": "Koreai",
"no-NO": "norvég",
"pl-PL": "lengyel",
"pt-BR": "portugál (Brazília)",
"ro-RO": "román nyelv",
"ru-RU": "Orosz",
"th-TH": "thai nyelv",
"tr-TR": "török",
"uk-UA": "ukrán",
"vi-VN": "vietnámi",
"zh-CN": "kínai (egyszerűsített)",
"zh-HK": "Kínai (hagyományos)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Csak megjelenítésre használatos, a módosítás után a rendszer összes pénznem egysége megváltozik", "currencyUnitDescription": "Csak megjelenítésre használatos, a módosítás után a rendszer összes pénznem egysége megváltozik",
"saveSuccess": "Sikeres mentés" "saveSuccess": "Sikeres mentés"
}, },
"privacy-policy": {
"saveSuccess": "Mentés sikeres",
"title": "Adatvédelmi irányelvek"
},
"site": { "site": {
"customHtml": "Egyedi HTML", "customHtml": "Egyedi HTML",
"customHtmlDescription": "Egyedi HTML kód, amelyet a webhely <body> címkéjének aljára kell beilleszteni.", "customHtmlDescription": "Egyedi HTML kód, amelyet a webhely bodyímkéjének aljára kell beilleszteni.",
"keywords": "Kulcsszavak", "keywords": "Kulcsszavak",
"keywordsDescription": "SEO célokra használva", "keywordsDescription": "SEO célokra használva",
"logo": "LOGÓ", "logo": "LOGÓ",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "チェコ語",
"de-DE": "ドイツ語",
"en-US": "英語",
"es-ES": "スペイン語",
"es-MX": "スペイン語(メキシコ)",
"fa-IR": "ペルシャ語",
"fi-FI": "フィンランド語",
"fr-FR": "フランス語",
"hi-IN": "ヒンディー語",
"hu-HU": "ハンガリー語",
"ja-JP": "日本語",
"ko-KR": "韓国語",
"no-NO": "ノルウェー語",
"pl-PL": "ポーランド語",
"pt-BR": "ポルトガル語(ブラジル)",
"ro-RO": "ルーマニア語",
"ru-RU": "ロシア語",
"th-TH": "タイ語",
"tr-TR": "トルコ語",
"uk-UA": "ウクライナ語",
"vi-VN": "ベトナム語",
"zh-CN": "日本語",
"zh-HK": "中国語(繁体字)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "表示のみに使用され、変更するとシステム内のすべての通貨単位が変更されます", "currencyUnitDescription": "表示のみに使用され、変更するとシステム内のすべての通貨単位が変更されます",
"saveSuccess": "保存に成功しました" "saveSuccess": "保存に成功しました"
}, },
"privacy-policy": {
"saveSuccess": "保存に成功しました",
"title": "プライバシーポリシー"
},
"site": { "site": {
"customHtml": "カスタムHTML", "customHtml": "カスタムHTML",
"customHtmlDescription": "サイトの <body> タグの下部に挿入されるカスタム HTML コード。", "customHtmlDescription": "サイトの body タグの下部に挿入されるカスタム HTML コード。",
"keywords": "キーワード", "keywords": "キーワード",
"keywordsDescription": "SEO目的で使用されます", "keywordsDescription": "SEO目的で使用されます",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "체코어",
"de-DE": "독일어",
"en-US": "영어",
"es-ES": "스페인어",
"es-MX": "스페인어(멕시코)",
"fa-IR": "페르시아어",
"fi-FI": "핀란드어",
"fr-FR": "프랑스어",
"hi-IN": "힌디어",
"hu-HU": "헝가리어",
"ja-JP": "일본어",
"ko-KR": "한국어",
"no-NO": "노르웨이어",
"pl-PL": "폴란드어",
"pt-BR": "포르투갈어(브라질)",
"ro-RO": "루마니아어",
"ru-RU": "러시아어",
"th-TH": "태국어",
"tr-TR": "터키어",
"uk-UA": "우크라이나어",
"vi-VN": "베트남어",
"zh-CN": "중국어(간체)",
"zh-HK": "중국어(번체)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "표시용으로만 사용되며, 변경 시 시스템 내 모든 통화 단위가 변경됩니다", "currencyUnitDescription": "표시용으로만 사용되며, 변경 시 시스템 내 모든 통화 단위가 변경됩니다",
"saveSuccess": "저장 성공" "saveSuccess": "저장 성공"
}, },
"privacy-policy": {
"saveSuccess": "저장 성공",
"title": "개인정보 처리방침"
},
"site": { "site": {
"customHtml": "사용자 정의 HTML", "customHtml": "사용자 정의 HTML",
"customHtmlDescription": "사이트의 <body> 태그 하단에 삽입될 사용자 정의 HTML 코드입니다.", "customHtmlDescription": "사이트의 body그 하단에 삽입될 사용자 정의 HTML 코드입니다.",
"keywords": "키워드", "keywords": "키워드",
"keywordsDescription": "SEO 목적으로 사용됨", "keywordsDescription": "SEO 목적으로 사용됨",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Tsjekkisk",
"de-DE": "Tysk",
"en-US": "engelsk",
"es-ES": "Spansk",
"es-MX": "Spansk (Mexico)",
"fa-IR": "Persisk",
"fi-FI": "Finsk",
"fr-FR": "Fransk",
"hi-IN": "Hindi",
"hu-HU": "Ungarsk",
"ja-JP": "Japansk",
"ko-KR": "Koreansk",
"no-NO": "Norsk",
"pl-PL": "Polsk",
"pt-BR": "Portugisisk (Brasil)",
"ro-RO": "Rumensk",
"ru-RU": "Russisk",
"th-TH": "Thai",
"tr-TR": "Tyrkisk",
"uk-UA": "Ukrainsk",
"vi-VN": "Vietnamesisk",
"zh-CN": "Kinesisk (forenklet)",
"zh-HK": "Kinesisk (tradisjonell)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Kun for visningsformål, endring vil påvirke alle valutaenheter i systemet", "currencyUnitDescription": "Kun for visningsformål, endring vil påvirke alle valutaenheter i systemet",
"saveSuccess": "Lagring vellykket" "saveSuccess": "Lagring vellykket"
}, },
"privacy-policy": {
"saveSuccess": "Lagring vellykket",
"title": "Personvernerklæring"
},
"site": { "site": {
"customHtml": "Egendefinert HTML", "customHtml": "Egendefinert HTML",
"customHtmlDescription": "Egendefinert HTML-kode som skal settes inn i bunnen av nettstedets <body>-tag.", "customHtmlDescription": "Egendefinert HTML-kode som skal settes inn i bunnen av nettstedets body-tag.",
"keywords": "Nøkkelord", "keywords": "Nøkkelord",
"keywordsDescription": "Brukes til SEO-formål", "keywordsDescription": "Brukes til SEO-formål",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "język czeski",
"de-DE": "niemiecki",
"en-US": "angielski",
"es-ES": "hiszpański",
"es-MX": "hiszpański (Meksyk)",
"fa-IR": "perski",
"fi-FI": "fiński",
"fr-FR": "francuski",
"hi-IN": "hindi",
"hu-HU": "język węgierski",
"ja-JP": "język japoński",
"ko-KR": "Koreański",
"no-NO": "norweski",
"pl-PL": "Polski",
"pt-BR": "portugalski (Brazylia)",
"ro-RO": "rumuński",
"ru-RU": "Rosyjski",
"th-TH": "tajski",
"tr-TR": "turecki",
"uk-UA": "ukraiński",
"vi-VN": "język wietnamski",
"zh-CN": "chiński (uproszczony)",
"zh-HK": "chiński (tradycyjny)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Używane wyłącznie do celów wyświetlania, po zmianie wszystkie jednostki walutowe w systemie zostaną zmienione", "currencyUnitDescription": "Używane wyłącznie do celów wyświetlania, po zmianie wszystkie jednostki walutowe w systemie zostaną zmienione",
"saveSuccess": "Zapisano pomyślnie" "saveSuccess": "Zapisano pomyślnie"
}, },
"privacy-policy": {
"saveSuccess": "Zapisano pomyślnie",
"title": "Polityka prywatności"
},
"site": { "site": {
"customHtml": "Niestandardowy HTML", "customHtml": "Niestandardowy HTML",
"customHtmlDescription": "Niestandardowy kod HTML, który ma być wstrzyknięty na końcu tagu <body> witryny.", "customHtmlDescription": "Niestandardowy kod HTML, który ma być wstrzyknięty na końcu tagu bodyitryny.",
"keywords": "Słowa kluczowe", "keywords": "Słowa kluczowe",
"keywordsDescription": "Używane do celów SEO", "keywordsDescription": "Używane do celów SEO",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Tcheco",
"de-DE": "Alemão",
"en-US": "inglês",
"es-ES": "Espanhol",
"es-MX": "Espanhol (México)",
"fa-IR": "Persa",
"fi-FI": "Finlandês",
"fr-FR": "Francês",
"hi-IN": "hindi",
"hu-HU": "Húngaro",
"ja-JP": "Japonês",
"ko-KR": "Coreano",
"no-NO": "Norueguês",
"pl-PL": "Polonês",
"pt-BR": "Português (Brasil)",
"ro-RO": "Romeno",
"ru-RU": "Russo",
"th-TH": "Tailandês",
"tr-TR": "turco",
"uk-UA": "Ucraniano",
"vi-VN": "Vietnamita",
"zh-CN": "Chinês (Simplificado)",
"zh-HK": "Chinês (Tradicional)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Usado apenas para exibição, após a alteração todas as unidades monetárias no sistema serão alteradas", "currencyUnitDescription": "Usado apenas para exibição, após a alteração todas as unidades monetárias no sistema serão alteradas",
"saveSuccess": "Salvo com sucesso" "saveSuccess": "Salvo com sucesso"
}, },
"privacy-policy": {
"saveSuccess": "Salvo com Sucesso",
"title": "Política de Privacidade"
},
"site": { "site": {
"customHtml": "HTML Personalizado", "customHtml": "HTML Personalizado",
"customHtmlDescription": "Código HTML personalizado a ser inserido no final da tag <body> do site.", "customHtmlDescription": "Código HTML personalizado a ser inserido no final da tag bodyo site.",
"keywords": "Palavras-chave", "keywords": "Palavras-chave",
"keywordsDescription": "Usado para fins de SEO", "keywordsDescription": "Usado para fins de SEO",
"logo": "LOGO", "logo": "LOGO",
-1
View File
@@ -10,7 +10,6 @@ export default getRequestConfig(async () => {
const locale = cookieLocale || defaultLocale || NEXT_PUBLIC_DEFAULT_LANGUAGE; const locale = cookieLocale || defaultLocale || NEXT_PUBLIC_DEFAULT_LANGUAGE;
const messages = { const messages = {
'language': (await import(`./${locale}/language.json`)).default,
'menu': (await import(`./${locale}/menu.json`)).default, 'menu': (await import(`./${locale}/menu.json`)).default,
'auth': (await import(`./${locale}/auth.json`)).default, 'auth': (await import(`./${locale}/auth.json`)).default,
'common': (await import(`./${locale}/common.json`)).default, 'common': (await import(`./${locale}/common.json`)).default,
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "cehă",
"de-DE": "Germană",
"en-US": "engleză",
"es-ES": "Spaniolă",
"es-MX": "Spaniolă (Mexic)",
"fa-IR": "Persană",
"fi-FI": "Finlandeză",
"fr-FR": "franceză",
"hi-IN": "hindi",
"hu-HU": "Maghiară",
"ja-JP": "Japoneză",
"ko-KR": "Coreeană",
"no-NO": "norvegiană",
"pl-PL": "Poloneză",
"pt-BR": "Portugheză (Brazilia)",
"ro-RO": "Română",
"ru-RU": "Rusă",
"th-TH": "Thailandeză",
"tr-TR": "turcă",
"uk-UA": "Ucraineană",
"vi-VN": "Vietnameză",
"zh-CN": "Chineză (Simplificată)",
"zh-HK": "Chineză (tradițională)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Utilizat doar pentru afișare, după modificare toate unitățile monetare din sistem vor fi schimbate", "currencyUnitDescription": "Utilizat doar pentru afișare, după modificare toate unitățile monetare din sistem vor fi schimbate",
"saveSuccess": "Salvare reușită" "saveSuccess": "Salvare reușită"
}, },
"privacy-policy": {
"saveSuccess": "Salvare reușită",
"title": "Politica de confidențialitate"
},
"site": { "site": {
"customHtml": "HTML personalizat", "customHtml": "HTML personalizat",
"customHtmlDescription": "Cod HTML personalizat care va fi injectat în partea de jos a etichetei <body> a site-ului.", "customHtmlDescription": "Cod HTML personalizat care va fi injectat în partea de jos a etichetei body a site-ului.",
"keywords": "Cuvinte cheie", "keywords": "Cuvinte cheie",
"keywordsDescription": "Utilizate în scopuri SEO", "keywordsDescription": "Utilizate în scopuri SEO",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Чешский",
"de-DE": "Немецкий",
"en-US": "английский",
"es-ES": "испанский",
"es-MX": "испанский (Мексика)",
"fa-IR": "Персидский",
"fi-FI": "финский",
"fr-FR": "Французский",
"hi-IN": "хинди",
"hu-HU": "Венгерский",
"ja-JP": "японский",
"ko-KR": "Корейский",
"no-NO": "Норвежский",
"pl-PL": "польский",
"pt-BR": "португальский (Бразилия)",
"ro-RO": "румынский",
"ru-RU": "Русский",
"th-TH": "тайский",
"tr-TR": "Турецкий",
"uk-UA": "Украинский",
"vi-VN": "вьетнамский",
"zh-CN": "Китайский (упрощенный)",
"zh-HK": "китайский (традиционный)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Используется только для отображения, после изменения все валютные единицы в системе будут изменены", "currencyUnitDescription": "Используется только для отображения, после изменения все валютные единицы в системе будут изменены",
"saveSuccess": "Успешно сохранено" "saveSuccess": "Успешно сохранено"
}, },
"privacy-policy": {
"saveSuccess": "Сохранение успешно",
"title": "Политика конфиденциальности"
},
"site": { "site": {
"customHtml": "Пользовательский HTML", "customHtml": "Пользовательский HTML",
"customHtmlDescription": "Пользовательский HTML-код, который будет вставлен в конец тега <body> сайта.", "customHtmlDescription": "Пользовательский HTML-код, который будет вставлен в конец тега body сайта.",
"keywords": "Ключевые слова", "keywords": "Ключевые слова",
"keywordsDescription": "Используется для SEO", "keywordsDescription": "Используется для SEO",
"logo": "ЛОГОТИП", "logo": "ЛОГОТИП",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "ภาษาเช็ก",
"de-DE": "ภาษาเยอรมัน",
"en-US": "ภาษาอังกฤษ",
"es-ES": "ภาษาสเปน",
"es-MX": "สเปน (เม็กซิโก)",
"fa-IR": "เปอร์เซีย",
"fi-FI": "ภาษาฟินแลนด์",
"fr-FR": "ภาษาฝรั่งเศส",
"hi-IN": "ภาษาฮินดี",
"hu-HU": "ภาษาฮังการี",
"ja-JP": "ภาษาญี่ปุ่น",
"ko-KR": "เกาหลี",
"no-NO": "ภาษานอร์เวย์",
"pl-PL": "ภาษาโปแลนด์",
"pt-BR": "โปรตุเกส (บราซิล)",
"ro-RO": "โรมาเนีย",
"ru-RU": "ภาษารัสเซีย",
"th-TH": "ภาษาไทย",
"tr-TR": "ตุรกี",
"uk-UA": "ยูเครน",
"vi-VN": "ภาษาเวียดนาม",
"zh-CN": "ภาษาไทย",
"zh-HK": "ภาษาจีน (ตัวเต็ม)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "ใช้สำหรับการแสดงผลเท่านั้น การเปลี่ยนแปลงจะส่งผลต่อหน่วยสกุลเงินทั้งหมดในระบบ", "currencyUnitDescription": "ใช้สำหรับการแสดงผลเท่านั้น การเปลี่ยนแปลงจะส่งผลต่อหน่วยสกุลเงินทั้งหมดในระบบ",
"saveSuccess": "บันทึกสำเร็จ" "saveSuccess": "บันทึกสำเร็จ"
}, },
"privacy-policy": {
"saveSuccess": "บันทึกสำเร็จ",
"title": "นโยบายความเป็นส่วนตัว"
},
"site": { "site": {
"customHtml": "HTML ที่กำหนดเอง", "customHtml": "HTML ที่กำหนดเอง",
"customHtmlDescription": "รหัส HTML ที่กำหนดเองเพื่อแทรกลงในส่วนล่างของแท็ก <body> ของเว็บไซต์.", "customHtmlDescription": "รหัส HTML ที่กำหนดเองเพื่อแทรกลงในส่วนล่างของแท็ก body ของเว็บไซต์.",
"keywords": "คำสำคัญ", "keywords": "คำสำคัญ",
"keywordsDescription": "ใช้สำหรับวัตถุประสงค์ SEO", "keywordsDescription": "ใช้สำหรับวัตถุประสงค์ SEO",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Çekçe",
"de-DE": "Almanca",
"en-US": "İngilizce",
"es-ES": "İspanyolca",
"es-MX": "İspanyolca (Meksika)",
"fa-IR": "Farsça",
"fi-FI": "Fince",
"fr-FR": "Fransızca",
"hi-IN": "Hintçe",
"hu-HU": "Macarca",
"ja-JP": "Japonca",
"ko-KR": "Korece",
"no-NO": "Norveççe",
"pl-PL": "Lehçe",
"pt-BR": "Portekizce (Brezilya)",
"ro-RO": "Romence",
"ru-RU": "Rusça",
"th-TH": "Tayca",
"tr-TR": "Türkçe",
"uk-UA": "Ukraynaca",
"vi-VN": "Vietnamca",
"zh-CN": "Çince (Basitleştirilmiş)",
"zh-HK": "Çince (Geleneksel)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Sadece gösterim amaçlı kullanılır, değiştirildiğinde sistemdeki tüm para birimi birimleri değişecektir", "currencyUnitDescription": "Sadece gösterim amaçlı kullanılır, değiştirildiğinde sistemdeki tüm para birimi birimleri değişecektir",
"saveSuccess": "Başarıyla kaydedildi" "saveSuccess": "Başarıyla kaydedildi"
}, },
"privacy-policy": {
"saveSuccess": "Başarıyla Kaydedildi",
"title": "Gizlilik Politikası"
},
"site": { "site": {
"customHtml": "Özel HTML", "customHtml": "Özel HTML",
"customHtmlDescription": "Site'in <body> etiketinin altına yerleştirilecek özel HTML kodu.", "customHtmlDescription": "Site'in body etiketinin altına yerleştirilecek özel HTML kodu.",
"keywords": "Anahtar Kelimeler", "keywords": "Anahtar Kelimeler",
"keywordsDescription": "SEO amaçları için kullanılır", "keywordsDescription": "SEO amaçları için kullanılır",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "чеська",
"de-DE": "Німецька",
"en-US": "англійська",
"es-ES": "іспанська",
"es-MX": "іспанська (Мексика)",
"fa-IR": "Перська",
"fi-FI": "Фінська",
"fr-FR": "Французька",
"hi-IN": "гінді",
"hu-HU": "угорська",
"ja-JP": "японська",
"ko-KR": "Корейська",
"no-NO": "Норвезька",
"pl-PL": "Польська",
"pt-BR": "португальська (Бразилія)",
"ro-RO": "румунська",
"ru-RU": "Російська",
"th-TH": "тайська",
"tr-TR": "турецька",
"uk-UA": "українська мова",
"vi-VN": "В'єтнамська",
"zh-CN": "українська (Україна)",
"zh-HK": "китайська (традиційна)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Використовується лише для відображення, після зміни всі валютні одиниці в системі будуть змінені", "currencyUnitDescription": "Використовується лише для відображення, після зміни всі валютні одиниці в системі будуть змінені",
"saveSuccess": "Успішно збережено" "saveSuccess": "Успішно збережено"
}, },
"privacy-policy": {
"saveSuccess": "Збережено успішно",
"title": "Політика конфіденційності"
},
"site": { "site": {
"customHtml": "Користувацький HTML", "customHtml": "Користувацький HTML",
"customHtmlDescription": "Користувацький HTML-код, який буде вставлено в кінець тегу <body> сайту.", "customHtmlDescription": "Користувацький HTML-код, який буде вставлено в кінець тегу body сайту.",
"keywords": "Ключові слова", "keywords": "Ключові слова",
"keywordsDescription": "Використовується для SEO", "keywordsDescription": "Використовується для SEO",
"logo": "ЛОГО", "logo": "ЛОГО",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Tiếng Séc",
"de-DE": "Tiếng Đức",
"en-US": "tiếng Anh",
"es-ES": "Tiếng Tây Ban Nha",
"es-MX": "Tiếng Tây Ban Nha (Mexico)",
"fa-IR": "Tiếng Ba Tư",
"fi-FI": "Tiếng Phần Lan",
"fr-FR": "Tiếng Pháp",
"hi-IN": "Tiếng Hindi",
"hu-HU": "Tiếng Hungary",
"ja-JP": "Tiếng Nhật",
"ko-KR": "Tiếng Hàn",
"no-NO": "Tiếng Na Uy",
"pl-PL": "Tiếng Ba Lan",
"pt-BR": "Tiếng Bồ Đào Nha (Brazil)",
"ro-RO": "Tiếng Romania",
"ru-RU": "Tiếng Nga",
"th-TH": "Tiếng Thái",
"tr-TR": "Tiếng Thổ Nhĩ Kỳ",
"uk-UA": "Tiếng Ukraina",
"vi-VN": "Tiếng Việt",
"zh-CN": "Tiếng Trung (Giản thể)",
"zh-HK": "Tiếng Trung (Phồn thể)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "Chỉ sử dụng để hiển thị, sau khi thay đổi tất cả các đơn vị tiền tệ trong hệ thống sẽ thay đổi", "currencyUnitDescription": "Chỉ sử dụng để hiển thị, sau khi thay đổi tất cả các đơn vị tiền tệ trong hệ thống sẽ thay đổi",
"saveSuccess": "Lưu thành công" "saveSuccess": "Lưu thành công"
}, },
"privacy-policy": {
"saveSuccess": "Lưu thành công",
"title": "Chính sách bảo mật"
},
"site": { "site": {
"customHtml": "HTML tùy chỉnh", "customHtml": "HTML tùy chỉnh",
"customHtmlDescription": "Mã HTML tùy chỉnh để được chèn vào cuối thẻ <body> của trang.", "customHtmlDescription": "Mã HTML tùy chỉnh để được chèn vào cuối thẻ body của trang.",
"keywords": "Từ khóa", "keywords": "Từ khóa",
"keywordsDescription": "Dùng cho mục đích SEO", "keywordsDescription": "Dùng cho mục đích SEO",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "捷克语",
"de-DE": "德语",
"en-US": "英语",
"es-ES": "西班牙语",
"es-MX": "西班牙语(墨西哥)",
"fa-IR": "波斯语",
"fi-FI": "芬兰语",
"fr-FR": "法语",
"hi-IN": "印地语",
"hu-HU": "匈牙利语",
"ja-JP": "日语",
"ko-KR": "韩语",
"no-NO": "挪威语",
"pl-PL": "波兰语",
"pt-BR": "葡萄牙语(巴西)",
"ro-RO": "罗马尼亚语",
"ru-RU": "俄语",
"th-TH": "泰语",
"tr-TR": "土耳其语",
"uk-UA": "乌克兰语",
"vi-VN": "越南语",
"zh-CN": "中文(简体)",
"zh-HK": "中文(繁体)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "仅用于展示使用,更改后系统中所有的货币单位都将发生变更", "currencyUnitDescription": "仅用于展示使用,更改后系统中所有的货币单位都将发生变更",
"saveSuccess": "保存成功" "saveSuccess": "保存成功"
}, },
"privacy-policy": {
"saveSuccess": "保存成功",
"title": "隐私政策"
},
"site": { "site": {
"customHtml": "自定义HTML", "customHtml": "自定义HTML",
"customHtmlDescription": "要注入到网站 <body> 标签底部的自定义 HTML 代码。", "customHtmlDescription": "要注入到网站 body 标签底部的自定义 HTML 代码。",
"keywords": "关键词", "keywords": "关键词",
"keywordsDescription": "用于搜索引擎优化", "keywordsDescription": "用于搜索引擎优化",
"logo": "LOGO", "logo": "LOGO",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "捷克語",
"de-DE": "德語",
"en-US": "英語",
"es-ES": "西班牙語",
"es-MX": "西班牙語(墨西哥)",
"fa-IR": "波斯語",
"fi-FI": "芬蘭語",
"fr-FR": "法語",
"hi-IN": "印地語",
"hu-HU": "匈牙利語",
"ja-JP": "日語",
"ko-KR": "韓語",
"no-NO": "挪威語",
"pl-PL": "波蘭語",
"pt-BR": "葡萄牙語(巴西)",
"ro-RO": "羅馬尼亞語",
"ru-RU": "俄語",
"th-TH": "泰語",
"tr-TR": "土耳其語",
"uk-UA": "烏克蘭語",
"vi-VN": "越南語",
"zh-CN": "中文(简体)",
"zh-HK": "中文(繁體)"
}
+5 -1
View File
@@ -8,9 +8,13 @@
"currencyUnitDescription": "僅用於展示使用,更改後系統中所有的貨幣單位都將發生變更", "currencyUnitDescription": "僅用於展示使用,更改後系統中所有的貨幣單位都將發生變更",
"saveSuccess": "保存成功" "saveSuccess": "保存成功"
}, },
"privacy-policy": {
"saveSuccess": "保存成功",
"title": "私隱政策"
},
"site": { "site": {
"customHtml": "自定義HTML", "customHtml": "自定義HTML",
"customHtmlDescription": "自定義 HTML 代碼,將注入到網站 <body> 標籤的底部。", "customHtmlDescription": "自定義 HTML 代碼,將注入到網站 body 標籤的底部。",
"keywords": "關鍵字", "keywords": "關鍵字",
"keywordsDescription": "用於SEO目的", "keywordsDescription": "用於SEO目的",
"logo": "LOGO", "logo": "LOGO",
+23
View File
@@ -203,6 +203,29 @@ export async function updateNodeConfig(body: API.NodeConfig, options?: { [key: s
}); });
} }
/** get Privacy Policy Config GET /v1/admin/system/privacy */
export async function getPrivacyPolicyConfig(options?: { [key: string]: any }) {
return request<API.Response & { data?: API.PrivacyPolicyConfig }>('/v1/admin/system/privacy', {
method: 'GET',
...(options || {}),
});
}
/** Update Privacy Policy Config PUT /v1/admin/system/privacy */
export async function updatePrivacyPolicyConfig(
body: API.PrivacyPolicyConfig,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/system/privacy', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** Get register config GET /v1/admin/system/register_config */ /** Get register config GET /v1/admin/system/register_config */
export async function getRegisterConfig(options?: { [key: string]: any }) { export async function getRegisterConfig(options?: { [key: string]: any }) {
return request<API.Response & { data?: API.RegisterConfig }>('/v1/admin/system/register_config', { return request<API.Response & { data?: API.RegisterConfig }>('/v1/admin/system/register_config', {
+4
View File
@@ -879,6 +879,10 @@ declare namespace API {
list: PlatformInfo[]; list: PlatformInfo[];
}; };
type PrivacyPolicyConfig = {
privacy_policy: string;
};
type PubilcRegisterConfig = { type PubilcRegisterConfig = {
stop_register: boolean; stop_register: boolean;
enable_ip_register_limit: boolean; enable_ip_register_limit: boolean;
+8
View File
@@ -42,6 +42,14 @@ export async function getGlobalConfig(options?: { [key: string]: any }) {
}); });
} }
/** Get Privacy Policy GET /v1/common/site/privacy */
export async function getPrivacyPolicy(options?: { [key: string]: any }) {
return request<API.Response & { data?: API.PrivacyPolicyConfig }>('/v1/common/site/privacy', {
method: 'GET',
...(options || {}),
});
}
/** Get stat GET /v1/common/site/stat */ /** Get stat GET /v1/common/site/stat */
export async function getStat(options?: { [key: string]: any }) { export async function getStat(options?: { [key: string]: any }) {
return request<API.Response & { data?: API.GetStatResponse }>('/v1/common/site/stat', { return request<API.Response & { data?: API.GetStatResponse }>('/v1/common/site/stat', {
+4
View File
@@ -309,6 +309,10 @@ declare namespace API {
enable: boolean; enable: boolean;
}; };
type PrivacyPolicyConfig = {
privacy_policy: string;
};
type PubilcRegisterConfig = { type PubilcRegisterConfig = {
stop_register: boolean; stop_register: boolean;
enable_ip_register_limit: boolean; enable_ip_register_limit: boolean;
@@ -0,0 +1,11 @@
import { getPrivacyPolicy } from '@/services/common/common';
import { Markdown } from '@workspace/ui/custom-components/markdown';
export default async function Page() {
const { data } = await getPrivacyPolicy();
return (
<div className='container py-8'>
<Markdown>{data.data?.privacy_policy || ''}</Markdown>
</div>
);
}
+1 -1
View File
@@ -31,7 +31,7 @@ export default function RegisterForm({
const handleCheckUser = async (email: string) => { const handleCheckUser = async (email: string) => {
try { try {
if (!auth.email.enable_verify) return true; if (!auth.email.enable_domain_suffix) return true;
const domain = email.split('@')[1]; const domain = email.split('@')[1];
const isValid = auth.email?.domain_suffix_list.split('\n').includes(domain || ''); const isValid = auth.email?.domain_suffix_list.split('\n').includes(domain || '');
return isValid; return isValid;
+3
View File
@@ -70,6 +70,9 @@ export default function Footer() {
<Link href='/tos' className='ml-2 underline'> <Link href='/tos' className='ml-2 underline'>
{t('tos')} {t('tos')}
</Link> </Link>
<Link href='/privacy-policy' className='ml-2 underline'>
{t('privacyPolicy')}
</Link>
</div> </div>
</div> </div>
</footer> </footer>
+28 -2
View File
@@ -14,6 +14,32 @@ import { getCountry } from '@workspace/ui/utils';
import { useLocale, useTranslations } from 'next-intl'; import { useLocale, useTranslations } from 'next-intl';
import { useRouter } from 'next/navigation'; import { useRouter } from 'next/navigation';
const languages = {
'cs-CZ': 'Čeština',
'de-DE': 'Deutsch',
'en-US': 'English',
'es-ES': 'Español',
'es-MX': 'Español (México)',
'fa-IR': 'فارسی',
'fi-FI': 'Suomi',
'fr-FR': 'Français',
'hi-IN': 'हिन्दी',
'hu-HU': 'Magyar',
'ja-JP': '日本語',
'ko-KR': '한국어',
'no-NO': 'Norsk',
'pl-PL': 'Polski',
'pt-BR': 'Português (Brasil)',
'ro-RO': 'Română',
'ru-RU': 'Русский',
'th-TH': 'ไทย',
'tr-TR': 'Türkçe',
'uk-UA': 'Українська',
'vi-VN': 'Tiếng Việt',
'zh-CN': '简体中文',
'zh-HK': '繁體中文',
} as const;
export default function LanguageSwitch() { export default function LanguageSwitch() {
const locale = useLocale(); const locale = useLocale();
const country = getCountry(locale); const country = getCountry(locale);
@@ -31,7 +57,7 @@ export default function LanguageSwitch() {
<SelectValue> <SelectValue>
<div className='flex items-center'> <div className='flex items-center'>
<Icon icon={`flagpack:${country?.alpha2.toLowerCase()}`} className='!size-5' /> <Icon icon={`flagpack:${country?.alpha2.toLowerCase()}`} className='!size-5' />
<span className='sr-only'>{t(`${locale}`)}</span> <span className='sr-only'>{languages[locale as keyof typeof languages]}</span>
</div> </div>
</SelectValue> </SelectValue>
</SelectTrigger> </SelectTrigger>
@@ -40,7 +66,7 @@ export default function LanguageSwitch() {
<SelectItem key={`${item?.lang}-${item?.alpha2}`} value={`${item?.lang}-${item?.alpha2}`}> <SelectItem key={`${item?.lang}-${item?.alpha2}`} value={`${item?.lang}-${item?.alpha2}`}>
<div className='flex items-center gap-2'> <div className='flex items-center gap-2'>
<Icon icon={`flagpack:${item?.alpha2.toLowerCase()}`} className='!size-5' /> <Icon icon={`flagpack:${item?.alpha2.toLowerCase()}`} className='!size-5' />
{t(`${item?.lang}-${item?.alpha2}`)} {languages[`${item?.lang}-${item?.alpha2}` as keyof typeof languages]}
</div> </div>
</SelectItem> </SelectItem>
))} ))}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Telefon" "mobile": "Telefon"
}, },
"orWithEmail": "nebo pomocí e-mailu", "orWithEmail": "nebo pomocí e-mailu",
"privacyPolicy": "Zásady ochrany osobních údajů",
"register": { "register": {
"description": "Vytvořte si nový účet, vyplňte své údaje pro registraci.", "description": "Vytvořte si nový účet, vyplňte své údaje pro registraci.",
"email": "Zadejte prosím platnou e-mailovou adresu.", "email": "Zadejte prosím platnou e-mailovou adresu.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "čeština",
"de-DE": "němčina",
"en-US": "angličtina",
"es-ES": "španělština",
"es-MX": "španělština (Mexiko)",
"fa-IR": "Perština",
"fi-FI": "finština",
"fr-FR": "Francouzština",
"hi-IN": "hindština",
"hu-HU": "maďarština",
"ja-JP": "Japonština",
"ko-KR": "Korejština",
"no-NO": "norština",
"pl-PL": "polština",
"pt-BR": "portugalština (Brazílie)",
"ro-RO": "Rumunština",
"ru-RU": "ruština",
"th-TH": "thajština",
"tr-TR": "turečtina",
"uk-UA": "Ukrajinština",
"vi-VN": "Vietnamština",
"zh-CN": "čeština (CS)",
"zh-HK": "čínština (tradiční)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Telefon" "mobile": "Telefon"
}, },
"orWithEmail": "oder mit E-Mail", "orWithEmail": "oder mit E-Mail",
"privacyPolicy": "Datenschutzrichtlinie",
"register": { "register": {
"description": "Erstellen Sie ein neues Konto, indem Sie Ihre Informationen ausfüllen, um sich zu registrieren.", "description": "Erstellen Sie ein neues Konto, indem Sie Ihre Informationen ausfüllen, um sich zu registrieren.",
"email": "Bitte geben Sie eine gültige E-Mail-Adresse ein.", "email": "Bitte geben Sie eine gültige E-Mail-Adresse ein.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Tschechisch",
"de-DE": "Deutsch",
"en-US": "Englisch",
"es-ES": "Spanisch",
"es-MX": "Spanisch (Mexiko)",
"fa-IR": "Persisch",
"fi-FI": "Finnisch",
"fr-FR": "Französisch",
"hi-IN": "Hindi",
"hu-HU": "Ungarisch",
"ja-JP": "Japanisch",
"ko-KR": "Koreanisch",
"no-NO": "Norwegisch",
"pl-PL": "Polnisch",
"pt-BR": "Portugiesisch (Brasilien)",
"ro-RO": "Rumänisch",
"ru-RU": "Russisch",
"th-TH": "Thailändisch",
"tr-TR": "Türkisch",
"uk-UA": "Ukrainisch",
"vi-VN": "Vietnamesisch",
"zh-CN": "Chinesisch (vereinfacht)",
"zh-HK": "Chinesisch (Traditionell)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Telephone" "mobile": "Telephone"
}, },
"orWithEmail": "Or with Email", "orWithEmail": "Or with Email",
"privacyPolicy": "Privacy Policy",
"register": { "register": {
"description": "Create a new account, fill in your information to register.", "description": "Create a new account, fill in your information to register.",
"email": "Please enter a valid email address.", "email": "Please enter a valid email address.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Czech",
"de-DE": "German",
"en-US": "English",
"es-ES": "Spanish",
"es-MX": "Spanish (Mexico)",
"fa-IR": "Persian",
"fi-FI": "Finnish",
"fr-FR": "French",
"hi-IN": "Hindi",
"hu-HU": "Hungarian",
"ja-JP": "Japanese",
"ko-KR": "Korean",
"no-NO": "Norwegian",
"pl-PL": "Polish",
"pt-BR": "Portuguese (Brazil)",
"ro-RO": "Romanian",
"ru-RU": "Russian",
"th-TH": "Thai",
"tr-TR": "Turkish",
"uk-UA": "Ukrainian",
"vi-VN": "Vietnamese",
"zh-CN": "Chinese (Simplified)",
"zh-HK": "Chinese (Traditional)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Teléfono" "mobile": "Teléfono"
}, },
"orWithEmail": "o usar correo electrónico", "orWithEmail": "o usar correo electrónico",
"privacyPolicy": "Política de Privacidad",
"register": { "register": {
"description": "Crea una nueva cuenta, completa tu información para registrarte.", "description": "Crea una nueva cuenta, completa tu información para registrarte.",
"email": "Por favor, introduce una dirección de correo electrónico válida.", "email": "Por favor, introduce una dirección de correo electrónico válida.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Checo",
"de-DE": "Alemán",
"en-US": "inglés",
"es-ES": "Español",
"es-MX": "Español (México)",
"fa-IR": "Persa",
"fi-FI": "Finlandés",
"fr-FR": "Francés",
"hi-IN": "Hindi",
"hu-HU": "Húngaro",
"ja-JP": "Japonés",
"ko-KR": "Coreano",
"no-NO": "Noruego",
"pl-PL": "Polaco",
"pt-BR": "portugués (Brasil)",
"ro-RO": "Rumano",
"ru-RU": "Ruso",
"th-TH": "Tailandés",
"tr-TR": "turco",
"uk-UA": "Ucraniano",
"vi-VN": "Vietnamita",
"zh-CN": "chino (simplificado)",
"zh-HK": "chino (tradicional)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Teléfono" "mobile": "Teléfono"
}, },
"orWithEmail": "o usar correo electrónico", "orWithEmail": "o usar correo electrónico",
"privacyPolicy": "Política de Privacidad",
"register": { "register": {
"description": "Crea una nueva cuenta, completa tu información para registrarte.", "description": "Crea una nueva cuenta, completa tu información para registrarte.",
"email": "Por favor, ingresa una dirección de correo electrónico válida.", "email": "Por favor, ingresa una dirección de correo electrónico válida.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Checo",
"de-DE": "Alemán",
"en-US": "inglés",
"es-ES": "Español",
"es-MX": "Español (México)",
"fa-IR": "Persa",
"fi-FI": "Finlandés",
"fr-FR": "Francés",
"hi-IN": "Hindi",
"hu-HU": "Húngaro",
"ja-JP": "Japonés",
"ko-KR": "Coreano",
"no-NO": "Noruego",
"pl-PL": "Polaco",
"pt-BR": "Portugués (Brasil)",
"ro-RO": "Rumano",
"ru-RU": "Ruso",
"th-TH": "Tailandés",
"tr-TR": "Turco",
"uk-UA": "Ucraniano",
"vi-VN": "Vietnamita",
"zh-CN": "español (México)",
"zh-HK": "Chino (Tradicional)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "تلفن" "mobile": "تلفن"
}, },
"orWithEmail": "یا با ایمیل", "orWithEmail": "یا با ایمیل",
"privacyPolicy": "سیاست حفظ حریم خصوصی",
"register": { "register": {
"description": "ایجاد یک حساب کاربری جدید، اطلاعات خود را برای ثبت‌نام وارد کنید.", "description": "ایجاد یک حساب کاربری جدید، اطلاعات خود را برای ثبت‌نام وارد کنید.",
"email": "لطفاً یک آدرس ایمیل معتبر وارد کنید.", "email": "لطفاً یک آدرس ایمیل معتبر وارد کنید.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "چکی",
"de-DE": "آلمانی",
"en-US": "انگلیسی",
"es-ES": "اسپانیایی",
"es-MX": "اسپانیایی (مکزیک)",
"fa-IR": "فارسی",
"fi-FI": "فنلاندی",
"fr-FR": "فرانسوی",
"hi-IN": "هندی",
"hu-HU": "مجاری",
"ja-JP": "ژاپنی",
"ko-KR": "کره‌ای",
"no-NO": "نروژی",
"pl-PL": "لهستانی",
"pt-BR": "پرتغالی (برزیل)",
"ro-RO": "رومانیایی",
"ru-RU": "روسی",
"th-TH": "تایلندی",
"tr-TR": "ترکی",
"uk-UA": "اوکراینی",
"vi-VN": "ویتنامی",
"zh-CN": "چینی (ساده شده)",
"zh-HK": "چینی (سنتی)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Puhelin" "mobile": "Puhelin"
}, },
"orWithEmail": "tai käytä sähköpostia", "orWithEmail": "tai käytä sähköpostia",
"privacyPolicy": "Tietosuojakäytäntö",
"register": { "register": {
"description": "Luo uusi tili täyttämällä tietosi rekisteröityäksesi.", "description": "Luo uusi tili täyttämällä tietosi rekisteröityäksesi.",
"email": "Anna kelvollinen sähköpostiosoite.", "email": "Anna kelvollinen sähköpostiosoite.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "tšekki",
"de-DE": "Saksa",
"en-US": "englanti",
"es-ES": "espanja",
"es-MX": "espanja (Meksiko)",
"fa-IR": "Persia",
"fi-FI": "suomi",
"fr-FR": "ranska",
"hi-IN": "hindi",
"hu-HU": "unkarilainen",
"ja-JP": "japani",
"ko-KR": "Korea",
"no-NO": "norja",
"pl-PL": "puola",
"pt-BR": "portugali (Brasilia)",
"ro-RO": "romania",
"ru-RU": "Venäjä",
"th-TH": "thaikieli",
"tr-TR": "turkki",
"uk-UA": "ukrainaksi",
"vi-VN": "Vietnamin kieli",
"zh-CN": "kiina (yksinkertaistettu)",
"zh-HK": "kiina (perinteinen)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Téléphone" "mobile": "Téléphone"
}, },
"orWithEmail": "ou utiliser l'e-mail", "orWithEmail": "ou utiliser l'e-mail",
"privacyPolicy": "Politique de confidentialité",
"register": { "register": {
"description": "Créez un nouveau compte, remplissez vos informations pour vous inscrire.", "description": "Créez un nouveau compte, remplissez vos informations pour vous inscrire.",
"email": "Veuillez entrer une adresse email valide.", "email": "Veuillez entrer une adresse email valide.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "tchèque",
"de-DE": "allemand",
"en-US": "anglais",
"es-ES": "Espagnol",
"es-MX": "Espagnol (Mexique)",
"fa-IR": "Persan",
"fi-FI": "finnois",
"fr-FR": "français",
"hi-IN": "hindi",
"hu-HU": "Hongrois",
"ja-JP": "Japonais",
"ko-KR": "coréen",
"no-NO": "Norvégien",
"pl-PL": "Polonais",
"pt-BR": "Portugais (Brésil)",
"ro-RO": "Roumain",
"ru-RU": "Russe",
"th-TH": "thaïlandais",
"tr-TR": "turc",
"uk-UA": "Ukrainien",
"vi-VN": "Vietnamien",
"zh-CN": "français (France)",
"zh-HK": "Chinois (traditionnel)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "टेलीफोन" "mobile": "टेलीफोन"
}, },
"orWithEmail": "या ईमेल का उपयोग करें", "orWithEmail": "या ईमेल का उपयोग करें",
"privacyPolicy": "गोपनीयता नीति",
"register": { "register": {
"description": "नया खाता बनाएं, पंजीकरण के लिए अपनी जानकारी भरें।", "description": "नया खाता बनाएं, पंजीकरण के लिए अपनी जानकारी भरें।",
"email": "कृपया एक मान्य ईमेल पता दर्ज करें।", "email": "कृपया एक मान्य ईमेल पता दर्ज करें।",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "चेक",
"de-DE": "जर्मन",
"en-US": "अंग्रेज़ी",
"es-ES": "स्पेनिश",
"es-MX": "स्पेनिश (मेक्सिको)",
"fa-IR": "फ़ारसी",
"fi-FI": "फिनिश",
"fr-FR": "फ्रेंच",
"hi-IN": "हिंदी",
"hu-HU": "हंगेरियन",
"ja-JP": "जापानी",
"ko-KR": "कोरियाई",
"no-NO": "नॉर्वेजियन",
"pl-PL": "पोलिश",
"pt-BR": "पुर्तगाली (ब्राज़ील)",
"ro-RO": "रोमानियाई",
"ru-RU": "रूसी",
"th-TH": "थाई",
"tr-TR": "तुर्की",
"uk-UA": "यूक्रेनी",
"vi-VN": "वियतनामी",
"zh-CN": "हिन्दी (भारत)",
"zh-HK": "चीनी (पारंपरिक)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Telefon" "mobile": "Telefon"
}, },
"orWithEmail": "vagy használja az e-mailt", "orWithEmail": "vagy használja az e-mailt",
"privacyPolicy": "Adatvédelmi irányelvek",
"register": { "register": {
"description": "Hozzon létre új fiókot, töltse ki adatait a regisztrációhoz.", "description": "Hozzon létre új fiókot, töltse ki adatait a regisztrációhoz.",
"email": "Kérjük, adjon meg egy érvényes e-mail címet.", "email": "Kérjük, adjon meg egy érvényes e-mail címet.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "cseh",
"de-DE": "német",
"en-US": "angol",
"es-ES": "spanyol",
"es-MX": "spanyol (Mexikó)",
"fa-IR": "Perzsa",
"fi-FI": "finn",
"fr-FR": "Francia",
"hi-IN": "hindi",
"hu-HU": "magyar",
"ja-JP": "Japán",
"ko-KR": "Koreai",
"no-NO": "norvég",
"pl-PL": "lengyel",
"pt-BR": "portugál (Brazília)",
"ro-RO": "román nyelv",
"ru-RU": "Orosz",
"th-TH": "thai",
"tr-TR": "török",
"uk-UA": "ukrán",
"vi-VN": "vietnámi",
"zh-CN": "kínai (egyszerűsített)",
"zh-HK": "Kínai (hagyományos)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "電話" "mobile": "電話"
}, },
"orWithEmail": "またはメールを使用", "orWithEmail": "またはメールを使用",
"privacyPolicy": "プライバシーポリシー",
"register": { "register": {
"description": "新しいアカウントを作成し、情報を入力して登録してください。", "description": "新しいアカウントを作成し、情報を入力して登録してください。",
"email": "有効なメールアドレスを入力してください。", "email": "有効なメールアドレスを入力してください。",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "チェコ語",
"de-DE": "ドイツ語",
"en-US": "英語",
"es-ES": "スペイン語",
"es-MX": "スペイン語(メキシコ)",
"fa-IR": "ペルシャ語",
"fi-FI": "フィンランド語",
"fr-FR": "フランス語",
"hi-IN": "ヒンディー語",
"hu-HU": "ハンガリー語",
"ja-JP": "日本語",
"ko-KR": "韓国語",
"no-NO": "ノルウェー語",
"pl-PL": "ポーランド語",
"pt-BR": "ポルトガル語(ブラジル)",
"ro-RO": "ルーマニア語",
"ru-RU": "ロシア語",
"th-TH": "タイ語",
"tr-TR": "トルコ語",
"uk-UA": "ウクライナ語",
"vi-VN": "ベトナム語",
"zh-CN": "日本語",
"zh-HK": "中国語(繁体)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "전화" "mobile": "전화"
}, },
"orWithEmail": "또는 이메일 사용", "orWithEmail": "또는 이메일 사용",
"privacyPolicy": "개인정보 처리방침",
"register": { "register": {
"description": "새 계정을 생성하고 정보를 입력하여 등록하세요.", "description": "새 계정을 생성하고 정보를 입력하여 등록하세요.",
"email": "유효한 이메일 주소를 입력해 주세요.", "email": "유효한 이메일 주소를 입력해 주세요.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "체코어",
"de-DE": "독일어",
"en-US": "영어",
"es-ES": "스페인어",
"es-MX": "스페인어(멕시코)",
"fa-IR": "페르시아어",
"fi-FI": "핀란드어",
"fr-FR": "프랑스어",
"hi-IN": "힌디어",
"hu-HU": "헝가리어",
"ja-JP": "일본어",
"ko-KR": "한국어",
"no-NO": "노르웨이어",
"pl-PL": "폴란드어",
"pt-BR": "포르투갈어(브라질)",
"ro-RO": "루마니아어",
"ru-RU": "러시아어",
"th-TH": "태국어",
"tr-TR": "터키어",
"uk-UA": "우크라이나어",
"vi-VN": "베트남어",
"zh-CN": "한국어",
"zh-HK": "중국어(번체)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Telefon" "mobile": "Telefon"
}, },
"orWithEmail": "eller bruk e-post", "orWithEmail": "eller bruk e-post",
"privacyPolicy": "Personvernerklæring",
"register": { "register": {
"description": "Opprett en ny konto, fyll inn informasjonen din for å registrere deg.", "description": "Opprett en ny konto, fyll inn informasjonen din for å registrere deg.",
"email": "Vennligst oppgi en gyldig e-postadresse.", "email": "Vennligst oppgi en gyldig e-postadresse.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "tsjekkisk",
"de-DE": "Tysk",
"en-US": "Engelsk",
"es-ES": "Spansk",
"es-MX": "Spansk (Mexico)",
"fa-IR": "Persisk",
"fi-FI": "Finsk",
"fr-FR": "Fransk",
"hi-IN": "Hindi",
"hu-HU": "Ungarsk",
"ja-JP": "Japansk",
"ko-KR": "Koreansk",
"no-NO": "Norsk",
"pl-PL": "Polsk",
"pt-BR": "portugisisk (Brasil)",
"ro-RO": "Rumensk",
"ru-RU": "Russisk",
"th-TH": "Thai",
"tr-TR": "Tyrkisk",
"uk-UA": "Ukrainsk",
"vi-VN": "Vietnamesisk",
"zh-CN": "Kinesisk (forenklet)",
"zh-HK": "Kinesisk (tradisjonell)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Telefon" "mobile": "Telefon"
}, },
"orWithEmail": "lub użyj e-maila", "orWithEmail": "lub użyj e-maila",
"privacyPolicy": "Polityka Prywatności",
"register": { "register": {
"description": "Utwórz nowe konto, wypełnij swoje dane, aby się zarejestrować.", "description": "Utwórz nowe konto, wypełnij swoje dane, aby się zarejestrować.",
"email": "Proszę wprowadzić prawidłowy adres e-mail.", "email": "Proszę wprowadzić prawidłowy adres e-mail.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "język czeski",
"de-DE": "niemiecki",
"en-US": "angielski",
"es-ES": "hiszpański",
"es-MX": "hiszpański (Meksyk)",
"fa-IR": "Perski",
"fi-FI": "fiński",
"fr-FR": "francuski",
"hi-IN": "hindi",
"hu-HU": "język węgierski",
"ja-JP": "język japoński",
"ko-KR": "Koreański",
"no-NO": "norweski",
"pl-PL": "Polski",
"pt-BR": "portugalski (Brazylia)",
"ro-RO": "rumuński",
"ru-RU": "Rosyjski",
"th-TH": "tajski",
"tr-TR": "turecki",
"uk-UA": "ukraiński",
"vi-VN": "język wietnamski",
"zh-CN": "polski",
"zh-HK": "chiński (tradycyjny)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Telefone" "mobile": "Telefone"
}, },
"orWithEmail": "ou use o e-mail", "orWithEmail": "ou use o e-mail",
"privacyPolicy": "Política de Privacidade",
"register": { "register": {
"description": "Crie uma nova conta, preencha suas informações para se registrar.", "description": "Crie uma nova conta, preencha suas informações para se registrar.",
"email": "Por favor, insira um endereço de e-mail válido.", "email": "Por favor, insira um endereço de e-mail válido.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Tcheco",
"de-DE": "Alemão",
"en-US": "inglês",
"es-ES": "Espanhol",
"es-MX": "Espanhol (México)",
"fa-IR": "Persa",
"fi-FI": "Finlandês",
"fr-FR": "Francês",
"hi-IN": "hindi",
"hu-HU": "Húngaro",
"ja-JP": "Japonês",
"ko-KR": "Coreano",
"no-NO": "Norueguês",
"pl-PL": "Polonês",
"pt-BR": "Português (Brasil)",
"ro-RO": "Romeno",
"ru-RU": "Russo",
"th-TH": "Tailandês",
"tr-TR": "turco",
"uk-UA": "Ucraniano",
"vi-VN": "Vietnamita",
"zh-CN": "Chinês (Simplificado)",
"zh-HK": "Chinês (Tradicional)"
}
-1
View File
@@ -10,7 +10,6 @@ export default getRequestConfig(async () => {
const locale = cookieLocale || defaultLocale || NEXT_PUBLIC_DEFAULT_LANGUAGE; const locale = cookieLocale || defaultLocale || NEXT_PUBLIC_DEFAULT_LANGUAGE;
const messages = { const messages = {
language: (await import(`./${locale}/language.json`)).default,
menu: (await import(`./${locale}/menu.json`)).default, menu: (await import(`./${locale}/menu.json`)).default,
auth: (await import(`./${locale}/auth.json`)).default, auth: (await import(`./${locale}/auth.json`)).default,
common: (await import(`./${locale}/common.json`)).default, common: (await import(`./${locale}/common.json`)).default,
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Telefon" "mobile": "Telefon"
}, },
"orWithEmail": "sau folosește e-mailul", "orWithEmail": "sau folosește e-mailul",
"privacyPolicy": "Politica de confidențialitate",
"register": { "register": {
"description": "Creați un cont nou, completați informațiile dvs. pentru a vă înregistra.", "description": "Creați un cont nou, completați informațiile dvs. pentru a vă înregistra.",
"email": "Vă rugăm să introduceți o adresă de email validă.", "email": "Vă rugăm să introduceți o adresă de email validă.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "cehă",
"de-DE": "germană",
"en-US": "engleză",
"es-ES": "Spaniolă",
"es-MX": "Spaniolă (Mexic)",
"fa-IR": "Persană",
"fi-FI": "Finlandeză",
"fr-FR": "franceză",
"hi-IN": "hindi",
"hu-HU": "Maghiară",
"ja-JP": "Japoneză",
"ko-KR": "Coreeană",
"no-NO": "norvegiană",
"pl-PL": "Poloneză",
"pt-BR": "Portugheză (Brazilia)",
"ro-RO": "Română",
"ru-RU": "Rusă",
"th-TH": "Thailandeză",
"tr-TR": "turcă",
"uk-UA": "Ucraineană",
"vi-VN": "Vietnameză",
"zh-CN": "Chineză (Simplificată)",
"zh-HK": "Chineză (tradițională)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Телефон" "mobile": "Телефон"
}, },
"orWithEmail": "или с помощью электронной почты", "orWithEmail": "или с помощью электронной почты",
"privacyPolicy": "Политика конфиденциальности",
"register": { "register": {
"description": "Создайте новый аккаунт, заполните свои данные для регистрации.", "description": "Создайте новый аккаунт, заполните свои данные для регистрации.",
"email": "Пожалуйста, введите действительный адрес электронной почты.", "email": "Пожалуйста, введите действительный адрес электронной почты.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Чешский",
"de-DE": "Немецкий",
"en-US": "английский",
"es-ES": "испанский",
"es-MX": "испанский (Мексика)",
"fa-IR": "Персидский",
"fi-FI": "финский",
"fr-FR": "Французский",
"hi-IN": "хинди",
"hu-HU": "Венгерский",
"ja-JP": "японский",
"ko-KR": "Корейский",
"no-NO": "норвежский",
"pl-PL": "польский",
"pt-BR": "португальский (Бразилия)",
"ro-RO": "румынский",
"ru-RU": "Русский",
"th-TH": "Тайский",
"tr-TR": "турецкий",
"uk-UA": "Украинский",
"vi-VN": "Вьетнамский",
"zh-CN": "русский",
"zh-HK": "Китайский (традиционный)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "โทรศัพท์" "mobile": "โทรศัพท์"
}, },
"orWithEmail": "หรือใช้ที่อยู่อีเมล", "orWithEmail": "หรือใช้ที่อยู่อีเมล",
"privacyPolicy": "นโยบายความเป็นส่วนตัว",
"register": { "register": {
"description": "สร้างบัญชีใหม่ กรอกข้อมูลของคุณเพื่อสมัครสมาชิก", "description": "สร้างบัญชีใหม่ กรอกข้อมูลของคุณเพื่อสมัครสมาชิก",
"email": "กรุณากรอกที่อยู่อีเมลที่ถูกต้อง", "email": "กรุณากรอกที่อยู่อีเมลที่ถูกต้อง",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "ภาษาเช็ก",
"de-DE": "ภาษาเยอรมัน",
"en-US": "ภาษาอังกฤษ",
"es-ES": "ภาษาสเปน",
"es-MX": "สเปน (เม็กซิโก)",
"fa-IR": "เปอร์เซีย",
"fi-FI": "ภาษาฟินแลนด์",
"fr-FR": "ภาษาฝรั่งเศส",
"hi-IN": "ภาษาฮินดี",
"hu-HU": "ภาษาฮังการี",
"ja-JP": "ภาษาญี่ปุ่น",
"ko-KR": "เกาหลี",
"no-NO": "ภาษานอร์เวย์",
"pl-PL": "ภาษาโปแลนด์",
"pt-BR": "โปรตุเกส (บราซิล)",
"ro-RO": "โรมาเนีย",
"ru-RU": "ภาษารัสเซีย",
"th-TH": "ภาษาไทย",
"tr-TR": "ตุรกี",
"uk-UA": "ยูเครน",
"vi-VN": "ภาษาเวียดนาม",
"zh-CN": "ภาษาไทย",
"zh-HK": "ภาษาจีน (ตัวเต็ม)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Telefon" "mobile": "Telefon"
}, },
"orWithEmail": "veya e-posta ile", "orWithEmail": "veya e-posta ile",
"privacyPolicy": "Gizlilik Politikası",
"register": { "register": {
"description": "Yeni bir hesap oluşturun, kaydolmak için bilgilerinizi doldurun.", "description": "Yeni bir hesap oluşturun, kaydolmak için bilgilerinizi doldurun.",
"email": "Lütfen geçerli bir e-posta adresi girin.", "email": "Lütfen geçerli bir e-posta adresi girin.",
-25
View File
@@ -1,25 +0,0 @@
{
"cs-CZ": "Çekçe",
"de-DE": "Almanca",
"en-US": "İngilizce",
"es-ES": "İspanyolca",
"es-MX": "İspanyolca (Meksika)",
"fa-IR": "Farsça",
"fi-FI": "Fince",
"fr-FR": "Fransızca",
"hi-IN": "Hintçe",
"hu-HU": "Macarca",
"ja-JP": "Japonca",
"ko-KR": "Korece",
"no-NO": "Norveççe",
"pl-PL": "Lehçe",
"pt-BR": "Portekizce (Brezilya)",
"ro-RO": "Romence",
"ru-RU": "Rusça",
"th-TH": "Tayca",
"tr-TR": "Türkçe",
"uk-UA": "Ukraynaca",
"vi-VN": "Vietnamca",
"zh-CN": "Çince (Basitleştirilmiş)",
"zh-HK": "Çince (Geleneksel)"
}
+1
View File
@@ -23,6 +23,7 @@
"mobile": "Телефон" "mobile": "Телефон"
}, },
"orWithEmail": "або використовуйте електронну пошту", "orWithEmail": "або використовуйте електронну пошту",
"privacyPolicy": "Політика конфіденційності",
"register": { "register": {
"description": "Створіть новий обліковий запис, заповніть ваші дані для реєстрації.", "description": "Створіть новий обліковий запис, заповніть ваші дані для реєстрації.",
"email": "Будь ласка, введіть дійсну електронну адресу.", "email": "Будь ласка, введіть дійсну електронну адресу.",

Some files were not shown because too many files have changed in this diff Show More