Add new locales (#302)

This commit is contained in:
Luke Vella 2022-08-24 15:21:19 +01:00 committed by GitHub
parent 168f70aa2b
commit 9f6ae30c00
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 431 additions and 20 deletions

View file

@ -3,7 +3,19 @@ const path = require("path");
module.exports = {
i18n: {
defaultLocale: "en",
locales: ["en", "es", "de", "fr", "it", "ko", "sv", "pt", "pt-BR"],
locales: [
"en",
"es",
"de",
"fr",
"it",
"ko",
"sv",
"pt",
"pt-BR",
"hu",
"zh",
],
localePath: path.resolve("./public/locales"),
reloadOnPrerender: process.env.NODE_ENV === "development",
},

View file

@ -2,23 +2,14 @@
"blog": "Blog",
"discussions": "Discussions",
"donate": "Donate",
"english": "English",
"footerCredit": "Made by <a>@imlukevella</a>",
"footerSponsor": "This project is user-funded. Please consider supporting it by <a>donating</a>.",
"french": "French",
"german": "German",
"home": "Home",
"italian": "Italian",
"korean": "Korean",
"language": "Language",
"links": "Links",
"portuguese": "Portuguese",
"portugueseBr": "Portuguese (Brazil)",
"poweredBy": "Powered by",
"privacyPolicy": "Privacy Policy",
"spanish": "Spanish",
"starOnGithub": "Star us on Github",
"support": "Support",
"swedish": "Swedish",
"volunteerTranslator": "Help translate this site"
}

131
public/locales/hu/app.json Normal file
View file

@ -0,0 +1,131 @@
{
"12h": "12 órás",
"24h": "24 órás",
"addParticipant": "Résztvevő hozzáadása",
"addTimeOption": "Időpont hozzáadása",
"alreadyVoted": "Már szavaztál",
"applyToAllDates": "Beállítás minden dátumhoz",
"areYouSure": "Biztos vagy benne?",
"back": "Vissza",
"calendarHelp": "Nem hozhatsz létre szavazás lehetőségek nélkül. Legalább egy lehetőséget adj meg a folytatáshoz.",
"calendarHelpTitle": "Elfelejtettél valamit?",
"cancel": "Mégse",
"comment": "Hozzászólás",
"commentPlaceholder": "Írj hozzászólást ehhez a szavazáshoz (mindenki láthatja)",
"comments": "Hozzászólások",
"continue": "Tovább",
"copied": "Másolva",
"copyLink": "Link másolása",
"createdBy": "<b>{{name}}</b> által",
"createPoll": "Szavazás létrehozása",
"creatingDemo": "Demo szavazás létrehozása…",
"delete": "Törlés",
"deleteComment": "Hozzászólás törlése",
"deleteDate": "Dátum törlése",
"deletedPoll": "Szavazás törlése",
"deletedPollInfo": "Ez a szavazás már nem létezik.",
"deletePoll": "Szavazás törlése",
"deletePollDescription": "Minden a szavazáshoz kötődő adatot törölni fogunk. Megerősítésként gépeld be <s>“{{confirmText}}”</s> szöveget az alábbi mezőbe:",
"deletingOptionsWarning": "Olyan lehetőséget töröldsz, amire résztvevők már szavaztak. Az ő szavazataik is törlődni fognak.",
"demoPollNotice": "Demó szavazások egy nap után automatikusan törlődnek",
"description": "Leírás",
"descriptionPlaceholder": "Helló mindenki, kérlek válasszátok ki a nektek megfelelő dátumokat!",
"donate": "Támogatás",
"edit": "Szerkeszt",
"editDetails": "Részletek szerkesztése",
"editOptions": "Lehetőségek szerkesztése",
"email": "Email",
"emailPlaceholder": "kovacs.anna@email.com",
"endingGuestSessionNotice": "Egy munkamenet befejezése nem visszavonható. Ezután nem leszel képes szerkeszteni a válaszaid vagy hozzászólásaidat, amiket ezzel a munkamenettel készítettél.",
"endSession": "Munkamenet befejezése",
"errorCreate": "Uha! Probléma történt a szavazás létrehozásakor. A hibát rögzítettük és megpróbáljuk javítani.",
"exportToCsv": "Exportálás CSV fáljba",
"finish": "Befejezés",
"forgetMe": "Felejts el",
"goToAdmin": "Irány az admin felület",
"guest": "Vendég",
"guestSessionNotice": "Vendég munkamenetet használsz. Ez teszi lehetővé, hogy felismerjünk téged később is, amikor visszatérsz, hogy szerkeszd a válaszaid.",
"guestSessionReadMore": "Olvass többet a vendég munkamenetekről.",
"hide": "Elrejt",
"ifNeedBe": "Ha szükséges",
"linkHasExpired": "A link lejárt vagy nem elérhető többé",
"loading": "Betöltés…",
"loadingParticipants": "Résztvevők betöltése…",
"location": "Helyszín",
"locationPlaceholder": "János kávézója",
"lockPoll": "Szavazás lezárása",
"login": "Bejelentkezés",
"loginCheckInbox": "Kérjük, ellenőrizd a postaládáját.",
"loginMagicLinkSent": "Egy varázs linket küldtünk ide:",
"loginSendMagicLink": "Küldj nekem egy varázs linket",
"loginViaMagicLink": "Bejelentkezés varázs linken keresztül",
"loginViaMagicLinkDescription": "Küldünk neked egy emailt egy varázs linkkel, amivel be tudsz jelentkezni.",
"loginWithValidEmail": "Kérjük, adj meg egy érvényes e-mail címet",
"logout": "Kijelentkezés",
"manage": "Kezelés",
"menu": "Menü",
"mixedOptionsDescription": "Egyszerre nem lehet időpont és dátum szerinti lehetőség a szavazásban. Melyiket szeretnéd megtartani?",
"mixedOptionsKeepDates": "Dátum lehetőségek megtartása",
"mixedOptionsKeepTimes": "Időpont lehetőségek megtartása",
"mixedOptionsTitle": "Kárjük várj egy percet... 🤔",
"monday": "Hétfő",
"monthView": "Havi nézet",
"name": "Név",
"namePlaceholder": "Kovács Anna",
"new": "Új",
"newPoll": "Új szavazás",
"next": "Következő",
"nextMonth": "Következő hónap",
"no": "Nem",
"noDatesSelected": "Nincs dátum kiválasztva",
"notificationsDisabled": "Értesítések ki lettek kapcsolva",
"notificationsOff": "Értesítések kikapcsolva",
"notificationsOn": "Értesítések bekapcsolva",
"notificationsOnDescription": "Emailt küldünk <b>{{email}}</b> email címre, ha bármi szavazáshoz kötődő tevékenység történik.",
"notificationsVerifyEmail": "Hitelesítened kell az email címed az értesítések bekapcsolásához",
"noVotes": "Senki sem szavazott erre a lehetóségre",
"ok": "Ok",
"options": "Lehetőségek",
"participant": "Résztvevő",
"participantCount_other": "{{count}} résztvevő",
"participantCount": "{{count}} résztvevő",
"pollHasBeenLocked": "A szavazás le lett zárva",
"pollHasBeenVerified": "A szavazásod hitelesítve lett",
"pollOwnerNotice": "Szia {{name}}, úgy tűnik, hogy te vagy ennek a szavazásnak a tulajdonosa.",
"pollsEmpty": "Nincs létrehozott szavazás",
"possibleAnswers": "Lehetséges válaszok",
"preferences": "Beállítások",
"previousMonth": "Előző hónap",
"profileLogin": "Profil - Bejelentkezés",
"profileUser": "Profil - {{username}}",
"requiredNameError": "Név megadása kötelező",
"save": "Mentés",
"saveInstruction": "Válaszd ki mikor érsz rá és kattints a <b>{{save}}</b> gombra",
"share": "Megosztás",
"shareDescription": "Küldd el ezt a linket a <b>résztvevőidnek</b>, hogy tudjanak szavazatokat leadni.",
"shareLink": "Megosztás linkkel",
"specifyTimes": "Időpontok megadása",
"specifyTimesDescription": "Adj meg kezdő és záró időpontot minde lehetőséghez",
"stepSummary": "{{current}} a {{total}}-ból",
"sunday": "Vasárnap",
"timeAndDate": "Idő és dátum",
"timeFormat": "Időformátum:",
"timeZone": "Időzóna:",
"title": "Cím",
"titlePlaceholder": "Havi találkozó",
"today": "Ma",
"unlockPoll": "Szavazás feloldása",
"unverifiedMessage": "Egy emailt küldtünk <b>{{email}}</b> címedre egy linkkel, amivel hitelesítheted az email címed.",
"user": "Felhasználó",
"vote": "Szavazat",
"voteCount_other": "{{count}} szavazat",
"voteCount": "{{count}} szavazat",
"weekStartsOn": "Hét kezdőnapja",
"weekView": "Heti nézet",
"whatsThis": "Mi ez?",
"yes": "Igen",
"you": "Te",
"yourDetails": "Adataid",
"yourName": "Neved…",
"yourPolls": "Szavazásaid"
}

View file

@ -0,0 +1,24 @@
{
"blog": "Blog",
"discussions": "Beszélgetések",
"donate": "Támogatás",
"english": "Angol",
"footerCredit": "Készítette <a>@imlukevella</a>",
"footerSponsor": "Ezt a projektet a felhasználók finanszírozzák. Kérem gondold meg, hogy <a>adományoddal</a> támogatsz-e minket.",
"french": "Francia",
"german": "Német",
"home": "Főoldal",
"italian": "Olasz",
"korean": "Koreai",
"language": "Nyelv",
"links": "Linkek",
"portuguese": "Portugál",
"portugueseBr": "Portugál (Brazíliai)",
"poweredBy": "Biztosítja a",
"privacyPolicy": "Adatvédelmi irányelvek",
"spanish": "Spanyol",
"starOnGithub": "Csillagozz be GitHub-on",
"support": "Támogatás",
"swedish": "Svéd",
"volunteerTranslator": "Segíts lefordítani ezt az oldalt"
}

View file

@ -0,0 +1,6 @@
{
"notFoundTitle": "404 az oldal nem található",
"notFoundDescription": "Nem található az oldal, amit keresel.",
"goToHome": "Irány a főoldal",
"startChat": "Csevegés indítása"
}

View file

@ -0,0 +1,36 @@
{
"3Ls": "Igen, 3 <e>L</e>-el",
"adFree": "Reklámmentes",
"adFreeDescription": "Adhatsz egy kis pihenőt a reklám blokkolódnak - It nem lesz rá szükséged.",
"comments": "Hozzászólások",
"commentsDescription": "A résztvevők hozzászólhatnak a szavazásodhoz és azok minden résztvevő számára láthatóak.",
"features": "Funkciók",
"featuresSubheading": "Ütemezés, az okos út",
"follow": "Kövess minket",
"getStarted": "Kezdjünk bele",
"heroSubText": "Találd meg a megfelelő időpontot oda-vissza nélkül",
"heroText": "Ütemezz<br/><s>találkozókat</s><br />könnyen",
"links": "Linkek",
"liveDemo": "Élő demó",
"metaDescription": "Hozz létre szavazásokat és szavazz, hogy megtaláld a legjobb napot vagy időt. Egy ingyenes Doodle alternatíva.",
"metaTitle": "Rallly - Ütemezz találkozókat",
"mobileFriendly": "Telefonon is használható",
"mobileFriendlyDescription": "Telefonon is jól működik, így a résztvevők bárhonnan kitölthetik a szavazásod.",
"new": "Új",
"noLoginRequired": "Bejelentkezés nem szükséges",
"noLoginRequiredDescription": "Nem kell bejelentkezz szavazások létrehozásához vagy a részvételéhez",
"notifications": "Értesítések",
"notificationsDescription": "Kövesd, hogy ki válaszolt. Értesítéseket kapsz, ha egy résztvevő szavaz vagy hozzászól a szavazásodhoz.",
"openSource": "Nyílt forráskódú",
"openSourceDescription": "A forráskód teljesen nyílt forráskódú és <a>elérhető GitHub-on</a>.",
"participant": "Résztvevő",
"participantCount_other": "{{count}} résztvevő",
"participantCount": "{{count}} résztvevő",
"perfect": "Tökéletes!",
"principles": "Alapelveink",
"principlesSubheading": "Mások vagyok, mint a többiek",
"selfHostable": "Önállóan futtatható",
"selfHostableDescription": "Futtathatos a saját szervereden magad kezelve minden adatod",
"timeSlots": "Idősávok",
"timeSlotsDescription": "Állíts be egyedi kezdő és befejező időpontokat minden válaszlehetőséghez. Az időpontok automatikusan igazodnak minden egyes résztvevő időzónájához vagy beállítható, hogy az időzónákat ne vegye figyelembe."
}

131
public/locales/zh/app.json Normal file
View file

@ -0,0 +1,131 @@
{
"12h": "12 小时",
"24h": "24 小时",
"addParticipant": "添加参与者",
"addTimeOption": "新增时间选择",
"alreadyVoted": "你已经投票",
"applyToAllDates": "适用于所有日期",
"areYouSure": "确定要这样做吗?",
"back": "返回",
"calendarHelp": "你不能在没有任何选项的情况下创建投票。至少添加一个选项以继续。",
"calendarHelpTitle": "忘记了一些东西?",
"cancel": "取消",
"comment": "评论",
"commentPlaceholder": "在这次投票上留下评论 (每个人都能看见)",
"comments": "评论",
"continue": "继续",
"copied": "已复制",
"copyLink": "复制链接",
"createdBy": "由 <b>{{name}}</b> 发起",
"createPoll": "创建投票",
"creatingDemo": "正在创建投票演示…",
"delete": "删除",
"deleteComment": "删除评论",
"deleteDate": "删除日期",
"deletedPoll": "已删除投票",
"deletedPollInfo": "这个投票已经不存在。",
"deletePoll": "删除投票",
"deletePollDescription": "此投票相关的所有数据将会被删除。如果确定,请在下面的输入框中输入 <s>“{{confirmText}}”</s> ",
"deletingOptionsWarning": "你正在删除参与者赞成的选项。他们的投票也会被删除。",
"demoPollNotice": "投票演示会在 1 天后自动删除",
"description": "描述",
"descriptionPlaceholder": "嘿,请选择一个合适的日期!",
"donate": "捐助",
"edit": "编辑",
"editDetails": "编辑详细信息",
"editOptions": "编辑选项",
"email": "邮箱",
"emailPlaceholder": "jessi.smith@email.com",
"endingGuestSessionNotice": "访客会话结束后无法恢复。你将无法编辑你在会话中的任何投票或评论。",
"endSession": "结束会话",
"errorCreate": "哎呀!你的投票创建时出现了一个问题。错误已被记录,我们会尝试修复它。",
"exportToCsv": "导出为 CSV文件",
"finish": "已完成",
"forgetMe": "忘记我",
"goToAdmin": "登录到管理员",
"guest": "访客",
"guestSessionNotice": "你正在使用访客会话。如果你稍后再回来编辑投票,我们也能识别你。",
"guestSessionReadMore": "了解更多关于访客会话的信息。",
"hide": "隐藏",
"ifNeedBe": "如果需要的话",
"linkHasExpired": "你的链接已过期且不再有效。",
"loading": "正在加载…",
"loadingParticipants": "正在加载参与者…",
"location": "地点",
"locationPlaceholder": "Joe 的咖啡店",
"lockPoll": "锁定投票",
"login": "登录",
"loginCheckInbox": "请检查你的收件箱。",
"loginMagicLinkSent": "魔法链接已发送至:",
"loginSendMagicLink": "发送我的魔术链接",
"loginViaMagicLink": "通过魔术链接登录",
"loginViaMagicLinkDescription": "我们将向你发送一封含有魔术链接的电子邮件,你可以用来登录。",
"loginWithValidEmail": "请输入正确的邮箱地址",
"logout": "退出",
"manage": "管理",
"menu": "菜单",
"mixedOptionsDescription": "你不能在同一个投票中同时拥有时间和日期选项。你想保留哪个?",
"mixedOptionsKeepDates": "保留日期选项",
"mixedOptionsKeepTimes": "保留时间选项",
"mixedOptionsTitle": "稍等一会儿…🤔",
"monday": "星期一",
"monthView": "月视图",
"name": "姓名",
"namePlaceholder": "杰西 · 史密斯",
"new": "新建",
"newPoll": "新投票",
"next": "下一步",
"nextMonth": "下个月",
"no": "不行",
"noDatesSelected": "未选择日期",
"notificationsDisabled": "通知已被禁用",
"notificationsOff": "关闭通知",
"notificationsOn": "启用通知",
"notificationsOnDescription": "当本次投票中有活动时,将邮件发送至 <b>{{email}}</b>。",
"notificationsVerifyEmail": "你需要验证你的电子邮件才能开启通知",
"noVotes": "没有人投票支持此选项",
"ok": "确定",
"options": "选项",
"participant": "参与者",
"participantCount_other": "{{count}} 位参与者",
"participantCount": "{{count}} 位参与者",
"pollHasBeenLocked": "此投票已锁定",
"pollHasBeenVerified": "你的投票已通过验证",
"pollOwnerNotice": "嘿 {{name}},看起来你是这个投票的所有者。",
"pollsEmpty": "未创建投票",
"possibleAnswers": "可能的选择包括",
"preferences": "偏好设置",
"previousMonth": "上个月",
"profileLogin": "个人资料 - 登录",
"profileUser": "个人资料 - {{username}}",
"requiredNameError": "姓名为必填项",
"save": "保存",
"saveInstruction": "选择你有空的时间并点击 <b>{{save}}</b>",
"share": "分享",
"shareDescription": "给你的 <b>参与者</b> 链接允许他们在你的投票中表决。",
"shareLink": "通过链接分享",
"specifyTimes": "指定时间",
"specifyTimesDescription": "包括每个选项的开始时间和结束时间",
"stepSummary": "第 {{current}} 步,共 {{total}} 步",
"sunday": "星期天",
"timeAndDate": "时间和日期",
"timeFormat": "时间格式:",
"timeZone": "时区:",
"title": "标题",
"titlePlaceholder": "每月会议",
"today": "今天",
"unlockPoll": "解锁投票",
"unverifiedMessage": "一封带有验证链接地址的电子邮件已发送至 <b>{{email}}</b> 。",
"user": "用户",
"vote": "投票",
"voteCount_other": "{{count}} 票",
"voteCount": "{{count}} 票",
"weekStartsOn": "每周开始于",
"weekView": "周视图",
"whatsThis": "这是什么?",
"yes": "确定",
"you": "你",
"yourDetails": "个人信息",
"yourName": "你的名字...",
"yourPolls": "你的投票"
}

View file

@ -0,0 +1,24 @@
{
"blog": "博客",
"discussions": "讨论",
"donate": "捐赠",
"english": "英语",
"footerCredit": "由 <a>@imlukevella</a> 制作",
"footerSponsor": "此项目由用户资助。请考虑通过 <a>捐赠</a> 来支持它。",
"french": "法语",
"german": "德语",
"home": "主页",
"italian": "意大利语",
"korean": "韩语",
"language": "语言",
"links": "链接",
"portuguese": "葡萄牙语",
"portugueseBr": "葡萄牙语 (巴西)",
"poweredBy": "提供服务",
"privacyPolicy": "隐私条款",
"spanish": "西班牙",
"starOnGithub": "在 GitHub 上 Star",
"support": "支持",
"swedish": "瑞典语",
"volunteerTranslator": "帮助翻译此网站"
}

View file

@ -0,0 +1,6 @@
{
"notFoundTitle": "404 未找到",
"notFoundDescription": "我们无法找到你想要的网页。",
"goToHome": "回到主页",
"startChat": "开始聊天"
}

View file

@ -0,0 +1,36 @@
{
"3Ls": "没错 - 这是三个 <e>L</e>",
"adFree": "没有广告",
"adFreeDescription": "你可以让你的 ad-blocker 休息一下 — 你在这里不需要它。",
"comments": "评论",
"commentsDescription": "参与者可以评论你的投票,每个人都能看到。",
"features": "特色",
"featuresSubheading": "智能调度",
"follow": "关注",
"getStarted": "开始",
"heroSubText": "无需翻来翻去寻找合适的日期",
"heroText": "轻松安排<br/><s>小组会议</s><br />",
"links": "链接",
"liveDemo": "实时演示",
"metaDescription": "创建投票并找到最好的日期或时间。Doodle 的免费替代品。",
"metaTitle": "Rallly - 安排小组会议",
"mobileFriendly": "移动设备友好",
"mobileFriendlyDescription": "在移动设备上效果很好,可以使参与者可以随时随地响应投票。",
"new": "新增功能",
"noLoginRequired": "无需登录",
"noLoginRequiredDescription": "你无需登录即可创建或参与投票",
"notifications": "通知",
"notificationsDescription": "随时了解回复。当参与者对你的投票进行表决或评论时,将会收到通知。",
"openSource": "开源",
"openSourceDescription": "代码库完全开源,<a>可在GitHub上获取</a>。",
"participant": "参与者",
"participantCount_other": "{{count}} 位参与者",
"participantCount": "{{count}} 位参与者",
"perfect": "太棒了!",
"principles": "原则",
"principlesSubheading": "我们和其他人不一样",
"selfHostable": "自托管",
"selfHostableDescription": "在你自己的服务器上运行它来完全掌握你的数据",
"timeSlots": "时间段",
"timeSlotsDescription": "为投票中的每个选项设置单独地开始和结束时间。时间可以根据每个参与者的时区自动调整,也可以设置为完全忽略时区。"
}

View file

@ -6,7 +6,7 @@ export const LanguageSelect: React.VoidFunctionComponent<{
className?: string;
onChange?: (language: string) => void;
}> = ({ className, onChange }) => {
const { t, i18n } = useTranslation("common");
const { i18n } = useTranslation("common");
return (
<select
className={clsx("input", className)}
@ -18,15 +18,17 @@ export const LanguageSelect: React.VoidFunctionComponent<{
onChange?.(e.target.value);
}}
>
<option value="en">{t("english")}</option>
<option value="es">{t("spanish")}</option>
<option value="de">{t("german")}</option>
<option value="fr">{t("french")}</option>
<option value="it">{t("italian")}</option>
<option value="ko">{t("korean")}</option>
<option value="pt">{t("portuguese")}</option>
<option value="pt-BR">{t("portugueseBr")}</option>
<option value="sv">{t("swedish")}</option>
<option value="en">English</option>
<option value="de">Deutsch</option>
<option value="es">Español</option>
<option value="fr">Français</option>
<option value="hu">Magyar</option>
<option value="it">Italiano</option>
<option value="ko"></option>
<option value="pt">Português</option>
<option value="pt-BR">Português - Brasil</option>
<option value="sv">Svenska</option>
<option value="zh"></option>
</select>
);
};

View file

@ -9,6 +9,8 @@ const supportedLocales = [
"it",
"ko",
"sv",
"hu",
"zh",
"pt",
"pt-BR",
];

View file

@ -70,6 +70,16 @@ const dayjsLocales: Record<
timeFormat: "12h",
import: () => import("dayjs/locale/ko"),
},
hu: {
weekStartsOn: "monday",
timeFormat: "24h",
import: () => import("dayjs/locale/hu"),
},
zh: {
weekStartsOn: "monday",
timeFormat: "24h",
import: () => import("dayjs/locale/zh"),
},
};
dayjs.extend(localizedFormat);