Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Czech locale file & translations #278

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ module.exports = withPWA({
reactStrictMode: true,
productionBrowserSourceMaps: true,
i18n: {
locales: ['de', 'en', 'fr', 'es', 'pl'],
locales: ['de', 'en', 'fr', 'es', 'pl', 'cz'],
defaultLocale: 'en',
},
async rewrites() {
Expand Down
11 changes: 11 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
},
"devDependencies": {
"@playwright/test": "^1.33.0",
"@types/nookies": "^2.0.3",
"eslint": "8.39.0",
"eslint-config-next": "^13.3.4",
"eslint-config-sznm": "^1.1.1"
Expand Down
103 changes: 103 additions & 0 deletions src/locales/cz.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{
"Nav": {
"title": "Je to veganské? – Vegan Check",
"description": "Nejste si jistí, zda je výrobek veganský, nebo ne? S VeganCheck.me můžete při nákupu naskenovat čárový kód zboží a zkontrolovat zda je veganské, nebo ne a to bez spousty dalších zbytečných informací! Vyzkoušejte to hned teď!",
"home": "Domů",
"ingredientcheck": "Kontrola ingrediencí",
"more": "Více"
},
"Footer": {
"credit": "Vyrobil s {heart} {philipLink} & {jokeLink}"
},
"Check": {
"enterbarcode": "Vložte čárový kód",
"submit": "Odeslat",
"vegan": "Veganské",
"vegetarian": "Vegetariánské",
"palmoil": "Palmový olej",
"palmoil_desc": "Palmový olej má mimořádně škodlivý dopad na planetu. Je hlavní příčinou odlesňování některých biologicky nejrozmanitějších lesů a ničí přirozené prostředí již ohrožených živočichů. Z tohoto důvodu bychom doporučovali nekupovat žádné výrobky, které obsahují palmový olej. Bohužel je na trhu stále mnoho výrobků, které palmový olej obsahují.",
"crueltyfree": "Cruelty-Free",
"nutriscore_desc": "Nutriscore označuje nutriční profil výrobku ve formě semaforu. Nutriscore však není považováno za přesné a nemělo by se používat jako referenční hodnota. Více informací o Nutriscore najdete na stránkách {Algorithmwatch} (v angličtině).",
"grades_desc": "Jste zmateni všemi těmi veganskými/eco-friendly/organickými štítky?<br />Se snadno srozumitelnými VeganCheck Známkami už nebudete! VeganCheck Známky je systém hodnocení pro veganské produkty, který produktu přiděluje jeden ze šesti stupňů (A+ – Nezpůsobilé).<br />Pokud se chcete dozvědět více o VeganCheck Známkách nebo chcete-li požádat o hodnocení produktu, můžete tak učinit na {Grades}!",
"source": "Zdroj dat",
"licenses": "Licence",
"licenses_desc": "VeganCheck.me používá ke shromažďování informací o výrobku různé databáze a rozhraní API. Informace jsou licencovány pod následujícími licencemi:",
"notindb": "Tento produkt zatím není v naší databázi.",
"notindb_add": "Chcete jej přidat?",
"add_food": "Přidat potraviny",
"or": "nebo",
"add_cosmetic": "přidat kosmetiku",
"wrongbarcode": "Tento čárový kód je neplatný.",
"timeout1": "Trvá to déle než obvykle",
"timeout2": "Žádost trvala příliš dlouho. Zkuste to prosím znovu.",
"share": "Sdílet",
"copy": "Kopírovat",
"on": "na"
},
"More": {
"buyusacoffee": "Kupte nám kafe",
"followus": "Sledujte nás",
"tos": "Podmínky služby",
"privacypolicy": "Zásady ochrany osobních údajů",
"apidocumentation": "API Dokumentace",
"imprint": "Otisk",
"onceviapaypal": "Jednou přes PayPal",
"onceviakofi": "Jednou přes Ko-Fi",
"monthlyviagithub": "Měsíčně přes GitHub",
"month": "měsíc",
"redirect": "Budete přesměrováni na",
"thissetsacookie": "Toto nastavuje cookie.",
"activatedarkmode": "Nejprve zaktivujte tmavý režim na vašem zařízení!",
"language": "Jazyk",
"english": "Angličtina",
"german": "Němčina",
"spanish": "Španělština",
"french": "Francoužština",
"polish": "Polština",
"cursed": "Prokletý",
"memeculture": "Oslava meme-kultury",
"czech": "Česky"
},
"TOS": {
"englishgermanonly": "Tato stránka je k dispozici pouze v angličtině a němčině.",
"tos": "Podmínky služby",
"tos_content": "<p><b>Use of \"VeganCheck.me\"</b></p><p>The use of the site \"VeganCheck.me\" is free of charge. The distribution of the contents or our services against payment is strictly prohibited. Automated queries are also prohibited and may only be performed using the <a href=\"https://jokenetwork.de/vegancheck-api\">API</a>.<br> We reserve the right to change, reduce, expand or disable our services at any time.</p><p><b>Processing of entered texts and numbers</b></p><p>On our website, barcodes or ingredients of a product can be entered in text fields. This is necessary to provide our service in its entirety. The data entry is completely voluntary.<br>Only barcodes or ingredients may be entered in the named text fields; the entry or transmission of personal data of any kind is strictly prohibited.</p><p>Personal data is any information that relates to an identified or identifiable living individual. Different pieces of information, which collected together can lead to the identification of a particular person, also constitute personal data.<sup><a href=\"https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en\">?</a></sup></p><p><b>Disclaimer</b></p><p>We assume no liability for the accuracy of the product information and ingredient lists offered and for the availability of our service.</p>"
},
"Privacy": {
"germanonly": "Tato stránka je k dispozici pouze v němčině."
},
"404": {
"error404": "Chyba 404.",
"pagedoesnotexist": "Tato stránka neexistuje.",
"message": "Můžete navštívit naši {statuspage} nebo nás zkontrolovat na {mastodon} a zjistit, zda nejsou nějaké aktuální problémy.",
"statuspage": "stavová stránka"
},
"Fallback": {
"yourareoffline": "Jste offline.",
"needinternet": "K používání VeganCheck.me potřebujete aktivní připojení k internetu.",
"tryagain": "Zkuste to znovu"
},
"InstallPrompt": {
"subheading": "Je to veganské? - Vegan Check",
"install": "Nainstalovat VeganCheck.me",
"get": "Získat",
"howtoinstall": "Klepněte na {share} a potom na \"Přidat na domovskou obrazovku\".."
},
"ShortcutPrompt": {
"Shortcuts": "Zástupci",
"openinapp": "Otevření v aplikaci Zástupci",
"open": "Otevřít"
},
"Ingredients": {
"ingredientcheck": "Kontrola veganských složek",
"ingredientcheck_desc": "Zkontrolujte, zda jsou složky výrobku veganské! - Zadejte složky oddělené čárkou",
"entercommaseperated": "Zadejte složky oddělené čárkou",
"submit": "Odeslat",
"vegan": "Veganské",
"source": "Zdroj dat",
"cannotbeempty": "Seznam ingrediencí nesmí být prázdný ani obsahovat speciální znaky a musí být oddělen čárkou!",
"licenses": "Licence",
"licenses_desc": "VeganCheck.me používá ke shromažďování informací o výrobku různé databáze a rozhraní API. Informace jsou licencovány pod následujícími licencemi:",
"languagewarning": "Tyto výsledky mohou být nesprávné z důvodu chyb v překladu nebo chybějících informací. Výsledky jsou přeloženy pomocí {deepl}."
}
}
3 changes: 2 additions & 1 deletion src/locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@
"french": "Französisch",
"polish": "Polnisch",
"cursed": "Überraschung",
"memeculture": "Hoch lebe die Meme-Kultur!"
"memeculture": "Hoch lebe die Meme-Kultur!",
"czech": "Tschechisch"
},
"TOS": {
"englishgermanonly": "Die Nutzungsbedingungen sind nur in Englisch und Deutsch verfügbar.",
Expand Down
3 changes: 2 additions & 1 deletion src/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@
"french": "French",
"polish": "Polish",
"cursed": "Cursed",
"memeculture": "Celebrating meme-culture"
"memeculture": "Celebrating meme-culture",
"czech": "Czech"
},
"TOS": {
"englishgermanonly": "This page is only available in English and German.",
Expand Down
3 changes: 2 additions & 1 deletion src/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@
"french": "Francés",
"polish": "Polaco",
"cursed": "Sorpresa",
"memeculture": "¡Viva la cultura del meme!"
"memeculture": "¡Viva la cultura del meme!",
"czech": "Checa"
},
"TOS": {
"englishgermanonly": "Esta página sólo está disponible en inglés y alemán.",
Expand Down
3 changes: 2 additions & 1 deletion src/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@
"french": "Français",
"polish": "Polonais",
"cursed": "Surprise",
"memeculture": "Vive la culture des memes !"
"memeculture": "Vive la culture des memes !",
"czech": "Tchèque"
},
"TOS": {
"englishgermanonly": "Cette page est uniquement disponible en anglais et en allemand.",
Expand Down
3 changes: 2 additions & 1 deletion src/locales/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@
"french": "francuski",
"polish": "polski",
"cursed": "przeklęty",
"memeculture": "Niech żyje kultura memów!"
"memeculture": "Niech żyje kultura memów!",
"czech": "Czeski"
},
"TOS": {
"englishgermanonly": "Ta strona jest dostępna tylko w języku angielskim i niemieckim.",
Expand Down
18 changes: 18 additions & 0 deletions src/pages/more.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,24 @@ export default function More() {
<span className="price">{t("polish")}</span>
</div>
</Link>
<Link
className="nolink"
href="/more"
locale="cz"
onClick={() => handleLanguageChange("cz")}
>
<div
className={router.locale === "cz" ? "option active" : "option"}
>
<input
className="form-check-input"
type="radio"
name="flexRadioDefault"
checked={router.locale === "cz"}
/>
<span className="price">{t("czech")}</span>
</div>
</Link>
<span className="info" id="cookieinfo">
{t("thissetsacookie")}
</span>
Expand Down