diff --git a/api/user_setting.go b/api/user_setting.go index 68df9b5d..d8320075 100644 --- a/api/user_setting.go +++ b/api/user_setting.go @@ -34,7 +34,7 @@ func (key UserSettingKey) String() string { } var ( - UserSettingLocaleValue = []string{"en", "zh", "vi", "fr", "sv", "de"} + UserSettingLocaleValue = []string{"en", "zh", "vi", "fr", "nl", "sv", "de"} UserSettingAppearanceValue = []string{"system", "light", "dark"} UserSettingMemoVisibilityValue = []Visibility{Private, Protected, Public} UserSettingMemoDisplayTsOptionKeyValue = []string{"created_ts", "updated_ts"} diff --git a/web/src/components/Settings/PreferencesSection.tsx b/web/src/components/Settings/PreferencesSection.tsx index dfa45a5e..90444a07 100644 --- a/web/src/components/Settings/PreferencesSection.tsx +++ b/web/src/components/Settings/PreferencesSection.tsx @@ -24,6 +24,10 @@ const localeSelectorItems = [ text: "French", value: "fr", }, + { + text: "Nederlands", + value: "nl", + }, { text: "Svenska", value: "sv", diff --git a/web/src/i18n.ts b/web/src/i18n.ts index 96b33520..066a1088 100644 --- a/web/src/i18n.ts +++ b/web/src/i18n.ts @@ -4,6 +4,7 @@ import enLocale from "./locales/en.json"; import zhLocale from "./locales/zh.json"; import viLocale from "./locales/vi.json"; import frLocale from "./locales/fr.json"; +import nlLocale from "./locales/nl.json"; import svLocale from "./locales/sv.json"; import deLocale from "./locales/de.json"; @@ -21,6 +22,9 @@ i18n.use(initReactI18next).init({ fr: { translation: frLocale, }, + nl: { + translation: nlLocale, + }, sv: { translation: svLocale, }, @@ -28,7 +32,7 @@ i18n.use(initReactI18next).init({ translation: deLocale, }, }, - lng: "en", + lng: "nl", fallbackLng: "en", }); diff --git a/web/src/locales/nl.json b/web/src/locales/nl.json new file mode 100644 index 00000000..d179cd2d --- /dev/null +++ b/web/src/locales/nl.json @@ -0,0 +1,200 @@ +{ + "common": { + "about": "Over", + "email": "E-mailadres", + "password": "Wachtwoord", + "new-password": "Nieuw wachtwoord", + "repeat-new-password": "Nieuw wachtwoord herhalen", + "username": "Gebruikersnaam", + "nickname": "Bijnaam", + "save": "Opslaan", + "close": "Sluiten", + "cancel": "Annuleren", + "create": "Aanmaken", + "change": "Wijzigen", + "confirm": "Bevestigen", + "reset": "Herstel", + "language": "Taal", + "version": "Versie", + "pin": "Vastzetten", + "unpin": "Losmaken", + "edit": "Bijwerken", + "restore": "Terugzetten", + "delete": "Verwijderen", + "null": "Null", + "share": "Delen", + "archive": "Archiveren", + "basic": "Simpel", + "admin": "Admin", + "explore": "Ontdekken", + "sign-in": "Inloggen", + "sign-up": "Registreren", + "sign-out": "Uitloggen", + "back-to-home": "Terug naar homepagina", + "type": "Type", + "shortcuts": "Snelkoppelingen", + "title": "Titel", + "filter": "Filter", + "tags": "Labels", + "yourself": "Jij zelf", + "archived-at": "Gearchiveerd op", + "changed": "gewijzigd", + "update-on": "Update op", + "fold": "Invouwen", + "expand": "Uitklappen" + }, + "slogan": "Een open-source, zelf-beheerd memo applicatie voor kennismanagement en collaboratie.", + "auth": { + "signup-as-host": "Registreren als Host", + "host-tip": "Je registreert je als Site Host.", + "not-host-tip": "Als je geen account hebt, neem dan contact op met de site host." + }, + "sidebar": { + "daily-review": "Dagelijkse Review", + "resources": "Bronnen", + "setting": "Instellingen", + "archived": "Gearchiveerd" + }, + "daily-review": { + "oops-nothing": "Oeps, er is niets." + }, + "resources": { + "description": "Bekijk je statische bronnen in memos, zoals foto's.", + "no-resources": "Geen bronnen.", + "fetching-data": "data aan het ophalen...", + "upload": "Uploaden", + "preview": "Voorbeeld", + "copy-link": "Kopiëer Link", + "delete-resource": "Bron verwijderen", + "warning-text": "Weet je zeker dat je deze bron wilt verwijderen? Deze actie is NIET terug te draaien!", + "linked-amount": "Aantal gelinkte memo's", + "rename": "Hernoemen", + "clear-unused-resources": "Ongebruikte bronnen opruimen", + "warning-text-unused": "Weet je zeker dat je deze ongebruikte bron wilt verwijderen? Deze actie is NIET terug te draaien!", + "no-unused-resources": "Geen ongebruikte bronnen" + }, + "archived": { + "archived-memos": "Gearchiveerde Memos", + "no-archived-memos": "Geen gearchiveerde memos.", + "fetching-data": "data aan het ophalen..." + }, + "editor": { + "editing": "Aan het wijzigen...", + "cancel-edit": "Annuleer wijziging", + "save": "Opslaan", + "placeholder": "Leeg je gedachten...", + "only-image-supported": "Alleen afbeeldingen worden ondersteund.", + "cant-empty": "Inhoud kan niet leeg zijn" + }, + "memo": { + "view-detail": "Bekijk Detail", + "copy": "Kopiëer", + "visibility": { + "private": "Privé", + "protected": "Zichtbaar voor leden", + "public": "Openbaar" + } + }, + "memo-list": { + "fetching-data": "data aan het ophalen...", + "fetch-more": "Klik hier om meer op te halen" + }, + "shortcut-list": { + "shortcut-title": "snelkoppelingstitel", + "create-shortcut": "Maak Snelkoppeling", + "edit-shortcut": "Wijzig Shortcut", + "eligible-memo": "geschikte memo", + "fill-previous": "Vul alsjeblieft het vorige filter in", + "title-required": "Titel is verplicht", + "value-required": "Filter is verplicht" + }, + "filter": { + "new-filter": "Nieuw Filter", + "operator": { + "contains": "Bevat", + "not-contains": "Bevat niet", + "is": "Is", + "is-not": "Is Niet", + "before": "Voor", + "after": "Na" + }, + "value": { + "not-tagged": "Geen labels", + "linked": "Heeft links" + }, + "text-placeholder": "Begin met ^ om RegEx te gebruiken." + }, + "tag-list": { + "tip-text": "Typ `#label ` om aan te maken" + }, + "search": { + "quickly-filter": "Snel filteren" + }, + "setting": { + "my-account": "Mijn account", + "preference": "Voorkeuren", + "member": "Lid", + "member-list": "Ledenlijst", + "system": "Systeem", + "account-section": { + "title": "Accountinformatie", + "update-information": "Informatie wijzigen", + "change-password": "Wachtwoord wijzigen" + }, + "preference-section": { + "default-memo-visibility": "Standaard memo zichtbaarheid", + "enable-folding-memo": "Vouwende memo aanzetten", + "editor-font-style": "Editor lettertype", + "mobile-editor-style": "Mobiele editor uiterlijk", + "default-memo-sort-option": "Sorteer op tijd van aanmaken/wijziging", + "created_ts": "Tijd van aanmaken", + "updated_ts": "Tijd van wijziging" + }, + "member-section": { + "create-a-member": "Lid toevoegen" + }, + "system-section": { + "database-file-size": "Database bestandsgrootte", + "allow-user-signup": "Registratie toestaan", + "additional-style": "Optionele stijl", + "additional-script": "Optionele scripts", + "additional-style-placeholder": "Optionele CSS code", + "additional-script-placeholder": "Optionele JavaScript code" + }, + "apperance-option": { + "auto": "Volg systeem", + "light": "Altijd licht", + "dark": "Altijd donker" + } + }, + "amount-text": { + "memo": "MEMO", + "tag": "LABEL", + "day": "DAG" + }, + "message": { + "no-memos": "geen memos 🌃", + "memos-ready": "alle memos zijn geladen 🎉", + "restored-successfully": "Succesvol teruggezet", + "memo-updated-datetime": "Tijd van aanmaken gewijzigd.", + "invalid-created-datetime": "Onjuiste tijd van aanmaken.", + "change-memo-created-time": "Tijd van aanmaken wijzigen", + "memo-not-found": "Memo niet gevonden.", + "fill-all": "Vul alsjeblieft alle velden in.", + "new-password-not-match": "Nieuwe wachtwoorden komen niet overeen.", + "image-load-failed": "Afbeelding laden mislukt", + "fill-form": "Vul alsjeblieft het formulier in.", + "login-failed": "Inloggen mislukt", + "signup-failed": "Registreren mislukt", + "user-not-found": "Gebruiker niet gevonden", + "password-changed": "Wachtwoord gewijzigd.", + "private-only": "Deze memo is alleen privé.", + "copied": "Gekopiëerd", + "succeed-copy-content": "Inhoud gekopiëerd naar klembord.", + "change-resource-filename": "Bestandsnaam van bron wijzigen", + "resource-filename-updated": "Bestandsnaam van bron gewijzigd.", + "invalid-resource-filename": "Onjuiste bestandsnaam.", + "click-to-save-the-image": "Klik om de afbeelding op te slaan", + "generating-the-screenshot": "Screenshot genereren..." + } +} diff --git a/web/src/pages/Auth.tsx b/web/src/pages/Auth.tsx index 396fc9e0..71d247f2 100644 --- a/web/src/pages/Auth.tsx +++ b/web/src/pages/Auth.tsx @@ -176,6 +176,7 @@ const Auth = () => { + diff --git a/web/src/types/i18n.d.ts b/web/src/types/i18n.d.ts index 1a750816..cf1c3128 100644 --- a/web/src/types/i18n.d.ts +++ b/web/src/types/i18n.d.ts @@ -1 +1 @@ -type Locale = "en" | "zh" | "vi" | "fr" | "sv" | "de"; +type Locale = "en" | "zh" | "vi" | "fr" | "nl" | "sv" | "de";