mirror of
https://github.com/formbricks/formbricks.git
synced 2026-04-21 11:30:27 -05:00
feat: Add Hungarian language support (#7175)
Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com>
This commit is contained in:
+6
-5
@@ -9,17 +9,18 @@
|
||||
"source": "en-US",
|
||||
"targets": [
|
||||
"de-DE",
|
||||
"es-ES",
|
||||
"fr-FR",
|
||||
"hu-HU",
|
||||
"ja-JP",
|
||||
"nl-NL",
|
||||
"pt-BR",
|
||||
"pt-PT",
|
||||
"ro-RO",
|
||||
"zh-Hans-CN",
|
||||
"zh-Hant-TW",
|
||||
"nl-NL",
|
||||
"es-ES",
|
||||
"ru-RU",
|
||||
"sv-SE",
|
||||
"ru-RU"
|
||||
"zh-Hans-CN",
|
||||
"zh-Hant-TW"
|
||||
]
|
||||
},
|
||||
"version": 1.8
|
||||
|
||||
@@ -227,6 +227,7 @@ checksums:
|
||||
common/label: a5c71bf158481233f8215dbd38cc196b
|
||||
common/language: 277fd1a41cc237a437cd1d5e4a80463b
|
||||
common/learn_more: e598091d132f890c37a6d4ed94f6d794
|
||||
common/license_expired: 7af13535e320e4197989472c01387d2c
|
||||
common/light_overlay: 0499907ea7b8405f4267b117998b5a78
|
||||
common/limits_reached: 98879ae8c2be281ad6d283d7029d0148
|
||||
common/link: 60f0aa33e70ca6df3b6659802b16f433
|
||||
@@ -434,6 +435,7 @@ checksums:
|
||||
common/you_have_reached_your_monthly_miu_limit_of: ded62fc6842c707f62622386ca34f71a
|
||||
common/you_have_reached_your_monthly_response_limit_of: 3824db23ecc3dcd2b1787b98ccfdd5f9
|
||||
common/you_will_be_downgraded_to_the_community_edition_on_date: bff35b54c13e2c205dc4c19056261cc0
|
||||
common/your_license_has_expired_please_renew: 3f21ae4a7deab351b143b407ece58254
|
||||
emails/accept: f8cc1de4f5e3c850cfdbbc0ec831ade7
|
||||
emails/click_or_drag_to_upload_files: 64f59bc339568d52b8464b82546b70ea
|
||||
emails/email_customization_preview_email_heading: 8b798cb8438b3dd356c02dab33b4c897
|
||||
|
||||
@@ -165,19 +165,20 @@ export const MAX_ATTRIBUTE_CLASSES_PER_ENVIRONMENT = 150;
|
||||
|
||||
export const DEFAULT_LOCALE = "en-US";
|
||||
export const AVAILABLE_LOCALES: TUserLocale[] = [
|
||||
"en-US",
|
||||
"de-DE",
|
||||
"pt-BR",
|
||||
"en-US",
|
||||
"es-ES",
|
||||
"fr-FR",
|
||||
"hu-HU",
|
||||
"ja-JP",
|
||||
"nl-NL",
|
||||
"zh-Hant-TW",
|
||||
"pt-BR",
|
||||
"pt-PT",
|
||||
"ro-RO",
|
||||
"ja-JP",
|
||||
"zh-Hans-CN",
|
||||
"es-ES",
|
||||
"sv-SE",
|
||||
"ru-RU",
|
||||
"sv-SE",
|
||||
"zh-Hans-CN",
|
||||
"zh-Hant-TW",
|
||||
];
|
||||
|
||||
// Billing constants
|
||||
|
||||
+38
-32
@@ -126,12 +126,6 @@ export const addMultiLanguageLabels = (object: unknown, languageSymbols: string[
|
||||
};
|
||||
|
||||
export const appLanguages = [
|
||||
{
|
||||
code: "en-US",
|
||||
label: {
|
||||
"en-US": "English (US)",
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "de-DE",
|
||||
label: {
|
||||
@@ -139,9 +133,15 @@ export const appLanguages = [
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "pt-BR",
|
||||
code: "en-US",
|
||||
label: {
|
||||
"en-US": "Portuguese (Brazil)",
|
||||
"en-US": "English (US)",
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "es-ES",
|
||||
label: {
|
||||
"en-US": "Spanish",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -151,9 +151,27 @@ export const appLanguages = [
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "zh-Hant-TW",
|
||||
code: "hu-HU",
|
||||
label: {
|
||||
"en-US": "Chinese (Traditional)",
|
||||
"en-US": "Hungarian",
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "ja-JP",
|
||||
label: {
|
||||
"en-US": "Japanese",
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "nl-NL",
|
||||
label: {
|
||||
"en-US": "Dutch",
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "pt-BR",
|
||||
label: {
|
||||
"en-US": "Portuguese (Brazil)",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -169,27 +187,9 @@ export const appLanguages = [
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "ja-JP",
|
||||
code: "ru-RU",
|
||||
label: {
|
||||
"en-US": "Japanese",
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "zh-Hans-CN",
|
||||
label: {
|
||||
"en-US": "Chinese (Simplified)",
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "nl-NL",
|
||||
label: {
|
||||
"en-US": "Dutch",
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "es-ES",
|
||||
label: {
|
||||
"en-US": "Spanish",
|
||||
"en-US": "Russian",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -199,9 +199,15 @@ export const appLanguages = [
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "ru-RU",
|
||||
code: "zh-Hans-CN",
|
||||
label: {
|
||||
"en-US": "Russian",
|
||||
"en-US": "Chinese (Simplified)",
|
||||
},
|
||||
},
|
||||
{
|
||||
code: "zh-Hant-TW",
|
||||
label: {
|
||||
"en-US": "Chinese (Traditional)",
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
+15
-13
@@ -1,5 +1,5 @@
|
||||
import { formatDistance, intlFormat } from "date-fns";
|
||||
import { de, enUS, es, fr, ja, nl, pt, ptBR, ro, ru, sv, zhCN, zhTW } from "date-fns/locale";
|
||||
import { de, enUS, es, fr, hu, ja, nl, pt, ptBR, ro, ru, sv, zhCN, zhTW } from "date-fns/locale";
|
||||
import { TUserLocale } from "@formbricks/types/user";
|
||||
|
||||
export const convertDateString = (dateString: string | null) => {
|
||||
@@ -87,28 +87,30 @@ const getLocaleForTimeSince = (locale: TUserLocale) => {
|
||||
return de;
|
||||
case "en-US":
|
||||
return enUS;
|
||||
case "pt-BR":
|
||||
return ptBR;
|
||||
case "es-ES":
|
||||
return es;
|
||||
case "fr-FR":
|
||||
return fr;
|
||||
case "hu-HU":
|
||||
return hu;
|
||||
case "ja-JP":
|
||||
return ja;
|
||||
case "nl-NL":
|
||||
return nl;
|
||||
case "sv-SE":
|
||||
return sv;
|
||||
case "zh-Hant-TW":
|
||||
return zhTW;
|
||||
case "pt-BR":
|
||||
return ptBR;
|
||||
case "pt-PT":
|
||||
return pt;
|
||||
case "ro-RO":
|
||||
return ro;
|
||||
case "ja-JP":
|
||||
return ja;
|
||||
case "zh-Hans-CN":
|
||||
return zhCN;
|
||||
case "es-ES":
|
||||
return es;
|
||||
case "ru-RU":
|
||||
return ru;
|
||||
case "sv-SE":
|
||||
return sv;
|
||||
case "zh-Hans-CN":
|
||||
return zhCN;
|
||||
case "zh-Hant-TW":
|
||||
return zhTW;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -68,6 +68,7 @@ export const getWebAppLocale = (languageCode: string, survey: TSurvey): string =
|
||||
"pt-BR": "pt-BR",
|
||||
"pt-PT": "pt-PT",
|
||||
fr: "fr-FR",
|
||||
hu: "hu-HU",
|
||||
nl: "nl-NL",
|
||||
zh: "zh-Hans-CN", // Default to Simplified Chinese
|
||||
"zh-Hans": "zh-Hans-CN",
|
||||
|
||||
@@ -209,19 +209,20 @@ vi.mock("@/lib/constants", () => ({
|
||||
MAX_ATTRIBUTE_CLASSES_PER_ENVIRONMENT: 100,
|
||||
MAX_OTHER_OPTION_LENGTH: 250,
|
||||
AVAILABLE_LOCALES: [
|
||||
"en-US",
|
||||
"de-DE",
|
||||
"pt-BR",
|
||||
"en-US",
|
||||
"es-ES",
|
||||
"fr-FR",
|
||||
"hu-HU",
|
||||
"ja-JP",
|
||||
"nl-NL",
|
||||
"zh-Hant-TW",
|
||||
"pt-BR",
|
||||
"pt-PT",
|
||||
"ro-RO",
|
||||
"ja-JP",
|
||||
"zh-Hans-CN",
|
||||
"es-ES",
|
||||
"sv-SE",
|
||||
"ru-RU",
|
||||
"sv-SE",
|
||||
"zh-Hans-CN",
|
||||
"zh-Hant-TW",
|
||||
],
|
||||
DEFAULT_LOCALE: "en-US",
|
||||
BREVO_API_KEY: "mock-brevo-api-key",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@
|
||||
},
|
||||
"locale": {
|
||||
"source": "en",
|
||||
"targets": ["de", "it", "fr", "es", "ar", "pt", "ru", "uz", "ro", "ja", "zh-Hans", "hi", "nl", "sv"]
|
||||
"targets": ["ar", "de", "es", "fr", "hi", "hu", "it", "ja", "nl", "pt", "ro", "ru", "sv", "uz", "zh-Hans"]
|
||||
},
|
||||
"version": 1.8
|
||||
}
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"common": {
|
||||
"and": "és",
|
||||
"apply": "alkalmaz",
|
||||
"auto_close_wrapper": "Borítás automatikus bezárása",
|
||||
"back": "Vissza",
|
||||
"close_survey": "Kérdőív lezárása",
|
||||
"company_logo": "Vállalat logója",
|
||||
"finish": "Befejezés",
|
||||
"language_switch": "Nyelvválasztó",
|
||||
"next": "Következő",
|
||||
"open_in_new_tab": "Megnyitás új lapon",
|
||||
"people_responded": "{count, plural, one {1 személy válaszolt} other {{count} személy válaszolt}}",
|
||||
"please_retry_now_or_try_again_later": "Próbálkozzon újra most, vagy próbálja meg később újra.",
|
||||
"powered_by": "A gépházban:",
|
||||
"privacy_policy": "Adatvédelmi irányelvek",
|
||||
"protected_by_reCAPTCHA_and_the_Google": "A reCAPTCHA és a Google védelme alatt áll",
|
||||
"question": "Kérdés",
|
||||
"question_video": "Kérdés videója",
|
||||
"required": "Kötelező",
|
||||
"respondents_will_not_see_this_card": "A válaszadók nem fogják látni ezt a kártyát",
|
||||
"retry": "Újrapróbálkozás",
|
||||
"retrying": "Újrapróbálkozás…",
|
||||
"select_option": "Válassz egy lehetőséget",
|
||||
"select_options": "Válassz lehetőségeket",
|
||||
"sending_responses": "Válaszok küldése…",
|
||||
"takes_less_than_x_minutes": "{count, plural, one {Kevesebb mint 1 percet vesz igénybe} other {Kevesebb mint {count} percet vesz igénybe}}",
|
||||
"takes_x_minutes": "{count, plural, one {1 percet vesz igénybe} other {{count} percet vesz igénybe}}",
|
||||
"takes_x_plus_minutes": "{count}+ percet vesz igénybe",
|
||||
"terms_of_service": "Használati feltételek",
|
||||
"the_servers_cannot_be_reached_at_the_moment": "Jelenleg nem lehet elérni a kiszolgálókat.",
|
||||
"they_will_be_redirected_immediately": "Azonnal át lesznek irányítva",
|
||||
"your_feedback_is_stuck": "A visszajelzése elakadt :("
|
||||
},
|
||||
"errors": {
|
||||
"all_options_must_be_ranked": "Rangsorolja az összes lehetőséget",
|
||||
"all_rows_must_be_answered": "Válaszoljon az összes sorra",
|
||||
"file_extension_must_be": "A fájlkiterjesztés csak {extension} lehet",
|
||||
"file_extension_must_not_be": "A fájlkiterjesztés nem lehet {extension}",
|
||||
"file_input": {
|
||||
"duplicate_files": "A következő fájlok már fel lettek töltve: {duplicateNames}. Kettőzött fájlok nem engedélyezettek.",
|
||||
"file_size_exceeded": "A következő fájlok túllépik a legnagyobb, {maxSizeInMB} MB-os méretet, ezért eltávolításra kerültek: {fileNames}",
|
||||
"file_size_exceeded_alert": "A fájlnak kisebbnek kell lennie mint {maxSizeInMB} MB",
|
||||
"no_valid_file_types_selected": "Nincs érvényes fájltípus kiválasztva. Válasszon egy érvényes fájltípust.",
|
||||
"only_one_file_can_be_uploaded_at_a_time": "Egyszerre csak egy fájl tölthető fel.",
|
||||
"upload_failed": "A feltöltés nem sikerült! Próbálja meg újra.",
|
||||
"you_can_only_upload_a_maximum_of_files": "Legfeljebb csak {FILE_LIMIT} fájlt tölthet fel."
|
||||
},
|
||||
"invalid_device_error": {
|
||||
"message": "Tiltsa le a szemét elleni védekezést a kérdőív beállításaiban, hogy tovább használhassa ezt az eszközt.",
|
||||
"title": "Ez az eszköz nem támogatja a szemét elleni védekezést."
|
||||
},
|
||||
"invalid_format": "Adjon meg egy érvényes formátumot",
|
||||
"is_between": "Válasszon egy dátumot {startDate} és {endDate} között",
|
||||
"is_earlier_than": "Válasszon korábbi dátumot mint {date}",
|
||||
"is_greater_than": "Adjon meg nagyobb értéket mint {min}",
|
||||
"is_later_than": "Válasszon későbbi dátumot mint {date}",
|
||||
"is_less_than": "Adjon meg kisebb értéket mint {max}",
|
||||
"is_not_between": "Válasszon olyan dátumot, amely nem {startDate} és {endDate} között van",
|
||||
"max_length": "Ne adjon meg többet {max} karakternél",
|
||||
"max_selections": "Ne válasszon {max} lehetőségnél többet",
|
||||
"max_value": "Adjon meg olyan értéket, amely nem nagyobb mint {max}",
|
||||
"min_length": "Adjon meg legalább {min} karaktert",
|
||||
"min_selections": "Válasszon legalább {min} lehetőséget",
|
||||
"min_value": "Adjon meg olyan értéket, amely legalább {min}",
|
||||
"minimum_options_ranked": "Rangsoroljon legalább {min} lehetőséget",
|
||||
"minimum_rows_answered": "Válaszoljon legalább {min} sorra",
|
||||
"please_enter_a_valid_email_address": "Adjon meg egy érvényes e-mail-címet",
|
||||
"please_enter_a_valid_phone_number": "Adjon meg egy érvényes telefonszámot",
|
||||
"please_enter_a_valid_url": "Adjon meg egy érvényes URL-t",
|
||||
"please_fill_out_this_field": "Töltse ki ezt a mezőt",
|
||||
"recaptcha_error": {
|
||||
"message": "A válaszát nem sikerült elküldeni, mert automatizált tevékenységként lett megjelölve. Ha lélegzik, akkor próbálja meg újra.",
|
||||
"title": "Nem tudtuk ellenőrizni, hogy Ön ember-e."
|
||||
},
|
||||
"value_must_contain": "Az értéknek tartalmaznia kell ezt: {value}",
|
||||
"value_must_equal": "Az értéknek egyenlőnek kell lennie ezzel: {value}",
|
||||
"value_must_not_contain": "Az érték nem tartalmazhatja ezt: {value}",
|
||||
"value_must_not_equal": "Az érték nem lehet egyenlő ezzel: {value}"
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import enTranslations from "../../locales/en.json";
|
||||
import esTranslations from "../../locales/es.json";
|
||||
import frTranslations from "../../locales/fr.json";
|
||||
import hiTranslations from "../../locales/hi.json";
|
||||
import huTranslations from "../../locales/hu.json";
|
||||
import itTranslations from "../../locales/it.json";
|
||||
import jaTranslations from "../../locales/ja.json";
|
||||
import nlTranslations from "../../locales/nl.json";
|
||||
@@ -23,39 +24,41 @@ i18n
|
||||
.init({
|
||||
fallbackLng: "en",
|
||||
supportedLngs: [
|
||||
"en",
|
||||
"de",
|
||||
"it",
|
||||
"fr",
|
||||
"es",
|
||||
"ar",
|
||||
"de",
|
||||
"en",
|
||||
"es",
|
||||
"fr",
|
||||
"hi",
|
||||
"hu",
|
||||
"it",
|
||||
"ja",
|
||||
"nl",
|
||||
"pt",
|
||||
"ro",
|
||||
"ja",
|
||||
"ru",
|
||||
"sv",
|
||||
"uz",
|
||||
"zh-Hans",
|
||||
"hi",
|
||||
"nl",
|
||||
"sv",
|
||||
],
|
||||
|
||||
resources: {
|
||||
en: { translation: enTranslations },
|
||||
de: { translation: deTranslations },
|
||||
it: { translation: itTranslations },
|
||||
fr: { translation: frTranslations },
|
||||
es: { translation: esTranslations },
|
||||
ar: { translation: arTranslations },
|
||||
pt: { translation: ptTranslations },
|
||||
ro: { translation: roTranslations },
|
||||
de: { translation: deTranslations },
|
||||
en: { translation: enTranslations },
|
||||
es: { translation: esTranslations },
|
||||
fr: { translation: frTranslations },
|
||||
hi: { translation: hiTranslations },
|
||||
hu: { translation: huTranslations },
|
||||
it: { translation: itTranslations },
|
||||
ja: { translation: jaTranslations },
|
||||
nl: { translation: nlTranslations },
|
||||
pt: { translation: ptTranslations },
|
||||
ro: { translation: roTranslations },
|
||||
ru: { translation: ruTranslations },
|
||||
uz: { translation: uzTranslations },
|
||||
sv: { translation: svTranslations },
|
||||
uz: { translation: uzTranslations },
|
||||
"zh-Hans": { translation: zhHansTranslations },
|
||||
hi: { translation: hiTranslations },
|
||||
},
|
||||
|
||||
interpolation: { escapeValue: false },
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export const ZUserLocale = z.enum([
|
||||
"en-US",
|
||||
"de-DE",
|
||||
"pt-BR",
|
||||
"en-US",
|
||||
"es-ES",
|
||||
"fr-FR",
|
||||
"hu-HU",
|
||||
"ja-JP",
|
||||
"nl-NL",
|
||||
"zh-Hant-TW",
|
||||
"pt-BR",
|
||||
"pt-PT",
|
||||
"ro-RO",
|
||||
"ja-JP",
|
||||
"zh-Hans-CN",
|
||||
"es-ES",
|
||||
"sv-SE",
|
||||
"ru-RU",
|
||||
"sv-SE",
|
||||
"zh-Hans-CN",
|
||||
"zh-Hant-TW",
|
||||
]);
|
||||
|
||||
export type TUserLocale = z.infer<typeof ZUserLocale>;
|
||||
|
||||
Reference in New Issue
Block a user