diff --git a/api/user_setting.go b/api/user_setting.go
index cd02e077..99a4102c 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"}
+ UserSettingLocaleValue = []string{"en", "zh", "vi", "fr", "sv"}
UserSettingAppearanceValue = []string{"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 fa2cace5..6bb491c3 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: "Svenska",
+ value: "sv",
+ },
];
const PreferencesSection = () => {
diff --git a/web/src/i18n.ts b/web/src/i18n.ts
index 65eb561c..b4b2c108 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 svLocale from "./locales/sv.json";
i18n.use(initReactI18next).init({
resources: {
@@ -19,6 +20,9 @@ i18n.use(initReactI18next).init({
fr: {
translation: frLocale,
},
+ sv: {
+ translation: svLocale,
+ },
},
lng: "en",
fallbackLng: "en",
diff --git a/web/src/locales/sv.json b/web/src/locales/sv.json
new file mode 100644
index 00000000..3bbc94f9
--- /dev/null
+++ b/web/src/locales/sv.json
@@ -0,0 +1,213 @@
+{
+ "common": {
+ "about": "Om",
+ "email": "E-post",
+ "password": "Lösenord",
+ "repeat-password-short": "Upprepa",
+ "repeat-password": "Uprepa lösenordet",
+ "new-password": "Nytt lösenord",
+ "repeat-new-password": "Upprepa det nya lösenordet",
+ "username": "Användarnamn",
+ "nickname": "Smeknamn",
+ "save": "Spara",
+ "close": "Stäng",
+ "cancel": "Avbryt",
+ "create": "Skapa",
+ "change": "Ändra",
+ "confirm": "Bekräfta",
+ "reset": "Återställ",
+ "language": "Språk",
+ "version": "Version",
+ "pin": "Fäst",
+ "unpin": "Ta bort fäst",
+ "edit": "Redigera",
+ "restore": "Återställ",
+ "delete": "Radera",
+ "null": "Null",
+ "share": "Dela",
+ "archive": "Arkivera",
+ "basic": "Grundläggande",
+ "admin": "Admin",
+ "explore": "Utforska",
+ "sign-in": "Logga in",
+ "sign-up": "Bli medlem",
+ "sign-out": "Logga ut",
+ "back-to-home": "Tillbaka hem",
+ "type": "Typ",
+ "shortcuts": "Genvägar",
+ "title": "Titel",
+ "filter": "Filter",
+ "tags": "Taggar",
+ "yourself": "Själv",
+ "archived-at": "Arkiverad på",
+ "changed": "Ändrad",
+ "update-on": "Uppdatering på",
+ "fold": "Vik ihop",
+ "expand": "Expandera",
+ "image": "Bild",
+ "link": "Länk"
+ },
+ "slogan": "En öppen källkod, self-hosted antecknings hubb med kunskapshantering och socialisering",
+ "auth": {
+ "signup-as-host": "Registera dig som värd",
+ "host-tip": "Du registerar dig som webbplatsvärd.",
+ "not-host-tip": "Om du inte har ett konto, kontakta webbplatsens värd."
+ },
+ "sidebar": {
+ "daily-review": "Daglig återblick",
+ "resources": "Resurser",
+ "setting": "Inställningar",
+ "archived": "Arkiverade"
+ },
+ "daily-review": {
+ "oops-nothing": "Oj, det finns inget här."
+ },
+ "resources": {
+ "description": "Visa dina statiska resurser i anteckningarn. t.ex bilder.",
+ "no-resources": "Inga resurser.",
+ "fetching-data": "hämtar data...",
+ "upload": "Ladda upp",
+ "preview": "Förhandsvisa",
+ "copy-link": "Kopiera länk",
+ "delete-resource": "Ta bort resurs",
+ "warning-text": "Är du säker på att du vill ta bort den här resursen? DENNA ÅTGÄRD ÄR OÅTERSTÄLLBAR❗",
+ "linked-amount": "Länkat antecknings belopp",
+ "rename": "Döp om",
+ "clear-unused-resources": "Rensa outnytjade resurser",
+ "warning-text-unused": "Är du säker på att du vill ta bort dessa oanvända resurser? DENNA ÅTGÄRD ÄR OÅTERSTÄLLBAR❗",
+ "no-unused-resources": "Inga oanvända resurser"
+ },
+ "archived": {
+ "archived-memos": "Arkiverade anteckningar",
+ "no-archived-memos": "Inga arkiverade anteckningar.",
+ "fetching-data": "hämtar data..."
+ },
+ "editor": {
+ "editing": "Redigerar...",
+ "cancel-edit": "Avbryt redigering",
+ "save": "Spara",
+ "placeholder": "Några tankar...",
+ "only-image-supported": "Endast bildfiler stöds.",
+ "cant-empty": "Innehållet får inte vara tomt",
+ "local": "Lokal",
+ "resources": "Resurser"
+ },
+ "memo": {
+ "view-detail": "Visa detaljer",
+ "copy": "Kopiera",
+ "visibility": {
+ "private": "Endast synlig för dig",
+ "protected": "Synlig för medlemmar",
+ "public": "Synlig för alla"
+ }
+ },
+ "memo-list": {
+ "fetching-data": "hämtar data...",
+ "fetch-more": "Klicka här för att hämta mer"
+ },
+ "shortcut-list": {
+ "shortcut-title": "Genvägs titel",
+ "create-shortcut": "Skapa genväg",
+ "edit-shortcut": "Ändra genväg",
+ "eligible-memo": "kvalificerad anteckning",
+ "fill-previous": "Vänligen fyll i tidigare filtervärde",
+ "title-required": "Titel krävs",
+ "value-required": "Filtervärde krävs"
+ },
+ "filter": {
+ "new-filter": "Nytt filter",
+ "operator": {
+ "contains": "Innehåller",
+ "not-contains": "Innehåller inte",
+ "is": "Är",
+ "is-not": "Är inte",
+ "before": "Innan",
+ "after": "Efter"
+ },
+ "value": {
+ "not-tagged": "Inga taggar",
+ "linked": "Har länkar"
+ },
+ "text-placeholder": "Börjar med ^ för att använda regex"
+ },
+ "tag-list": {
+ "tip-text": "Ange `#tag ` för att skapa"
+ },
+ "search": {
+ "quickly-filter": "Filtrera snabbt"
+ },
+ "setting": {
+ "my-account": "Mitt konto",
+ "preference": "Preferens",
+ "member": "Medlem",
+ "member-list": "Medlemslista",
+ "system": "System",
+ "account-section": {
+ "title": "Kontoinformation",
+ "update-information": "Uppdatera informationen",
+ "change-password": "Ändra lösenord"
+ },
+ "preference-section": {
+ "default-memo-visibility": "Standard synlighet för anteckningar",
+ "enable-folding-memo": "Aktivera vikbara anteckningar",
+ "editor-font-style": "Redigerare teckensnitt",
+ "mobile-editor-style": "Mobilredigerade stil",
+ "default-memo-sort-option": "Anteckning visningstid",
+ "created_ts": "Skapade tid",
+ "updated_ts": "Upodaterad tid"
+ },
+ "member-section": {
+ "create-a-member": "Skapa en medlem"
+ },
+ "system-section": {
+ "database-file-size": "Databas filstorlek",
+ "allow-user-signup": "Tillåt användarregistrering",
+ "additional-style": "Ytterligare stil",
+ "additional-script": "Ytterligare skript",
+ "additional-style-placeholder": "Ytterligare CSS kod",
+ "additional-script-placeholder": "Ytterligare JavaScript kod"
+ },
+ "apperance-option": {
+ "light": "Alltid ljus",
+ "dark": "Alltid mörk",
+ "system": "Följ systeminställningarna"
+ }
+ },
+ "amount-text": {
+ "memo": "ANTECKNING",
+ "tag": "TAGG",
+ "day": "DAG"
+ },
+ "message": {
+ "no-memos": "inga anteckningar 🌃",
+ "memos-ready": "alla anteckningar är redo 🎉",
+ "restored-successfully": "Återställdes framgångsrikt",
+ "memo-updated-datetime": "Anteckning skapad datum och tid ändrad",
+ "invalid-created-datetime": "Ogiltig skapad datumtid.",
+ "change-memo-created-time": "Ändra anteckning skapade tid",
+ "memo-not-found": "Anteckning hittades inte.",
+ "fill-all": "Var god fyll i alla fält.",
+ "password-not-match": "Lösenorden matchar inte.",
+ "new-password-not-match": "Nya lösenord matchar inte.",
+ "image-load-failed": "Bildladdning misslyckades",
+ "fill-form": "Vänligen fyll i detta formulär",
+ "login-failed": "Inloggningen misslyckades",
+ "signup-failed": "Registrering misslyckades",
+ "user-not-found": "Användaren hittades inte",
+ "password-changed": "Lösenord ändrat",
+ "private-only": "Denna anteckning är privat.",
+ "copied": "Kopierad",
+ "succeed-copy-content": "Innehållet kopierat till urklipp.",
+ "succeed-copy-link": "Länk kopioerat till urklipp.",
+ "change-resource-filename": "Ändra resursfilnamn",
+ "resource-filename-updated": "Resursfilnamn ändrat.",
+ "invalid-resource-filename": "Ogiltligt filnamn.",
+ "click-to-save-the-image": "Klicka för att spara bilden",
+ "generating-the-screenshot": "Genererar skärmdumpen...",
+ "count-selected-resources": "Totalt valt",
+ "too-short": "För kort",
+ "too-long": "För långt",
+ "not-allow-space": "Tillåt inte mellanslag",
+ "not-allow-chinese": "Tillåt inte kinesiska"
+ }
+}
\ No newline at end of file
diff --git a/web/src/pages/Auth.tsx b/web/src/pages/Auth.tsx
index 5eb5cf10..03c817d2 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 97fe73f5..ef1b5c07 100644
--- a/web/src/types/i18n.d.ts
+++ b/web/src/types/i18n.d.ts
@@ -1 +1 @@
-type Locale = "en" | "zh" | "vi" | "fr";
+type Locale = "en" | "zh" | "vi" | "fr" | "sv";