+
+
{{ $t('empty') }}
+{{ $t('empty') }}
+ +diff --git a/CHANGELOG.md b/CHANGELOG.md index d7de34f59f..483c0d3407 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,14 @@ mongodb: 8. master ブランチに戻す 9. enjoy +11.18.0 (2019/05/21) +-------------------- +### ✨Improvements +* デザインの調整 + +### 🐛Fixes +* 投稿の削除が連合しない問題を修正 + 11.17.1 (2019/05/20) -------------------- ### 🐛Fixes diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ace822c63e..b01e5e6dd8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -128,6 +128,20 @@ query.andWhere(new Brackets(qb => { })); ``` +### Not `null` in TypeORM +```ts +const foo = await Foos.findOne({ + bar: Not(null) +}); +``` +のようなクエリ(`bar`が`null`ではない)は期待通りに動作しない。 +次のようにします: +```ts +const foo = await Foos.findOne({ + bar: Not(IsNull()) +}); +``` + ### `null` in SQL SQLを発行する際、パラメータが`null`になる可能性のある場合はSQL文を出し分けなければならない 例えば diff --git a/locales/cs-CZ.yml b/locales/cs-CZ.yml index 7b6327bc6d..5fb689e7bb 100644 --- a/locales/cs-CZ.yml +++ b/locales/cs-CZ.yml @@ -251,6 +251,7 @@ common: my-token-regenerated: "Váš token byl regenerován, proto budete odhlášen/a." hide-password: "Skrýt heslo" show-password: "Zobrazit heslo" + enter-username: "Zadejte uživatelské jméno" do-not-use-in-production: "Tohle je vývojářský build. Nepoužívejte v produkci." user-suspended: "Tomuto uživateli byl pozastaven účet." is-remote-user: "Informace o tomto uživateli nemusí být kompletní." @@ -414,14 +415,12 @@ common/views/components/messaging.vue: search-user: "Najít uživatele" you: "Vy" no-history: "Žádná historie" + user: "Uživatel" common/views/components/messaging-room.vue: - empty: "Žádné zprávy" new-message: "Máte novou zprávu" - only-one-file-attached: "Jenom JEDEN soubor může být přiložen ke zprávě." common/views/components/messaging-room.form.vue: send: "Odeslat" attach-from-local: "Přiložit soubory z Vašeho zařízení" - only-one-file-attached: "Jenom JEDEN soubor může být přiložen ke zprávě." common/views/components/messaging-room.message.vue: is-read: "Přečtené" deleted: "Tato zpráva byla odstraněna" @@ -617,8 +616,15 @@ common/views/components/user-list-editor.vue: remove-user: "Odebrat z tohoto seznamu" delete-are-you-sure: "Smazat seznam \"$1\"?" deleted: "Smazáno" + add-user: "Přidat uživatele" +common/views/components/user-group-editor.vue: + deleted: "Smazáno" + invite: "Pozvat" common/views/components/user-lists.vue: + user-lists: "Seznamy" list-name: "Název seznamu" +common/views/components/user-groups.vue: + invites: "Pozvat" common/views/widgets/broadcast.vue: fetching: "Načítám" next: "Další" @@ -853,11 +859,6 @@ desktop/views/components/ui.header.post.vue: post: "Nový příspěvek" desktop/views/components/ui.header.search.vue: placeholder: "Vyhledávání" -desktop/views/components/received-follow-requests-window.vue: - accept: "Přijmout" - reject: "Odmítnout" -desktop/views/components/user-lists-window.vue: - title: "Seznamy uživatelů" desktop/views/components/user-preview.vue: notes: "Příspěvky" desktop/views/components/users-list.vue: @@ -902,8 +903,7 @@ admin/views/instance.vue: recaptcha-config: "nastavení služby reCAPTCHA" recaptcha-info: "reCAPTCHA token je povinný. Můžete jej získat na https://www.google.com/recaptcha/intro/" enable-recaptcha: "povolit reCAPTCHA" - recaptcha-site-key: "reCAPTCHA klíč stránky (site key)" - recaptcha-secret-key: "reCAPTCHA tajný klíč" + recaptcha-preview: "Náhled" twitter-integration-config: "Nastavení spojení s Twitterem" twitter-integration-info: "The callback URL is set on {url}." enable-twitter-integration: "Povolit připojení k Twitteru" @@ -1159,8 +1159,6 @@ mobile/views/pages/drive.vue: contextmenu: upload: "Nahrát soubor" create-folder: "Vytvořit složku" -mobile/views/pages/user-lists.vue: - title: "Seznamy" mobile/views/pages/signup.vue: lets-start: "Váš účet je připraven! 📦" mobile/views/pages/home.vue: @@ -1177,9 +1175,6 @@ mobile/views/pages/widgets/activity.vue: activity: "Aktivita" mobile/views/pages/share.vue: share-with: "Sdílet na {name}" -mobile/views/pages/received-follow-requests.vue: - accept: "Přijmout" - reject: "Odmítnout" mobile/views/pages/note.vue: prev: "Předchozí příspěvěk" next: "Následující příspěvek" @@ -1212,6 +1207,7 @@ deck/deck.user-column.vue: dev/views/new-app.vue: app-name-desc: "Jméno vaší aplikace" pages: + like: "Lajk" title: "Titulek" blocks: post: "Formulář pro psaní" diff --git a/locales/da-DK.yml b/locales/da-DK.yml new file mode 100644 index 0000000000..0a9f299698 --- /dev/null +++ b/locales/da-DK.yml @@ -0,0 +1,1896 @@ +--- +meta: + lang: "Dansk" +common: + misskey: "En ⭐ i fediverset" + about-title: "En ⭐ i fediverset." + about: "Tak, fordi du fandt Misskey. Misskey er en decentral mikroblog platform født på Jorden. Den findes i Fediverset (et univers med forskellige sociale medieplatforme). Den er tæt integreret med andre sociale medier platforme. Hvorfor ikke tage en pause fra trængsel og travlhed i storbyen og hoppe ind i en ny type internet?" + intro: + title: "Hvad er Misskey?" + about: "Misskey er en open-source, decentraliseret microblogging platform. Den har en sofistikeret brugerflade, som kan tilpasses fuldstændigt. Den giver mulighed for at udtrykke mange forskellige reaktioner på poster. Desuden tilbyder den gratis opbevaring af filer med et integreret håndteringssystem samt andre avancerede funktioner. Oven i dette er Misskey tilknyttet et netværk ved navn “Fediverse”, som gør os i stand til at kommunikere med brugere på andre SNS'er. For eksempel vil en post, som du har skrevet, ikke kun blive sendt til brugere af Misskey men også til brugere af Mastodon og Pleroma. Det svarer lidt til at sende radio transmissioner mellem planeter for at etablere en kommunikation." + features: "Funktioner" + rich-contents: "Post" + rich-contents-desc: "Bare skriv løs om dine ideer, aktuelle emner eller alt muligt andet, som du gerne vil dele med andre. Det kan være, at du gerne vil udsmykke dine ord, vedhæfte dine yndlingsbilleder, sende filer, tilføje videoer eller oprette en afstemning. Alle de nævnte ting er muligt med Misskey!" + reaction: "Reaktioner" + reaction-desc: "Den nemmeste måde at udtrykke dine reaktioner på. Misskey giver mulighed for at tilføje forskellige reaktioner på andres poster. Reaktionerne vil aldrig blive vist på andre SNS'er, som kun er i stand til at udveksle \"likes\"." + ui: "Brugerflade" + ui-desc: "En enkelt brugerflade vil aldrig passe helt for alle. Derfor er Misskey's brugerflade gennemført justerbar, så den kan ramme dine ønsker helt præcist. Du kan designe dit helt eget personlige udtryk ved at rette layoutet af din tidslinje og tilpasse udvalgte widgets, som desuden kan flyttes frit rundt." + drive: "Drev" + drive-desc: "Vil du poste et billede, som du tidligere har uploadet? Har du brug for at navngive filer og organisere dem i mapper, som du selv har navngivet? Så er Misskey Drev den bedste løsning for dig. Den gør det så let som ingenting at dele dine filer online." + outro: "Tjek Misskey's unikke funktioner ved at se dem med dine egne øjne. Hvis du kommer frem til, at den ene server ikke er noget for dig, så kan du prøve en anden. Misskey er et decentraliseret SNS, så du kan lettere finde frem til brugere, som du klikker med. God fornøjelse!" + adblock: + detected: "Her kan du deaktivere ad blocker." + warning: "Visse funktioner kan forsvinde eller medføre forstyrrelser, hvis ad blocking er aktiveret. Misskey kører ikke annoncer." + application-authorization: "Adgangsstyring" + close: "Luk" + do-not-copy-paste: "Undgå venligst at skrive eller klistre kode ind her. I modsat fald kan din konto blive kompromitteret." + load-more: "Læs mere" + enter-password: "Skriv din adgangskode" + 2fa: "To-faktor adgangsstyring" + customize-home: "Tilpas dit layout" + featured-notes: "Fremhævede poster" + dark-mode: "Nat design" + signin: "Log ind" + signup: "Bliv bruger" + signout: "Log ud" + reload-to-apply-the-setting: "Denne indstilling slår først igennem, når du har genindlæst siden. Vil du genindlæse siden nu?" + fetching-as-ap-object: "Tilladelse til sammenkobling" + got-it: "Det er OK" + customization-tips: + title: "Tips om tilpasning" + paragraph: "
Tilpasning giver mulighed for at tilføje, slette og flytte rundt på widgets med træk-og-slip.
Du kan ændre visningen af visse widgets ved at højre-klikke på dem.
En widget slettes ved at trække den med musen hen til skaldespanden i toppen af siden.
Du afslutter tilpasningen ved at klikke på \"Færdig\" øverst til højre.
" + gotit: "Det er OK" + notification: + file-uploaded: "Filen er overført!" + message-from: "Besked fra {}:" + reversi-invited: "Invitation til spil" + reversi-invited-by: "Inviteret af {}:" + notified-by: "Besked fra {}:" + reply-from: "Svar fra {}:" + quoted-by: "Citeret af {}:" + time: + unknown: "ukendt" + future: "fremtidig" + just_now: "nu" + seconds_ago: "{} sekund(er) siden" + minutes_ago: "{} minut(ter) siden" + hours_ago: "{} time(r) siden" + days_ago: "{} dag(e) siden" + weeks_ago: "{} uge(r) siden" + months_ago: "{} måned(er) siden" + years_ago: "{} år siden" + month-and-day: "{day}-{month}" + trash: "Skraldespand" + drive: "Drev" + pages: "Sider" + messaging: "Konversationer" + home: "Startside" + deck: "Stabel" + timeline: "Tidslinje" + explore: "Udforsk" + following: "Følger" + followers: "Følgere" + favorites: "Favoritter" + permissions: + "read:account": "Se konto indstillinger" + "write:account": "Opdater dine konto informationer" + "read:blocks": "Vis blokke" + "write:blocks": "Rediger blokke" + "read:drive": "Gennemse drevet" + "write:drive": "Rediger drevet" + "read:favorites": "Mine favoritter" + "write:favorites": "Rediger favoritterne" + "read:following": "Vis info om følgere" + "write:following": "Rediger info om følgere" + "read:messaging": "Se meddelelser" + "write:messaging": "Rediger meddelelser" + "read:mutes": "Se annullerede poster" + "write:mutes": "Rediger annullerede poster" + "write:notes": "Opret og slet poster" + "read:notifications": "Vis notifikationer" + "write:notifications": "Rediger notifikationer" + "read:reactions": "Vis reaktioner" + "write:reactions": "Rediger reaktioner" + "write:votes": "Stem" + empty-timeline-info: + follow-users-to-make-your-timeline: "Følgende brugere vil få vist deres poster på tidslinjen." + explore: "Find brugere" + weekday-short: + sunday: "Søn" + monday: "Man" + tuesday: "Tirs" + wednesday: "Ons" + thursday: "Tors" + friday: "Fre" + saturday: "Lør" + weekday: + sunday: "Søndag" + monday: "Mandag" + tuesday: "Tirsdag" + wednesday: "Onsdag" + thursday: "Torsdag" + friday: "Fredag" + saturday: "Lørdag" + reactions: + like: "Synes om" + love: "Elsker" + laugh: "Ler" + hmm: "Hmm...?" + surprise: "Wauw" + congrats: "Tillykke" + angry: "Vred" + confused: "Forvirret" + rip: "Hvil i fred" + pudding: "Budding" + note-visibility: + public: "Offentlig" + home: "Startside" + home-desc: "Post udelukkende til tidslinjen" + followers: "Følgere" + followers-desc: "Skriv kun til dine følgere" + specified: "Direkte" + specified-desc: "Skriv kun til udvalgte brugere" + local-public: "Offentlig (på den lokale server)" + local-home: "Startside (på den lokale server)" + local-followers: "Følgere (på den lokale server)" + note-placeholders: + a: "Hvad laver du?" + b: "Hvad sker der?" + c: "Hvad har du i tankerne?" + d: "Hvad vil du gerne sige?" + e: "Skriv her" + f: "Venter på din indtastning." + settings: "Indstillinger" + _settings: + profile: "Profil" + notification: "Notifikation" + apps: "Apps" + tags: "Hashtag" + mute-and-block: "Sluk / Blokér" + blocking: "Blokér" + security: "Sikkerhed" + signin: "Login historik" + password: "Adgangskode" + other: "Andet" + appearance: "Udseende" + behavior: "Opførsel" + fetch-on-scroll: "Uendeligt scroll" + fetch-on-scroll-desc: "Når du scroller ned ad siden, hentes der automatisk nyt indhold ind" + note-visibility: "Post synlighed" + default-note-visibility: "Standard synlighed" + remember-note-visibility: "Husk post synlighed" + web-search-engine: "Søgemaskine" + web-search-engine-desc: "Eksempel: https://www.google.com/?#q={{query}}" + keep-cw: "Bevar indholdsvarsel" + keep-cw-desc: "Det indholdsvarsel, som står på det oprindelige indlæg, vil som standard blive overført til eventuelle svar på indlægget." + i-like-sushi: "Jeg foretrækker sushi frem for budding" + show-reversi-board-labels: "Vis række- og kolonne-etiketter i Reversi" + use-avatar-reversi-stones: "Anvend avatar som en sten i Reversi" + disable-animated-mfm: "Deaktiver animeret tekst i en post" + disable-showing-animated-images: "Afspil ikke animerede billeder" + suggest-recent-hashtags: "Vis de seneste populære hashtags på post formularen" + always-show-nsfw: "Vis altid indhold, der er markeret som Upassende På Jobbet" + always-mark-nsfw: "Marker altid poster med medie bilag som Upassende På Jobbet" + show-full-acct: "Vis aldrig værtsnavnet på brugernavnet" + show-via: "vis via" + reduce-motion: "Reducer bevægelser" + this-setting-is-this-device-only: "Indstillingen gælder kun for denne enhed" + use-os-default-emojis: "Anvend standard emojis fra operativsystemet" + line-width: "Linjebredde" + line-width-thin: "Tynd linje" + line-width-normal: "Normal" + line-width-thick: "Tyk linje" + font-size: "Tekst størrelse" + font-size-x-small: "Meget lille" + font-size-small: "Lille" + font-size-medium: "Normal" + font-size-large: "Stor" + font-size-x-large: "Meget stor" + deck-column-align: "Justering af kolonner" + deck-column-align-center: "Midten" + deck-column-align-left: "Venstre" + deck-column-align-flexible: "Højre" + deck-column-width: "Kolonne bredde" + deck-column-width-narrow: "Smal" + deck-column-width-narrower: "Smallere" + deck-column-width-normal: "Normal" + deck-column-width-wider: "Lidt bredere" + deck-column-width-wide: "Bred" + use-shadow: "Vis skygger" + rounded-corners: "Vis afrundede hjørner" + circle-icons: "Anvend cykliske ikoner" + contrasted-acct: "Tilføj kontrast til brugerkontoen" + wallpaper: "Baggrundsbillede" + choose-wallpaper: "Vælg en baggrund" + delete-wallpaper: "Fjern baggrund" + post-form-on-timeline: "Vis post formularen oven over tidslinjen" + show-clock-on-header: "Vis uret i øverste højre hjørne" + show-reply-target: "Vis hvad der svares på" + timeline: "Tidslinje" + show-my-renotes: "Vis mine gen-posteringer på tidslinjen" + show-renoted-my-notes: "Vis gen-posteringer af dine egne poster på tidslinjen" + show-local-renotes: "Vis gen-posteringer af lokale poster på tidslinjen" + remain-deleted-note: "Fortsæt med at vise slettede poster" + sound: "Lyd" + enable-sounds: "Aktiver lyd" + enable-sounds-desc: "Afspil en lyd, når du modtager en post/besked. Denne indstilling gemmes i browseren." + volume: "Volumen" + test: "Test" + update: "Misskey opdatering" + version: "Aktuel version:" + latest-version: "Seneste version:" + update-checking: "Kikker efter opdateringer" + do-update: "Kikker efter opdateringer" + update-settings: "Avancerede indstillinger" + no-updates: "Der er ikke kommet nogen opdateringer" + no-updates-desc: "Din Misskey er opdateret" + update-available: "Der er kommet en ny version" + update-available-desc: "Opdateringer vil slå igennem efter genindlæsning af siden." + advanced-settings: "Avancerede indstillinger" + debug-mode: "Aktiver debug" + debug-mode-desc: "Denne indstilling er gemt i browseren" + navbar-position: "Placering af navigationsbaren" + navbar-position-top: "Top" + navbar-position-left: "Venstre" + navbar-position-right: "Højre" + i-am-under-limited-internet: "Mit internet kører med lav hastighed" + post-style: "Stil for visning af poster" + post-style-standard: "Standard" + post-style-smart: "Smart" + notification-position: "Vis notifikationer" + notification-position-bottom: "Bund" + notification-position-top: "Top" + disable-via-mobile: "Marker aldrig posten som \"fra mobil\"" + load-raw-images: "Vis vedhæftede bilag i original kvalitet" + load-remote-media: "Vis medie-materiale fra en ekstern server" + search: "Søg" + delete: "Slet" + loading: "Henter" + ok: "Bekræft" + cancel: "Afbryd" + update-available-title: "Opdatering tilgængelig" + update-available: "En ny version af Misskey er nu tilgængelig ({newer}, den aktuelle version er {current}). Genindlæs siden for at få opdateringerne til at slå igennem." + my-token-regenerated: "Din nøgle er blevet genopbygget, så du bliver logget ud." + hide-password: "Skjul adgangskoden" + show-password: "Vis adgangskoden" + enter-username: "Indtast brugernavn" + do-not-use-in-production: "Dette er en instans til udvikling. Bør ikke benyttes til produktion." + user-suspended: "Denne bruger er blevet udelukket." + is-remote-user: "Oplysningerne om denne bruger er muligvis ikke fyldestgørende" + is-remote-post: "Indholdet af denne post er spejlet fra andetsteds" + view-on-remote: "Se den fulde version eksternt" + renoted-by: "Gen-posteret af {user}" + no-notes: "Uden poster" + turn-on-darkmode: "Skift til mørk baggrund" + turn-off-darkmode: "Lys baggrund" + error: + title: "Noget gik galt :(" + retry: "Prøv igen" + reversi: + drawn: "Tegn" + my-turn: "Din tur" + opponent-turn: "Modstanderens tur" + turn-of: "{name}s tur" + past-turn-of: "{name}s tur forinden" + won: "{name} vandt" + black: "Sort" + white: "Hvid" + total: "I alt" + this-turn: "Runde {count}" + widgets: + analog-clock: "Analogt ur" + profile: "Profil" + calendar: "Kalender" + timemachine: "Kalender (tidsmaskine)" + activity: "Aktivitet" + rss: "RSS læser" + memo: "Selvklæbende noter" + trends: "Tendenser" + photo-stream: "Billedkavalkade" + posts-monitor: "Graf over poster" + slideshow: "Billedkarrusel" + version: "Version" + broadcast: "Offentliggør" + notifications: "Notifikation" + users: "Anbefalede brugere" + polls: "Afstemninger" + post-form: "Post formular" + server: "Server info" + nav: "Navigation" + tips: "Tips og tricks" + hashtags: "Hashtags" + queue: "Kø" + dev: "Fejl under oprettelse af app. Prøv igen." + ai-chan-kawaii: "Ai Chan Kawaii!" + you: "Du" +auth/views/form.vue: + share-access: "Vil du tillade, at {name} får adgang til din konto?" + permission-ask: "Denne app kræver følgende tilladelser:" + cancel: "Annuller" + accept: "Åbn for adgang." +auth/views/index.vue: + loading: "Henter" + denied: "Adgang til app er blevet afvist." + denied-paragraph: "Denne app vil ikke give adgang for din konto." + already-authorized: "Der er allerede adgang til denne app." + allowed: "Der er adgang til app." + callback-url: "Hopper tilbage til app." + please-go-back: "Hop tilbage til app." + error: "Sessionen eksisterer ikke." + sign-in: "Log ind." +common/views/pages/explore.vue: + pinned-users: "Fremhævede brugere" + popular-users: "Populære brugere" + recently-updated-users: "Senest aktive brugere" + recently-registered-users: "Brugere som er kommet til for nyligt" + popular-tags: "Populære tags" + federated: "Fra Fediverset" + explore: "Udforsk {host}" + users-info: "Lige nu er {users} brugere registreret her" +common/views/components/url-preview.vue: + enable-player: "Aktiver afspilning" + disable-player: "Stop afspilning" +common/views/components/user-list.vue: + no-users: "Der er ingen brugere" +common/views/components/games/reversi/reversi.vue: + matching: + waiting-for: "Venter på {}" + cancel: "Annuller" +common/views/components/games/reversi/reversi.game.vue: + surrender: "Giv op" + surrendered: "Af taberen" + is-llotheo: "Den med færrest vinder (Llotheo)" + looped-map: "Vendebrikker" + can-put-everywhere: "Kan placeres hvorsomhelst" +common/views/components/games/reversi/reversi.index.vue: + title: "Misskey Reversi" + sub-title: "Spil Reversi med dine venner!" + invite: "Inviter" + rule: "Spilleregler" + rule-desc: "Reversi er et strategi spil for to deltagere, og det spilles på et bræt med 8 gange 8 felter. På felterne skal placeres 64 ens brikker, som er sorte på den ene side og hvide på den anden. Deltagerne vælger hver sin farve og placerer på skift en brik med deres egen farve opad. Det gælder om at placere brikker med sin egen farve i hver sin ende af en stribe brikker med modstanderens farve, for det giver ret til at vende de mellemliggende brikker rundt, så de får ens egen farve. Vinderen er den, som til sidst har erobret flest felter på brættet." + mode-invite: "Inviter" + mode-invite-desc: "Spil med en udvalgt bruger" + invitations: "Du har fået en invitation!" + my-games: "Mine spil" + all-games: "Alle spil" + enter-username: "Angiv brugernavn" + game-state: + ended: "Slut" + playing: "I gang" +common/views/components/games/reversi/reversi.room.vue: + settings-of-the-game: "Spilleindstillinger" + choose-map: "Vælg en brikfarve" + random: "Tilfældig" + black-or-white: "Sort/hvid" + black-is: "Sort er {}" + rules: "Regler" + is-llotheo: "Den med færrest vinder (Llotheo)" + looped-map: "Vendebrikker" + can-put-everywhere: "Kan placeres hvorsomhelst" + settings-of-the-bot: "Bot indstillinger" + this-game-is-started-soon: "Spillet begynder lige om lidt" + waiting-for-other: "Venter på modstanderen" + waiting-for-me: "Venter på, at du bliver klar" + waiting-for-both: "Venter på, at spillerne er klar" + cancel: "Annuller" + ready: "Klar" + cancel-ready: "Fortryd din klar-melding" +common/views/components/connect-failed.vue: + title: "Ingen kontakt med serveren" + description: "Der er et problem med din internet forbindelse, eller så er serveren nede eller under vedligeholdelse. Tag og {try again} senere." + thanks: "Tak, fordi du bruger Misskey." + troubleshoot: "Fejlfinding" +common/views/components/connect-failed.troubleshooter.vue: + title: "Fejlfinding" + network: "Netværksforbindelse" + checking-network: "Tjekker netværksforbindelsen" + internet: "Internetforbindelse" + checking-internet: "Tjekker internetforbindelse" + server: "Forbindelse til server" + checking-server: "Tjekker forbindelsen til server" + finding: "Prøver at finde problemet" + no-network: "Ingen forbindelse" + no-network-desc: "Tjek en ekstra gang, om du har netværksforbindelse." + no-internet: "Det er ingen internetforbindelse" + no-internet-desc: "Tjek en ekstra gang, at du har forbindelse til internettet" + no-server: "Ude af stand til at skabe forbindelse til Misskey serveren" + no-server-desc: "Netværksforbindelsen på din enhed er normal, men du kunne ikke koble dig på Misskey serveren. Årsagen kan være, at serveren er nede, eller at den er under vedligeholdelse. Prøv igen senere." + success: "Du er nu blevet koblet til Misskey serveren" + success-desc: "Det ser ud til, at der er forbindelse. Genindlæs siden." + flush: "Ryd cachen" + set-version: "Angiv version" +common/views/components/media-banner.vue: + sensitive: "Upassende På Jobbet" + click-to-show: "Klik for at se" +common/views/components/theme.vue: + theme: "Tema" + light-theme: "Tema i tilknytning til lys baggrund" + dark-theme: "Tema i tilknytning til mørk baggrund" + light-themes: "Lyst tema" + dark-themes: "Mørkt tema" + install-a-theme: "Installer et tema" + theme-code: "Tema kode" + install: "Installer" + installed: "\"{}\" er blevet installeret" + create-a-theme: "Opret et tema" + save-created-theme: "Gem tema" + primary-color: "Primær farve" + secondary-color: "Sekundær farve" + text-color: "Tekst farve" + base-theme: "Grundtema" + base-theme-light: "Lyst" + base-theme-dark: "Mørkt" + find-more-theme: "Find flere temaer" + theme-name: "Tema navn" + preview-created-theme: "Før-visning" + invalid-theme: "Temaet er ikke gyldigt" + already-installed: "Teamet er allerede installeret" + saved: "Gemt" + manage-themes: "Administrer temaer" + builtin-themes: "Standard temaer" + my-themes: "Mine temaer" + installed-themes: "Installerede temaer" + select-theme: "Vælg dit tema" + uninstall: "Afinstaller" + uninstalled: "\"{}\" er blevet afinstalleret" + author: "Skribent" + desc: "Beskrivelse" + export: "Eksport" + import: "Import" + import-by-code: "eller indsæt kode" + theme-name-required: "Temaet skal have et navn" +common/views/components/cw-button.vue: + hide: "Skjul" + show: "Se mere" + chars: "{count} tegn" + files: "{count} filer" + poll: "Afstemninger" +common/views/components/messaging.vue: + search-user: "Find en bruger" + you: "Du" + no-history: "Uden historik" + user: "Bruger" + group: "Gruppe" + start-with-user: "Start chat med bruger" + start-with-group: "Start chat med gruppe" + select-group: "Vælg gruppe" +common/views/components/messaging-room.vue: + not-talked-user: "Ingen bruger sessionshistorik" + not-talked-group: "Intet gruppesessions dokument" + no-history: "Der er ingen yderligere historik" + new-message: "Ny besked" + only-one-file-attached: "Kan kun indeholde én vedhæftning" +common/views/components/messaging-room.form.vue: + input-message-here: "Skriv meddelelsen her" + send: "Send" + attach-from-local: "Vedhæft filen fra din enhed" + attach-from-drive: "Vedhæft filen fra dit drev" + only-one-file-attached: "Kan kun indeholde én vedhæftning" +common/views/components/messaging-room.message.vue: + is-read: "Læst" + deleted: "Denne meddelelse er slettet" +common/views/components/nav.vue: + about: "Om" + stats: "Statistik" + status: "Status" + wiki: "Wiki" + donors: "Donatorer" + repository: "Systemets kode-repo" + develop: "Udviklere" + feedback: "Tilbagemeldinger" + tos: "Brugerbetingelser" +common/views/components/note-menu.vue: + mention: "Omtale" + detail: "Detaljer" + copy-content: "Kopier indholdet" + copy-link: "Kopier link" + favorite: "Marker denne post som favorit" + unfavorite: "Fjern favorit-markering" + watch: "Hold øje med" + unwatch: "Hold ikke længere øje med" + pin: "Tilknyt til din profil" + unpin: "Fjern tilknytning til din profil" + delete: "Slet" + delete-confirm: "Er du helt sikker på, at du vil slette denne post?" + remote: "Vis den oprindelige post" +common/views/components/user-menu.vue: + mention: "Omtale" + mute: "Annuller" + unmute: "Ophæv annullering" + mute-confirm: "Er du sikker på, at du vil annullere denne bruger?" + unmute-confirm: "Er du sikker på, at du vil fjerne annulleringen af denne bruger?" + block: "Bloker" + unblock: "Fjern blokering" + block-confirm: "Er du sikker på, at du vil blokere denne bruger?" + unblock-confirm: "Er du sikker på, at du vil fjerne blokeringen af denne bruger?" + push-to-list: "Tilføj til liste" + select-list: "Vælg liste" + report-abuse: "Meld misbrug" + report-abuse-detail: "Hvilken form for misbrug har du været ude for?" + report-abuse-reported: "Denne hændelse er nu videresendt til administratoren. Mange tak for hjælpen." + silence: "Gør tavs" + unsilence: "Fortryd at du har gjort tavs" + silence-confirm: "Er du sikker på, at du vil gøre denne bruger tavs?" + unsilence-confirm: "Er du sikker på, at du har fortrudt, at du har gjort denne bruger tavs?" + suspend: "Udeluk" + unsuspend: "Ophæv udelukkelse" + suspend-confirm: "Er du sikker på, at du vil udelukke denne bruger?" + unsuspend-confirm: "Er du sikker på, at du vil ophæve udelukkelsen af denne bruger?" +common/views/components/poll.vue: + vote-to: "Stem på '{}'" + vote-count: "{} stemmer" + total-votes: "{} stemmer i alt" + vote: "Stem" + show-result: "Vis resultatet" + voted: "Stemt" + closed: "Afsluttet" + remaining-days: "{d} dage og {h} timer tilbage" + remaining-hours: "{h} timer og {m} minutter tilbage" + remaining-minutes: "{m} minutter og {s} sekunder tilbage" + remaining-seconds: "{s} sekunder tilbage" +common/views/components/poll-editor.vue: + no-only-one-choice: "Der skal vælges mindst to muligheder" + choice-n: "Valgmulighed {}" + remove: "Slet valgmulighed" + add: "Tilføj valgmulighed" + destroy: "Drop afstemningen" + multiple: "Mere end et svar er tilladt" + expiration: "Udløber" + infinite: "Uendelig" + at: "Dato- og tidsvælger" + after: "Angivet tid" + no-more: "Du kan ikke tilføje flere svar" + deadline-date: "Slutdato" + deadline-time: "Varighed" + interval: "Varighed" + unit: "Enhed" + second: "Sekunder" + minute: "Minutter" + hour: "Time" + day: "Søn" +common/views/components/reaction-picker.vue: + choose-reaction: "Vælg reaktion" +common/views/components/emoji-picker.vue: + custom-emoji: "Brugerdefineret emoji" + people: "Personer" + animals-and-nature: "Dyr og natur" + food-and-drink: "Mad og drikke" + activity: "Aktivitet" + travel-and-places: "Rejser og steder" + objects: "Objekt" + symbols: "Symboler" + flags: "Flag" +common/views/components/signin.vue: + username: "Brugernavn" + password: "Adgangskode" + token: "Nøgle" + signing-in: "Log ind" + or: "Eller" + signin-with-twitter: "Log ind med Twitter" + signin-with-github: "Log ind med GitHub" + signin-with-discord: "Log ind med Discord" + login-failed: "Fejl ved log ind. Sørg for, at du har skrevet korrekt brugernavn og adgangskode." +common/views/components/signup.vue: + invitation-code: "Invitationskode" + invitation-info: "Kontakt en administrator, hvis du ikke har en invitationskode." + username: "Brugernavn" + checking: "Tjekker" + available: "Tilgængelig" + unavailable: "Ikke tilgængelig" + error: "Netværksfejl" + invalid-format: "bogstaver, tal og \"_\" er tilladt." + too-short: "Må ikke være tom!" + too-long: "Brug højst 20 tegn." + password: "Adgangskode" + password-placeholder: "Det anbefales at skrive mere end otte tegn" + weak-password: "Svag adgangskode" + normal-password: "Rimelig adgangskode" + strong-password: "Stærk adgangskode" + retype: "Skriv igen" + retype-placeholder: "Bekræft din adgangskode" + password-matched: "Godkendt" + password-not-matched: "Ikke godkendt" + recaptcha: "Verificering" + agree-to: "Enig {0}" + tos: "Brugerbetingelser" + create: "Opret en konto" + some-error: "Af en eller anden grund mislykkedes forsøget på at oprette en konto. Prøv igen." +common/views/components/special-message.vue: + new-year: "Godt nytår!" + christmas: "Glædelig jul!" +common/views/components/stream-indicator.vue: + connecting: "Tilslutter" + reconnecting: "Tilslutter igen" + connected: "Tilsluttet" +common/views/components/notification-settings.vue: + title: "Notifikationer" + mark-as-read-all-notifications: "Marker alle notifikationer som læste" + mark-as-read-all-unread-notes: "Marker alle poster som læste" + mark-as-read-all-talk-messages: "Marker alle samtaler som læste" + auto-watch: "Automatisk visning af poster" + auto-watch-desc: "Modtag automatisk notifikationer om poster, som du har reageret eller svaret på." +common/views/components/integration-settings.vue: + title: "Service samarbejde" + connect: "Tilslut" + disconnect: "Frakobl" + connected-to: "Du er tilsluttet næste konto" +common/views/components/github-setting.vue: + description: "Når du tilslutter din GitHub konto til din Misskey konto, bliver du i stand til at se info om din GitHub konto på din profil, og du vil få mulighed for at logge ind via GitHub." + connected-to: "Du er tilsluttet denne GitHub konto" + detail: "Flere detaljer" + reconnect: "Tilslut igen" + connect: "Tilslut til din GitHub konto" + disconnect: "Frakobl" +common/views/components/discord-setting.vue: + description: "Når du tilslutter din Discord konto til din Misskey konto, bliver du i stand til at se info om din Discord konto på din profil, og du vil få mulighed for at logge ind via Discord." + connected-to: "Du er tilsluttet denne Discord konto" + detail: "Detaljer..." + reconnect: "Tilslut igen" + connect: "Tilslut din Discord konto" + disconnect: "Frakobl" +common/views/components/uploader.vue: + waiting: "Venter" +common/views/components/visibility-chooser.vue: + public: "Offentlig" + home: "Startside" + home-desc: "Post kun til startsiden" + followers: "Følgere" + followers-desc: "Post kun til følgere" + specified: "Direkte" + specified-desc: "Post kun til udvalgte brugere" + local-public: "Offentlig (på den lokale server)" + local-public-desc: "Offentliggør ikke til eksterne" + local-home: "Startside (på den lokale server)" + local-followers: "Følgere (på den lokale server)" +common/views/components/trends.vue: + count: "{} brugere nævnt" + empty: "Ingen tendenser" +common/views/components/language-settings.vue: + title: "Vis sprog" + pick-language: "Vælg sprog" + recommended: "Anbefalet" + auto: "Automatisk" + specify-language: "Angiv sprog" + info: "Du er nødt til at genindlæse siden, før ændringerne slår igennem." +common/views/components/profile-editor.vue: + title: "Profil" + name: "Navn" + account: "Konto" + location: "Placering" + description: "Om mig" + you-can-include-hashtags: "Du må gerne bruge hashtags i din profil beskrivelse" + language: "Sprog" + birthday: "Fødselsdag" + avatar: "Ikon" + banner: "Banner" + is-cat: "Denne konto er en Kat" + is-bot: "Denne konto er en Bot" + is-locked: "Anmodning fra følgere kræver godkendelse" + careful-bot: "Følger anmodninger fra bots kræver godkendelse" + auto-accept-followed: "Accepter automatisk følgere af personer, som du selv følger" + advanced: "Avanceret" + privacy: "Privatliv" + save: "Gem" + saved: "Profil er opdateret med succes" + uploading: "Overfører" + upload-failed: "Fejl ved overførsel" + email: "Email indstillinger" + email-address: "Email adresse" + email-verified: "Din email er blevet bekræftet" + email-not-verified: "Email adresse er ikke bekræftet. Tjek indbakken i din mailboks." + export: "Eksport" + import: "Import" + export-and-import: "Eksport og import" + export-targets: + all-notes: "Alle poster" + following-list: "Liste over følgere" + mute-list: "Liste over annullerede konti" + blocking-list: "Liste over blokerede konti" + user-lists: "Lister" + export-requested: "Du har bedt om en eksport. Det kan tage et stykke tid. Når eksporten er gennemført, vil eksport-filen blive lagt på dit drev." + import-requested: "Du har sat en import i gang. Det kan tage et stykke tid." + enter-password: "Angiv din adgangskode" + danger-zone: "Risici" + delete-account: "Slet kontoen" + account-deleted: "Kontoen er slettet. Det kan vare lidt, inden alle data forsvinder." +common/views/components/user-list-editor.vue: + users: "Bruger" + rename: "Omdøb listen" + delete: "Slet liste" + remove-user: "Fjern fra denne liste" + delete-are-you-sure: "Slet liste \"$1\"?" + deleted: "Slettet med succes" + add-user: "Tilføj en bruger" +common/views/components/user-group-editor.vue: + users: "Brugere" + rename: "Omdøb gruppe" + delete: "Slet gruppe" + remove-user: "Fjern bruger fra denne gruppe" + delete-are-you-sure: "Er du sikker på, at du vil slette gruppen \"$ 1\"?" + deleted: "Slettet" + invite: "Inviter" + invited: "Inviterede" +common/views/components/user-lists.vue: + user-lists: "Lister" + create-list: "Opret en liste" + list-name: "Liste navn" +common/views/components/user-groups.vue: + user-groups: "Gruppe" + create-group: "Opret gruppe" + group-name: "Gruppenavn" + owned-groups: "Egne grupper" + joined-groups: "Tilsluttede grupper" + invites: "Inviter" + accept-invite: "Tag imod invitation" + reject-invite: "Afvis" +common/views/widgets/broadcast.vue: + fetching: "Tjekker" + no-broadcasts: "Ingen meddelelser" + have-a-nice-day: "Hav en god dag!" + next: "Næste" +common/views/widgets/calendar.vue: + year: "År {}" + month: "{}," + day: "{}" + today: "I dag:" + this-month: "Måned:" + this-year: "År:" +common/views/widgets/photo-stream.vue: + title: "Billedkavalkade" + no-photos: "Ingen billeder" +common/views/widgets/posts-monitor.vue: + title: "Graf over poster" + toggle: "Skift mellem visninger" +common/views/widgets/hashtags.vue: + title: "Hashtags" +common/views/widgets/server.vue: + title: "Server info" + toggle: "Skift mellem visninger" +common/views/widgets/memo.vue: + title: "Selvklæbende noter" + memo: "Skriv her!" + save: "Gem" +common/views/widgets/slideshow.vue: + folder-customize-mode: "For at kunne angive en mappe er du nødt til at gå ud af tilpasnings indstillingerne" + folder: "Klik og angiv en mappe" + no-image: "Der er ikke noget billede i denne mappe" +common/views/widgets/tips.vue: + tips-line1: "Du kan fokusere på tidslinjen med t" + tips-line2: "Åbn post formularen med p eller n." + tips-line3: "Du kan trække og slippe filer på post formularen" + tips-line4: "Du kan indsætte et billede fra klippebordet på afsendelses formularen" + tips-line5: "Du kan overføre filer ved at trække og slippe dem på dit drev" + tips-line6: "Du kan flytte en mappe ved at trække den inden for dit drev" + tips-line7: "Du kan flytte mapper ved at trække dem inden for dit drev" + tips-line8: "Startsidens layout kan tilpasses fra indstillingerne" + tips-line9: "Misskey er licenseret under AGPLv3." + tips-line10: "Widgeten med tidsmaskinen gør det let at \"spole\" tilbage til den tidligere tidslinje." + tips-line11: "Du kan sende poster til bruger siden ved at klikke på \"...\"" + tips-line13: "Alle filer tilknyttet en post gemmes på dit drev." + tips-line14: "Når du tilpasser layoutet på startsiden, kan du højreklikke på en widget for at ændre dens design." + tips-line17: "Du kan fremhæve en tekstbid ved at omgive den med ** **." + tips-line19: "Flere vinduer kan kobles af og vises uden for browseren." + tips-line20: "Procentdelen af kalender-widgeten viser procentdelen af den tid, der er gået." + tips-line21: "Du kan også bruge Misskey's API til at udvikle bots." + tips-line23: "Ai Chan Kawaii!" + tips-line24: "Misskey har været i drift siden 2014." + tips-line25: "Du kan modtage notifikationer, selv om Misskey ikke er åben, hvis du anvender en browser, der er i stand til at håndtere notifikationer." +common/views/pages/not-found.vue: + page-not-found: "Siden kan ikke findes" +common/views/pages/follow.vue: + signed-in-as: "Logget ind som {}" + following: "Følger" + follow: "Følg" + request-pending: "Ventende anmodninger om at blive følger" + follow-processing: "Anmoder om behandling" + follow-request: "Anmodning om at blive følger" +common/views/pages/follow-requests.vue: + received-follow-requests: "Anmodninger om at blive følgere" + accept: "Accepter" + reject: "Afvis" +desktop: + banner-crop-title: "Beskær den del, der vises som et banner" + banner: "Banner" + uploading-banner: "Overfør et nyt banner" + banner-updated: "Banner er overført med succes" + choose-banner: "Vælg banner" + avatar-crop-title: "Beskær den del, der vises som en avatar" + avatar: "Avatar" + uploading-avatar: "Overfør en ny avatar" + avatar-updated: "Avatar er overført med succes" + choose-avatar: "Vælg et billede til din avatar" + invalid-filetype: "Denne filtype kan ikke benyttes her" +desktop/views/components/activity.chart.vue: + total: "Sort ... Total" + notes: "Blå ... Noter" + replies: "Rød ... Svar" + renotes: "Grøn ... Gen-postering" +desktop/views/components/activity.vue: + title: "Aktivitet" + toggle: "Skift mellem visninger" +desktop/views/components/calendar.vue: + title: "{year} / {month}" + prev: "Forrige måned" + next: "Næste måned" + go: "Klik for at navigere" +desktop/views/components/choose-file-from-drive-window.vue: + chosen-files: "{count} fil(er) er valgt" + upload: "Overfør filer fra din enhed" + cancel: "Annuller" + ok: "OK" + choose-prompt: "Vælg filer" +desktop/views/components/choose-folder-from-drive-window.vue: + cancel: "Annuller" + ok: "OK" + choose-prompt: "Vælg en mappe" +desktop/views/components/crop-window.vue: + skip: "Afbryd beskæring" + cancel: "Annuller" + ok: "OK" +desktop/views/components/drive-window.vue: + used: "I brug" +desktop/views/components/drive.file.vue: + avatar: "Avatar" + banner: "Banner" + nsfw: "Upassende På Jobbet" + contextmenu: + rename: "Omdøb" + mark-as-sensitive: "Marker som 'følsom'" + unmark-as-sensitive: "Fjern markering som 'følsom'" + copy-url: "Kopier webadresse" + download: "Download" + else-files: "Andre" + set-as-avatar: "Vælg som avatar" + set-as-banner: "Vælg som banner" + open-in-app: "Åbn i app" + add-app: "Tilføj app" + rename-file: "Omdøb fil" + input-new-file-name: "Angiv nyt navn" + copied: "Kopieret" + copied-url-to-clipboard: "Webadressen er kopieret til klippebordet" +desktop/views/components/drive.folder.vue: + unable-to-process: "Handlingen kunne ikke gennemføres." + circular-reference-detected: "Destinationsmappen er en undermappe til den mappe, som du forsøger at flytte." + unhandled-error: "Ukendt fejl" + contextmenu: + move-to-this-folder: "Flyt til denne mappe" + show-in-new-window: "Åbn i nyt vindue" + rename: "Omdøb" + rename-folder: "Omdøb mappe" + input-new-folder-name: "Angiv nyt navn" +desktop/views/components/drive.vue: + search: "Søg" + empty-draghover: "Smid det her! Fordi du ved, at jeg er meget sød, ikke?" + empty-drive: "Dit medielager er tomt" + empty-drive-description: "Højreklik for at åbne menuen, eller træk og slip filer her for at overføre." + empty-folder: "Denne mappe er tom" + unable-to-process: "Handlingen kunne ikke gennemføres." + circular-reference-detected: "Destinationsmappen er en undermappe til den mappe, som du forsøger at flytte." + unhandled-error: "Ukendt fejl" + url-upload: "Overfør fra webadresse" + url-of-file: "Webadresse på filen, som du vil overføre" + url-upload-requested: "Der er anmodet om overførsel" + may-take-time: "Det kan tage noget tid at gennemføre overførslen." + create-folder: "Opret en mappe" + folder-name: "Mappenavn" + contextmenu: + create-folder: "Opret en mappe" + upload: "Overfør en fil" + url-upload: "Overfør fra webadresse" +desktop/views/components/media-video.vue: + sensitive: "Indholdet er Upassende På Jobbet" + click-to-show: "Klik for at vise" +desktop/views/components/followers-window.vue: + followers: "{}s følgere" +desktop/views/components/followers.vue: + empty: "Det ser ikke ud til, at du har nogen følgere." +desktop/views/components/following-window.vue: + following: "Følger {}" +desktop/views/components/following.vue: + empty: "Det ser ikke ud til, at du følger brugeren..." +desktop/views/components/game-window.vue: + game: "Reversi" +desktop/views/components/home.vue: + done: "Send" + add-widget: "Tilføj widget:" + add: "Tilføj" +desktop/views/input-dialog.vue: + cancel: "Annuller" + ok: "OK" +desktop/views/components/note-detail.vue: + private: "Posten er privat" + deleted: "Posten er blevet fjernet" + location: "Placering" + renote: "Gen-postering" + add-reaction: "Tilføj en reaktion" + undo-reaction: "Fortryd reaktion" +desktop/views/components/note.vue: + reply: "Svar" + renote: "Gen-postering" + add-reaction: "Tilføj en reaktion" + undo-reaction: "Fortryd reaktion" + detail: "Detaljer" + private: "Posten er privat" + deleted: "Posten er blevet fjernet" +desktop/views/components/notes.vue: + error: "Fejl ved indlæsning" + retry: "Prøv igen" +desktop/views/components/notifications.vue: + empty: "Der er ingen notifikationer!" +desktop/views/components/post-form.vue: + add-visible-user: "+Tilføj bruger" + attach-location-information: "Vedhæft oplysninger om placering" + hide-contents: "Skjul indhold" + reply-placeholder: "Svar på denne post" + quote-placeholder: "Citer denne post" + submit: "Post" + reply: "Svar" + renote: "Gen-postering" + posted: "Afsendt!" + replied: "Besvaret!" + reposted: "Gen-posteret!" + note-failed: "Fejl under afsendelse" + reply-failed: "Fejl under besvarelse" + renote-failed: "Fejl under gen-postering" + posting: "Afsender" + attach-media-from-local: "Vedhæft medie fra din enhed" + attach-media-from-drive: "Vedhæft medie fra dit drev" + insert-a-kao: "v('ω')v" + create-poll: "Opret en afstemning" + text-remain: "Der mangler {} tegn" + recent-tags: "Seneste" + local-only-message: "Denne post vil kun blive offentliggjort lokalt" + click-to-tagging: "Klik for at tagge" + visibility: "Synlighed" + geolocation-alert: "Din enhed giver ikke mulighed for at benytte placeringstjenester" + error: "Fejl" + enter-username: "Angiv brugernavn" + annotations: "Kommentarer til posten (frivillige)" +desktop/views/components/post-form-window.vue: + note: "Ny post" + reply: "Svar" + attaches: "{} medier er vedhæftet" + uploading-media: "Har overført {} medier" +desktop/views/components/progress-dialog.vue: + waiting: "Venter" +desktop/views/components/renote-form.vue: + quote: "Citat" + cancel: "Annuller" + renote: "Gen-postering" + renote-home: "Gen-postering (på startsiden)" + reposting: "Gen-posterer" + success: "Gen-posteret!" + failure: "Fejl under gen-postering" +desktop/views/components/renote-form-window.vue: + title: "Ønsker du at gen-postere den?" +desktop/views/pages/user-following-or-followers.vue: + following: "{user} følger" + followers: "{user}s følger" +desktop/views/components/settings.2fa.vue: + intro: "Du kan forbedre sikkerheden ved at indføre to-faktor godkendelse. I så fald vil du både få brug for en adgangskode til log ind og en fysisk enhed (f.eks. en smartphone), som er registreret på forhånd." + detail: "Mere info..." + url: "https://www.google.com/landing/2step/" + caution: "Hvis du mister adgangen til din registrerede enhed, vil du ikke længere være i stand til at koble dig på Misskey!" + register: "Registrer en enhed" + already-registered: "Denne enhed er allerede registreret" + unregister: "Af-registrer" + unregistered: "To-faktor godkendelse er de-aktiveret." + enter-password: "Angiv adgangskoden" + authenticator: "Allerførst skal du installere Google Authenticator på din enhed:" + howtoinstall: "Sådan installerer du" + token: "Nøgle" + scan: "Og derefter, scan QR koden:" + done: "Angiv den nøgle, som vises på din enhed:" + submit: "Send" + success: "Indstillingerne er gemt!" + failed: "Fejl ved opsætningen. Tjek at din nøgle er korrekt." + info: "Næste gang du logger på Misskey, vil den nøgle og adgangskode, der vises på din enhed, være obligatorisk." +common/views/components/media-image.vue: + sensitive: "Indholdet er Upassende På Jobbet" + click-to-show: "Klik for at vise" +common/views/components/api-settings.vue: + intro: "For at få adgang til API'en skal du sætte denne nøgle til at være søgeordet \"i\" i anmodningsparameteren." + caution: "Indtast ikke denne nøgle i nogen app, og fortæl heller ikke andre om den. I modsat fald kan din konto blive kompromitteret." + regeneration-of-token: "Hvis din nøgle er kompromitteret, kan du genskabe den." + regenerate-token: "Genskab nøgle" + token: "Nøgle:" + enter-password: "Angiv adgangskoden" + console: + title: "API konsol" + endpoint: "Endpoint" + parameter: "Parametre" + credential-info: "Denne konsol kræver ikke parameteren \"i\"." + send: "Send" + sending: "Sender" + response: "Svar" +desktop/views/components/settings.apps.vue: + no-apps: "Der er ingen tilsluttede apps" +common/views/components/drive-settings.vue: + max: "Kapacitet" + in-use: "I brug" + stats: "Statistik" +common/views/components/mute-and-block.vue: + mute-and-block: "Annuller / Bloker" + mute: "Annuller" + block: "Bloker" + no-muted-users: "Ingen annullerede brugere" + no-blocked-users: "Ingen blokerede brugere" + word-mute: "Ordfilter" + muted-words: "Frafiltrerede ord" + muted-words-description: "Mellemrum mellem ord vil blive håndteret, som om der står AND i mellem ordene i søgningen (dvs. alle ord skal være til stede). Linjeskift mellem ord vil føre til, at der søges med OR mellem ordene (dvs. kun det ene af ordene behøver være til stede)." + save: "Gem" +common/views/components/password-settings.vue: + reset: "Skift adgangskode" + enter-current-password: "Angiv den nuværende adgangskode" + enter-new-password: "Angiv den nye adgangskode" + enter-new-password-again: "Skriv den nye adgangskode igen" + not-match: "Du har skrevet den nye adgangskode på to forskellige måder" + changed: "Adgangskoden er ændret" + failed: "Fejl ved ændring af adgangskode" +common/views/components/post-form-attaches.vue: + attach-cancel: "Fjern den vedhæftede fil" + mark-as-sensitive: "Marker som 'følsom'" + unmark-as-sensitive: "Fjern markering som 'følsom'" +desktop/views/components/sub-note-content.vue: + private: "Posten er privat" + deleted: "Posten er blevet fjernet" + media-count: "{} medie(r) er vedhæftet" + poll: "Afstemninger" +desktop/views/components/settings.tags.vue: + title: "Tags" + query: "Søgning (valgfri)" + add: "Tilføj" + save: "Gem" +desktop/views/components/timeline.vue: + home: "Startside" + local: "Lokal" + hybrid: "Social" + global: "Global" + mentions: "Omtaler" + messages: "Direkte poster" + list: "Liste" + hashtag: "Hashtags" + add-tag-timeline: "Tilføj hashtag sky" + add-list: "Tilføj liste" + list-name: "Navn på liste" +desktop/views/components/ui.header.vue: + welcome-back: "Velkommen tilbage!" + adjective: "Hr." +desktop/views/components/ui.header.account.vue: + profile: "Din profil" + lists: "Lister" + groups: "Gruppe" + follow-requests: "Anmodninger om at blive følger" + admin: "Administration" +desktop/views/components/ui.header.nav.vue: + game: "Spil" +desktop/views/components/ui.header.notifications.vue: + title: "Notifikationer" +desktop/views/components/ui.header.post.vue: + post: "Ny post" +desktop/views/components/ui.header.search.vue: + placeholder: "Søg" +desktop/views/components/user-preview.vue: + notes: "Poster" + following: "Følger" + followers: "Følgere" +desktop/views/components/users-list.vue: + all: "Alle" + iknow: "Som du ved" + fetching: "Indlæser..." +desktop/views/components/users-list-item.vue: + followed: "Følger dig" +desktop/views/components/window.vue: + popout: "Pop op vindue" + close: "Luk" +admin/views/index.vue: + dashboard: "Kontrolpanel" + instance: "Instans" + emoji: "Emoji" + moderators: "Redaktører" + users: "Brugere" + federation: "Forening" + announcements: "Annonceringer" + abuse: "Misbrug" + queue: "Job kø" + logs: "Logs" + back-to-misskey: "Tilbage til Misskey" +admin/views/dashboard.vue: + dashboard: "Kontrolpanel" + accounts: "Konto" + notes: "Poster" + drive: "Drev" + instances: "Instans" + this-instance: "Denne instans" + federated: "Forenede" +admin/views/queue.vue: + title: "Kø" + remove-all-jobs: "Ryd alle job køer" +admin/views/abuse.vue: + title: "Misbrug" + target: "Mål" + reporter: "Kilde" + details: "Detaljer" + remove-report: "Slet" +admin/views/instance.vue: + instance: "Instans" + instance-name: "Instans navn" + instance-description: "Beskrivelse af instans" + host: "Vært" + icon-url: "Ikonets webadresse" + logo-url: "Logoets webadresse" + banner-url: "Banner billedets webadresse" + error-image-url: "Fejl billedets webadresse" + languages: "Sproget på denne instans" + languages-desc: "Du kan angive flere ved at adskille med mellemrum" + tos-url: "Webadresse for brugerbetingelser" + repository-url: "Webadresse for systemets kode-repo" + feedback-url: "Webadresse for tilbagemeldinger om systemet" + maintainer-config: "Administrator info" + maintainer-name: "Administrator navn" + maintainer-email: "Kontakt administrator" + advanced-config: "Andre indstillinger" + note-and-tl: "Poster og tidslinje" + drive-config: "Indstillinger for drev" + use-object-storage: "Brug af eksternt lager" + object-storage-base-url: "Webadresse" + object-storage-bucket: "Navn på eksternt lager" + object-storage-prefix: "Præfiks" + object-storage-endpoint: "Endpoint" + object-storage-region: "Region" + object-storage-port: "Port" + object-storage-access-key: "Genvejstast" + object-storage-secret-key: "Nøgle" + object-storage-use-ssl: "Brug SSL" + object-storage-s3-info: "Når du bruger Amazon S3 som eksternt lager, skal du bekræfte indstillingerne for {0} samt den dertil hørende \"Terminal\" og \"Region\"." + object-storage-s3-info-here: "Her" + object-storage-gcs-info: "Når du bruger Google Cloud Storage som eksternt lager, skal du indstille \"Terminal\" til storage.googleapis.com og forlade feltet \"Region\"." + cache-remote-files: "Cache eksterne filer" + cache-remote-files-desc: "Hvis du deaktiverer denne indstilling, kan du linke direkte uden at gemme eksterne filer her. Dermed sparer du plads på din egen server. Til gengæld bliver linksene til de eksterne filer usynlige for brugere, som har deaktiveret direkte links, fordi der ikke vises miniature-billeder. Alt i alt anbefales det at aktivere denne indstilling." + local-drive-capacity-mb: "Kapacitet på hver lokal brugers drev" + remote-drive-capacity-mb: "Kapacitet på hver ekstern brugers drev" + mb: "I megabytes (MB)" + recaptcha-config: "Indstillinger for verificering" + recaptcha-info: "Du skal bruge en verificeringsnøgle for at aktivere verificering. Nøglen fås på https://www.google.com/recaptcha/intro/" + enable-recaptcha: "Aktiver verificering" + recaptcha-site-key: "Nøgle for webstedet" + recaptcha-secret-key: "Verificeringsnøgle" + recaptcha-preview: "Før-visning" + hidden-tags: "Skjulte hashtags" + hidden-tags-info: "Brug linjeskift til at adskille de hashtags, som du vil skjule." + external-service-integration-config: "Opret forbindelse til eksterne tjenester" + twitter-integration-config: "Indstillinger for forbindelse til Twitter" + twitter-integration-info: "Webadressen for callback er sat til {url}." + enable-twitter-integration: "Aktiver forbindelsen til Twitter" + twitter-integration-consumer-key: "Brugernøgle" + twitter-integration-consumer-secret: "Brugerhemmelighed" + github-integration-config: "Indstillinger for forbindelse til GitHub" + github-integration-info: "Webadressen for callback er sat til {url}." + enable-github-integration: "Aktiver forbindelsen til GitHub" + github-integration-client-id: "Bruger ID" + github-integration-client-secret: "Brugerhemmelighed" + discord-integration-config: "Indstillinger for forbindelse til Discord" + discord-integration-info: "Webadressen for callback er sat til {url}." + enable-discord-integration: "Aktiver forbindelsen til Discord" + discord-integration-client-id: "Bruger ID" + discord-integration-client-secret: "Brugerhemmelighed" + proxy-account-config: "Indstillinger for proxy-konto" + proxy-account-info: "En proxy-konto kan følge en ekstern brugers aktivitet og hente data fra vedkommende. Når du tilføjer en ekstern bruger, som ikke følges af nogen på denne instans, til din liste, vil proxy-kontoen følge ham eller hende i stedet for dine følgere." + proxy-account-username: "Brugernavn for proxy konto" + proxy-account-username-desc: "Angiv brugernavnet på den konto, der bliver brugt som proxy." + proxy-account-warn: "Du er nødt til at oprette en konto med dette brugernavn først." + max-note-text-length: "Det højeste antal tegn pr. post" + disable-registration: "Deaktiver oprettelse af nye brugere" + disable-local-timeline: "Deaktiver den lokale tidslinje" + disable-global-timeline: "Deaktiver den globale tidslinje" + disabling-timelines-info: "Administratorer og redaktører kan stadig bruge en tidslinje, selv om den er deaktiveret." + enable-emoji-reaction: "Aktiver piktogram med reaktioner" + use-star-for-reaction-fallback: "Fald tilbage på en stjerne, hvis der kommer en ukendt reaktion." + invite: "Inviter" + save: "Gem" + saved: "Gemt" + pinned-users: "Fremhæv bruger" + pinned-users-info: "Angiv brugere, du vil fremhæve, adskilt af linjeskift." + email-config: "Indstillinger for email server" + email-config-info: "Bruges til bekræftelse af email adresse og nulstilling af adgangskode." + enable-email: "Aktiver levering af emails" + email: "Email adresse" + smtp-secure: "Brug implicit SSL / TLS til SMTP-forbindelsen" + smtp-secure-info: "Sluk STARTTLS, når du bruger den." + smtp-host: "SMTP vært" + smtp-port: "SMTP port" + smtp-auth: "Udfør autentifikation af SMTP" + smtp-user: "SMTP bruger" + smtp-pass: "SMTP adgangskode" + serviceworker-config: "ServiceWorker" + enable-serviceworker: "Aktiver ServiceWorker" + serviceworker-info: "Skal være aktiveret for at give push notifikationer." + vapid-publickey: "Offentlig nøgle til VAPID" + vapid-privatekey: "Privat nøgle til VAPID" + vapid-info: "Hvis du vil aktivere ServiceWorker, skal du generere en VAPID-nøgle. Medmindre du har angivet den globale node_modules placering andetsteds, skal du køre den som root:" +admin/views/charts.vue: + title: "Graf" + per-day: "pr. dag" + per-hour: "pr. time" + federation: "Forening" + notes: "Poster" + users: "Brugere" + drive: "Drev" + network: "Netværk" + charts: + federation-instances: "Sæt antallet af instanser op eller ned" + federation-instances-total: "Antal instanser i alt" + notes: "Fremgang eller tilbagegang i antal poster (lokale + eksterne)" + local-notes: "Fremgang eller tilbagegang i antal poster (lokale)" + remote-notes: "Fremgang eller tilbagegang i antal poster (eksterne)" + notes-total: "Antal poster i alt" + users: "Fremgang eller tilbagegang i antal brugere" + users-total: "Antal brugere i alt" + active-users: "Aktive brugere" + drive: "Fremgang eller tilbagegang i brugen af drevet" + drive-total: "Forbrugt plads på drevet i alt" + drive-files: "Fremgang eller tilbagegang i antal filer på drevet" + drive-files-total: "Antal filer i alt på drevet" + network-requests: "Netværkskald" + network-time: "Svartid" + network-usage: "Trafik" +admin/views/drive.vue: + operation: "Drift" + fileid-or-url: "Fil ID eller webadresse" + file-not-found: "Filen kunne ikke findes" + lookup: "Forespørgsel" + sort: + title: "Sorter efter" + createdAtAsc: "Alder - ældste først" + createdAtDesc: "Alder - seneste først" + sizeAsc: "Størrelse - mindste først" + sizeDesc: "Størrelse - største først" + origin: + title: "Oprindelse" + combined: "Lokal + ekstern" + local: "Lokal" + remote: "Ekstern" + delete: "Slet" + deleted: "Slettet" + mark-as-sensitive: "Marker som 'følsom'" + unmark-as-sensitive: "Fjern markering som 'følsom'" + marked-as-sensitive: "Marker som 'følsom'" + unmarked-as-sensitive: "Fjern markering som 'følsom'" +admin/views/users.vue: + operation: "Drift" + username-or-userid: "Brugernavn eller bruger ID" + user-not-found: "Bruger kunne ikke findes" + lookup: "Opslag" + reset-password: "Nulstil adgangskode" + reset-password-confirm: "Er du sikker på, at du vil nulstille din adgangskode?" + password-updated: "Adgangskoden er nu \"{password}\"" + suspend: "Udeluk" + suspend-confirm: "Er du sikker på, at du vil udelukke denne konto?" + suspended: "Udelukket med succes" + unsuspend: "Annuller udelukkelse" + unsuspend-confirm: "Er du sikker på, at du vil annullere udelukkelsen på denne konto?" + unsuspended: "Brugerens udelukkelse er annulleret med succes" + make-silence: "Gør tavs" + silence-confirm: "Vil du gøre brugeren tavs?" + unmake-silence: "Vil du annullere, at brugeren er gjort tavs?" + unsilence-confirm: "Er du sikker på, at du vil omgøre, at brugeren er gjort tavs?" + update-remote-user: "Opdater informationen om den eksterne bruger" + remote-user-updated: "Informationen om den eksterne bruger er nu blevet opdateret." + delete-all-files: "Slet alle filer" + delete-all-files-confirm: "Er du sikker på, at alle filerne skal slettes?" + users: + title: "Bruger" + sort: + title: "Sorter efter" + createdAtAsc: "Tidspunkt for oprettelse (ældste først)" + createdAtDesc: "Tidspunkt for oprettelse (seneste først)" + updatedAtAsc: "Tidspunkt for seneste opdatering (ældste først)" + updatedAtDesc: "Tidspunkt for seneste opdatering (seneste først)" + state: + title: "Sorter efter" + all: "Alle" + admin: "Administrator" + moderator: "Redaktører" + adminOrModerator: "Administrator/Redaktør" + silenced: "Brugeren er i forvejen gjort tavs" + suspended: "Udelukket" + origin: + title: "Oprindelse" + combined: "Lokal + Ekstern" + local: "Lokal" + remote: "Ekstern" + createdAt: "Oprettet den" + updatedAt: "Opdateret den" +admin/views/moderators.vue: + add-moderator: + title: "Opret redaktør" + add: "Opret" + added: "Redaktør er oprettet" + remove: "Fjern" + removed: "Redaktøren er nu fjernet" +admin/views/emoji.vue: + add-emoji: + title: "Tilføj emoji" + name: "Navn på emoji" + name-desc: "Du kan bruge tegnene fra a til z, 0 til 9 og \"_\"" + aliases: "Aliasser" + aliases-desc: "Du kan tilføje flere med mellemrum imellem" + url: "Webadresse for billede" + add: "Tilføj" + info: "Vi anbefaler PNG billeder under 50 KB." + added: "Emoji er tilføjet" + emojis: + title: "Emojis" + update: "Opdatering" + remove: "Slet" + updated: "Opdateret" + remove-emoji: + are-you-sure: "Er du sikker på, at du vil slette \"$1\"?" + removed: "Slettet" +admin/views/announcements.vue: + announcements: "Annonceringer" + save: "Gem" + remove: "Slet" + add: "Tilføj" + title: "Titel" + text: "Indhold" + saved: "Gemt" + _remove: + are-you-sure: "Er du sikker på, at du vil slette \"$1\"?" + removed: "Slettet" +admin/views/hashtags.vue: + hided-tags: "Skjulte tags" +admin/views/federation.vue: + instance: "Instans" + host: "Vært" + notes: "Poster" + users: "Brugere" + following: "Følger" + followers: "Følgere" + caught-at: "Oprettet den" + status: "Status" + latest-request-sent-at: "Tidspunkt for afsendelse af seneste forespørgsel" + latest-request-received-at: "Seneste forespørgsel blev modtaget den" + remove-all-following: "Annuller alle følgere" + remove-all-following-info: "Annuller alle konti fra værten {host}. Udføres når værten ikke længere eksisterer." + delete-all-files: "Slet alle filer" + block: "Bloker" + marked-as-closed: "Marker som lukket" + lookup: "Opslag" + instances: "Forenede" + instance-not-registered: "Instansen kan ikke findes" + sort: "Sorter efter" + sorts: + caughtAtAsc: "Tidspunkt for oprettelse (ældste først)" + caughtAtDesc: "Tidspunkt for oprettelse (seneste først)" + lastCommunicatedAtAsc: "Tidspunktet for den tidligere interaktion" + lastCommunicatedAtDesc: "Tidspunktet for den senere interaktion" + notesAsc: "Poster (mindste først)" + notesDesc: "Poster (største først)" + usersAsc: "Antal brugere (færrest først)" + usersDesc: "Antal brugere (flest først)" + followingAsc: "Antal følgere (færrest først)" + followingDesc: "Antal følgere (flest først)" + followersAsc: "Antal følgere (færrest først)" + followersDesc: "Antal følgere (flest først)" + driveUsageAsc: "Diskforbrug (mindst først)" + driveUsageDesc: "Diskforbrug (størst først)" + driveFilesAsc: "Antal filer på drev (færrest først)" + driveFilesDesc: "Antal filer på drev (flest først)" + state: "Sorter efter" + states: + all: "Alle" + blocked: "Bloker" + not-responding: "Uden svar" + marked-as-closed: "Markeret som lukkede" + result-is-truncated: "Vis de øverste {n} elementer." + charts: "Graf" + chart-srcs: + requests: "Netværkskald" + users: "Fremgang eller tilbagegang i antal brugere" + users-total: "Antal brugere i alt" + notes: "Sæt antallet af poster op eller ned" + notes-total: "Antal poster i alt" + ff: "Stigning i antal følgere" + ff-total: "Det samlede antal følgere" + drive-usage: "Fremgang eller tilbagegang i brugen af drevet" + drive-usage-total: "Forbrugt plads på drevet i alt" + drive-files: "Sæt antallet af filer på drevet op eller ned" + drive-files-total: "Samlet antal filer på drev" + chart-spans: + hour: "pr. time" + day: "pr. dag" + blocked-hosts: "Bloker" + blocked-hosts-info: "Beskrivelse af værterne du vil blokere, adskilt af linjeskift." +desktop/views/pages/welcome.vue: + about: "Mere info..." + timeline: "Tidslinje" + announcements: "Annonceringer" + photos: "Seneste billeder" + powered-by-misskey: "Leveret af Misskey." + info: "Information" +desktop/views/pages/drive.vue: + title: "Misskey drev" +desktop/views/pages/note.vue: + prev: "Forrige post" + next: "Næste post" +desktop/views/pages/selectdrive.vue: + title: "Vælg fil(er)" + ok: "OK" + cancel: "Annuller" + upload: "Overfør filer fra din enhed" +desktop/views/pages/search.vue: + not-available: "Søgefunktionen er deaktiverede i indstillingerne for denne instans." + not-found: "Ingen poster fundet for \"{q}\"" +desktop/views/pages/tag.vue: + no-posts-found: "Ingen poster fundet med \"{q}\"." +desktop/views/pages/user-list.users.vue: + users: "Bruger" + add-user: "Tilføj en bruger" + username: "Brugernavn" +desktop/views/pages/user/user.followers-you-know.vue: + title: "Følgere som du måske kender" + loading: "Henter" + no-users: "Ingen følgere du kender" +desktop/views/pages/user/user.friends.vue: + title: "Hyppige omtaler" + loading: "Henter" + no-users: "Ingen hyppige omtaler" +desktop/views/pages/user/user.photos.vue: + title: "Billeder" + loading: "Henter" + no-photos: "Ingen billeder" +desktop/views/pages/user/user.header.vue: + posts: "Poster" + following: "Følger" + followers: "Følgere" + is-bot: "Denne konto er en bot" + no-description: "Ingen brugerbeskrivelse" + years-old: "{age} år" + year: "-" + month: "Man" + day: "Søn" + follows-you: "Følger dig" +desktop/views/pages/user/user.timeline.vue: + default: "Poster" + with-replies: "Poster og svar" + with-media: "Medier" + my-posts: "Mine poster" +desktop/views/widgets/notifications.vue: + title: "Notifikationer" +desktop/views/widgets/polls.vue: + title: "Afstemninger" + refresh: "Genopfrisk" + nothing: "Der er ingen notifikationer!" +desktop/views/widgets/post-form.vue: + title: "Post" + note: "Post" + something-happened: "Kunne af uvisse årsager ikke postes" +desktop/views/widgets/profile.vue: + update-banner: "Klik for at redigere dit banner" + update-avatar: "Klik for at redigere din avatar" +desktop/views/widgets/trends.vue: + title: "Tendenser" + refresh: "Genopfrisk" + nothing: "Der er ingen notifikationer!" +desktop/views/widgets/users.vue: + title: "Anbefalede brugere" + refresh: "Genopfrisk" + no-one: "Hvad synes du?" +mobile/views/components/drive.vue: + used: "I brug" + folder-count: "Mappe(r)" + count-separator: "," + file-count: "Fil(er)" + nothing-in-drive: "Der er ikke gemt noget" + folder-is-empty: "Denne mappe er tom" + folder-name: "Mappenavn" + here-is-root: "Lige nu befinder du dig i bunden - ikke i en mappe." + url-prompt: "Webadresse på filen, som du vil overføre" + uploading: "Overførslen er sat i gang. Det kan tage et stykke tid." + folder-name-cannot-empty: "Et mappe er nødt til at have et navn" +mobile/views/components/drive-file-chooser.vue: + select-file: "Vælg fil" +mobile/views/components/drive-folder-chooser.vue: + select-folder: "Vælg mappe" +mobile/views/components/drive.file.vue: + nsfw: "Indholdet er Upassende På Jobbet" +mobile/views/components/drive.file-detail.vue: + download: "Download" + rename: "Omdøb" + move: "Flyt" + hash: "Hashtag (md5)" + exif: "EXIF" + nsfw: "Indholdet er Upassende På Jobbet" + mark-as-sensitive: "Marker som 'følsom'" + unmark-as-sensitive: "Fjern markering som 'følsom'" +mobile/views/components/media-video.vue: + sensitive: "Indholdet er Upassende På Jobbet" + click-to-show: "Klik for at vise" +common/views/components/follow-button.vue: + following: "Følger" + follow: "Følger" + request-pending: "Ventende anmodninger om at blive følger" + follow-processing: "Anmoder om behandling" + follow-request: "Anmodninger om at blive følger" +mobile/views/components/note.vue: + private: "Posten er privat" + deleted: "Posten er blevet fjernet" + location: "Placering" +mobile/views/components/note-detail.vue: + reply: "Svar" + reaction: "Reaktion" + private: "Posten er privat" + deleted: "Posten er blevet fjernet" + location: "Placering" +mobile/views/components/note-preview.vue: + admin: "admin" + bot: "bot" + cat: "cat" +mobile/views/components/note-sub.vue: + admin: "admin" + bot: "bot" + cat: "cat" +mobile/views/components/notifications.vue: + empty: "Der er ingen notifikationer!" +mobile/views/components/post-form.vue: + add-visible-user: "Tilføj en bruger" + submit: "Post" + reply: "Svar" + renote: "Gen-postering" + quote-placeholder: "Citer denne post... (valgfrit)" + reply-placeholder: "Svar på denne post" + cw-placeholder: "Kommentar til indholdet (valgfrit)" + geolocation-alert: "Din enhed giver ikke mulighed for at benytte placeringstjenester" + error: "Fejl" + username-prompt: "Angiv brugernavn" +mobile/views/components/sub-note-content.vue: + private: "Posten er privat" + deleted: "Posten er blevet fjernet" + media-count: "{} medie(r) er vedhæftet" + poll: "Afstemninger" +mobile/views/components/ui.header.vue: + welcome-back: "Velkommen tilbage!" + adjective: "Hr." +mobile/views/components/ui.nav.vue: + timeline: "Tidslinje" + notifications: "Notifikationer" + follow-requests: "Anmodninger om at blive følger" + search: "Søg" + user-lists: "Lister" + user-groups: "Gruppe" + widgets: "Widgets" + game: "Spil" + admin: "Administration" + about: "Om" +mobile/views/pages/drive.vue: + contextmenu: + upload: "Overfør en fil" + url-upload: "Overfør fil fra webadresse" + create-folder: "Opret en mappe" + rename-folder: "Omdøb mappe" + move-folder: "Flyt denne mappe" + delete-folder: "Slet denne mappe" +mobile/views/pages/signup.vue: + lets-start: "Din konto er nu klar! 📦" +mobile/views/pages/followers.vue: + followers-of: "{name}s følgere" +mobile/views/pages/following.vue: + following-of: "{name}s følger" +mobile/views/pages/home.vue: + home: "Startside" + local: "Lokal" + hybrid: "Social" + global: "Global" + mentions: "Omtaler" + messages: "Direkte poster" +mobile/views/pages/tag.vue: + no-posts-found: "Ingen poster fundet med \"{q}\"." +mobile/views/pages/widgets.vue: + dashboard: "Kontrolpanel" + widgets-hints: "Du kan tilføje / slette / flytte rundt på widgets. For at flytte widgeten skal du trække “三”. Klik på \"×\" for at slette widgeten. Nogle widgets kan tilpasses direkte ved at klikke på dem." + add-widget: "Tilføj" + customization-tips: "Tips om tilpasning" +mobile/views/pages/widgets/activity.vue: + activity: "Aktivitet" +mobile/views/pages/share.vue: + share-with: "Del med {name}" +mobile/views/pages/note.vue: + title: "Post" + prev: "Forrige post" + next: "Næste post" +mobile/views/pages/games/reversi.vue: + reversi: "Reversi" +mobile/views/pages/search.vue: + search: "Søg" + not-found: "Ingen poster fundet for \"{q}\"" +mobile/views/pages/selectdrive.vue: + select-file: "Vælg fil(er)" +mobile/views/pages/settings.vue: + signed-in-as: "Logget ind som {}" +mobile/views/pages/user.vue: + follows-you: "Følger dig" + following: "Følger" + followers: "Følgere" + notes: "Poster" + overview: "Oversigt" + timeline: "Tidslinje" + media: "Medier" + years-old: "{age} år" +mobile/views/pages/user/home.vue: + recent-notes: "Seneste poster" + images: "Billeder" + activity: "Aktivitet" + keywords: "Nøgleord" + domains: "Domæner" + frequently-replied-users: "Hyppige omtaler" + followers-you-know: "Følgere som du måske kender" + last-used-at: "Senest aktiv:" +mobile/views/pages/user/home.photos.vue: + no-photos: "Ingen billeder" +deck: + widgets: "Widgets" + home: "Startside" + local: "Lokal" + hybrid: "Social" + hashtag: "Hashtags" + global: "Global" + mentions: "Omtaler" + direct: "Direkte poster" + notifications: "Notifikationer" + list: "Lister" + select-list: "Vælg liste" + swap-left: "Flyt til venstre" + swap-right: "Flyt til højre" + swap-up: "Flyt op" + swap-down: "Flyt ned" + remove: "Fjern" + add-column: "Tilføj en kolonne" + rename: "Omdøb" + stack-left: "Fold sammen til venstre" + pop-right: "Parker til højre" + disabled-timeline: + title: "Tidslinjen er deaktiveret" + description: "Tidslinjen er deaktiveret af serverens administrator" +deck/deck.tl-column.vue: + is-media-only: "Poster med medieindhold" + edit: "Valgmuligheder" +deck/deck.user-column.vue: + follows-you: "Følger dig" + posts: "Poster" + following: "Følger" + followers: "Følgere" + images: "Billeder" + activity: "Aktivitet" + timeline: "Tidslinje" + pinned-notes: "Fremhævede poster" +docs: + edit-this-page-on-github: "Har du fundet en fejl, eller ønsker at bidrage til dokumentationen?" + edit-this-page-on-github-link: "Rediger denne side på GitHub" +dev/views/index.vue: + manage-apps: "Administrer apps" +dev/views/apps.vue: + manage-apps: "Administrer apps" + create-app: "Opret app" + app-missing: "Ingen apps" +dev/views/new-app.vue: + new-app: "Ny app" + new-app-info: "Du kan også oprette en app fra API'en. (app / opret)" + create-app: "Opretter app" + app-name: "Navn på app" + app-name-placeholder: "F.eks. Misskey for iOS" +pages: + like: "Synes om" + title: "Titel" + blocks: + section: "Sektion" + image: "Billeder" + button: "Knap" + if: "Hvis" + _if: + variable: "Variabel" + post: "Post formular" + _post: + text: "Indhold" + textInput: "Indtastet tekst" + _textInput: + name: "Variabel navn" + text: "Titel" + default: "Standard værdi" + textareaInput: "Tekst med flere linjer" + _textareaInput: + name: "Variabel navn" + text: "Titel" + default: "Standard værdi" + numberInput: "Indtastet tal" + _numberInput: + name: "Variabel navn" + text: "Titel" + default: "Standard værdi" + switch: "Kontakt" + _switch: + name: "Variabel navn" + text: "Titel" + default: "Standard værdi" + counter: "Tæller" + _counter: + name: "Variabel navn" + text: "Titel" + inc: "Forhøj tallet med en" + _button: + text: "Titel" + action: "Handling når der trykkes på knappen" + _action: + dialog: "Vis dialogboks" + _dialog: + content: "Indhold" + resetRandom: "Nulstil tilfældigt tal" + script: + categories: + flow: "Kontrol" + logical: "Logisk handling" + operation: "Eksekver" + comparison: "Sammenlign" + random: "Tilfældig" + value: "Værdi" + fn: "Funktion" + text: "Tekstmanipulation" + convert: "Konverter" + list: "Lister" + blocks: + text: "Text" + multiLineText: "Tekst med linjeskift" + textList: "Punktliste" + _textList: + info: "Brug linjeskift til at adskille linjerne" + strLen: "Længde af tekststrengen" + _strLen: + arg1: "Tekst" + strPick: "Udtræk et tegn" + _strPick: + arg1: "Text" + arg2: "Tegnets position" + strReplace: "Erstat tekststreng(e)" + _strReplace: + arg1: "Tekst" + arg2: "Før søg-og-erstat" + arg3: "Efter søg-og-erstat" + strReverse: "Vend teksten rundt" + _strReverse: + arg1: "Tekst" + join: "Sammenflet tekst" + _join: + arg1: "Lister" + arg2: "Skilletegn" + add: "+ Plus" + _add: + arg1: "A" + arg2: "B" + subtract: "- Minus" + _subtract: + arg1: "A" + arg2: "B" + multiply: "× Multiplicer" + _multiply: + arg1: "A" + arg2: "B" + divide: "÷ Divider" + _divide: + arg1: "A" + arg2: "B" + remind: "÷ Tomo" + _remind: + arg1: "A" + arg2: "B" + eq: "A og B er ens" + _eq: + arg1: "A" + arg2: "B" + notEq: "A og B er forskellige" + _notEq: + arg1: "A" + arg2: "B" + and: "A og B" + _and: + arg1: "A" + arg2: "B" + or: "A eller B" + _or: + arg1: "A" + arg2: "B" + lt: "A er mindre end B" + _lt: + arg1: "A" + arg2: "B" + gt: "A er større end B" + _gt: + arg1: "A" + arg2: "B" + ltEq: "A er mindre end eller lig med B" + _ltEq: + arg1: "A" + arg2: "B" + gtEq: "A er større end eller lig med B" + _gtEq: + arg1: "A" + arg2: "B" + if: "Branch" + _if: + arg1: "Hvis" + arg2: "så" + arg3: "ellers" + not: "negation" + _not: + arg1: "negation" + random: "Tilfældig" + _random: + arg1: "Sandsynlighed" + rannum: "Tilfældigt tal" + _rannum: + arg1: "Minimum" + arg2: "Maximum" + randomPick: "Vælg tilfældig fra listen" + _randomPick: + arg1: "Lister" + dailyRandom: "Tilfældigt (pr. bruger pr. dag)" + _dailyRandom: + arg1: "Sandsynlighed" + dailyRannum: "Tilfældigt antal (pr. bruger pr. dag)" + _dailyRannum: + arg1: "Minimum" + arg2: "Maximum" + dailyRandomPick: "Tilfældigt valgt fra listen (pr. bruger pr. dag)" + _dailyRandomPick: + arg1: "Lister" + seedRandom: "Tilfældig (frø)" + _seedRandom: + arg1: "Frø" + arg2: "Sandsynlighed" + seedRannum: "Tilfældigt antal (frø)" + _seedRannum: + arg1: "Frø" + arg2: "Minimum" + arg3: "Maximum" + seedRandomPick: "Vælg tilfældigt (frø) fra listen" + _seedRandomPick: + arg1: "Frø" + arg2: "Lister" + DRPWPM: "Tilfældigt valgt fra sandsynlighedslisten (pr. bruger pr. dag)" + _DRPWPM: + arg1: "Punktliste" + pick: "Vælg fra listen" + _pick: + arg1: "Lister" + arg2: "Position" + number: "Tal" + stringToNumber: "Tekst til tal" + _stringToNumber: + arg1: "Tekst" + numberToString: "Tal til tekst" + _numberToString: + arg1: "Tal" + splitStrByLine: "Del teksten op i linjer" + _splitStrByLine: + arg1: "Tekst" + ref: "Variabel" + fn: "Funktion" + _fn: + slots: "Slot-funktion" + slots-info: "Brug linjeskift til at adskille slot-funktionerne" + arg1: "Output" + for: "Gentag" + _for: + arg1: "Antal gange" + arg2: "Proces" + typeError: "Slot-funktionen {slot} skal gennemløbe i \"{expect}\", men den faktiske indtastning er \"{actual}\"!" + thereIsEmptySlot: "Slot-funktionen {slot} er tom!" + types: + string: "Tekst" + number: "Tal" + boolean: "Sand/falsk" + array: "Lister" + stringArray: "Punktliste" + emptySlot: "Tomt slot" + enviromentVariables: "Miljø variabel" + pageVariables: "Side element" + argVariables: "Input slot" diff --git a/locales/de-DE.yml b/locales/de-DE.yml index b615a893a2..e9ea042450 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -281,9 +281,7 @@ common/views/components/messaging.vue: you: "Du" no-history: "Keine Chronik" common/views/components/messaging-room.vue: - empty: "Keine Unterhaltungen" no-history: "Keine weitere Chronik vorhanden" - resize-form: "Ziehen um die Größe zu verändern" new-message: "Neue Nachricht" common/views/components/messaging-room.form.vue: input-message-here: "Nachricht hier eingeben" @@ -386,6 +384,12 @@ common/views/components/profile-editor.vue: export-targets: user-lists: "Listen" enter-password: "Bitte Passwort eingeben" +common/views/components/user-group-editor.vue: + invite: "Einladen" +common/views/components/user-lists.vue: + user-lists: "Listen" +common/views/components/user-groups.vue: + invites: "Einladen" common/views/widgets/broadcast.vue: fetching: "Laden" no-broadcasts: "Keine Broadcasts" @@ -583,8 +587,6 @@ desktop/views/components/ui.header.post.vue: post: "Einen neuen Post erstellen" desktop/views/components/ui.header.search.vue: placeholder: "Suchen" -desktop/views/components/user-lists-window.vue: - title: "Listen" desktop/views/components/users-list.vue: fetching: "Lade…" admin/views/dashboard.vue: @@ -592,6 +594,7 @@ admin/views/dashboard.vue: admin/views/abuse.vue: remove-report: "Löschen" admin/views/instance.vue: + recaptcha-preview: "Vorschau" invite: "Einladen" save: "Speichern" admin/views/charts.vue: @@ -677,8 +680,6 @@ mobile/views/pages/drive.vue: contextmenu: upload: "Eine Datei hochladen" create-folder: "Ein Verzeichnis erstellen" -mobile/views/pages/user-lists.vue: - title: "Listen" mobile/views/pages/home.vue: home: "Home" local: "Lokal" @@ -732,6 +733,7 @@ dev/views/new-app.vue: authority-desc: "Nur die hier eingetragenen Berechtigungen, werden per API zur Verfügung stehen." authority-warning: "Dies kann auch nach dem erstellen der Anwendung geändert werden, allerdings werden dann alle bisher generierten Token ungültig." pages: + like: "Gefällt mir" blocks: post: "\"Neuer Beitrag\"-Formular" script: diff --git a/locales/en-US.yml b/locales/en-US.yml index 530ce6ed80..303115d9db 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -253,6 +253,7 @@ common: my-token-regenerated: "Your token has been regenerated, so you will be signed out." hide-password: "Hide Password" show-password: "Show Password" + enter-username: "Enter user name" do-not-use-in-production: "This is a development build. Do not use in production." user-suspended: "This user has been suspended." is-remote-user: "The information about this user may not be entirely complete." @@ -448,18 +449,15 @@ common/views/components/messaging.vue: search-user: "Find a user" you: "You" no-history: "Without history" + user: "User" common/views/components/messaging-room.vue: - empty: "No conversations" no-history: "There is no further history" - resize-form: "Drag to resize" new-message: "New message" - only-one-file-attached: "Only ONE file can be attached to a message." common/views/components/messaging-room.form.vue: input-message-here: "Enter message here" send: "Send" attach-from-local: "Attach files from your device" attach-from-drive: "Attach files from your Drive" - only-one-file-attached: "Only one file can be attached to the message." common/views/components/messaging-room.message.vue: is-read: "Read" deleted: "This message has been deleted" @@ -472,6 +470,7 @@ common/views/components/nav.vue: repository: "Repository" develop: "Developers" feedback: "Feedback" + tos: "Terms Of Service" common/views/components/note-menu.vue: mention: "Mention" detail: "Details" @@ -584,6 +583,8 @@ common/views/components/signup.vue: password-matched: "OK" password-not-matched: "Doesn't match" recaptcha: "Verification" + agree-to: "Accept {0}." + tos: "Terms Of Service" create: "Create an Account" some-error: "An attempt at account creation has failed for some reason. Please try again." common/views/components/special-message.vue: @@ -691,9 +692,16 @@ common/views/components/user-list-editor.vue: remove-user: "Remove from this list" delete-are-you-sure: "Delete list \"$1\"?" deleted: "Deleted successfully" + add-user: "Add a user" +common/views/components/user-group-editor.vue: + deleted: "Deleted" + invite: "Invite" common/views/components/user-lists.vue: + user-lists: "Lists" create-list: "Create a list" list-name: "List name" +common/views/components/user-groups.vue: + invites: "Invite" common/views/widgets/broadcast.vue: fetching: "Checking" no-broadcasts: "No announcements" @@ -755,6 +763,8 @@ common/views/pages/follow.vue: request-pending: "Pending follow request" follow-processing: "Processing follow" follow-request: "Follow request" +common/views/pages/follow-requests.vue: + received-follow-requests: "Follow requests" desktop: banner-crop-title: "Crop the part that appears as a banner" banner: "Banner" @@ -1036,12 +1046,6 @@ desktop/views/components/ui.header.post.vue: post: "Compose new Post" desktop/views/components/ui.header.search.vue: placeholder: "Search" -desktop/views/components/received-follow-requests-window.vue: - title: "Follow requests" - accept: "Accept" - reject: "Reject" -desktop/views/components/user-lists-window.vue: - title: "User lists" desktop/views/components/user-preview.vue: notes: "Posts" following: "Following" @@ -1089,14 +1093,21 @@ admin/views/instance.vue: instance-name: "Instance name" instance-description: "Instance description" host: "Host" + icon-url: "URL of the icon" + logo-url: "URL of the logo" banner-url: "Banner image URL" error-image-url: "Error image URL" languages: "Language of this instance" languages-desc: "You can add more than one, separated by spaces." + tos-url: "Terms of Service URL" + repository-url: "Repository URL" + feedback-url: "URL for feedback" maintainer-config: "Administrator information" maintainer-name: "Administrator name" maintainer-email: "Contact Administrator" + advanced-config: "Other settings" drive-config: "Drive settings" + object-storage-base-url: "URL" object-storage-endpoint: "Endpoint" cache-remote-files: "Cache remote files" cache-remote-files-desc: "Without this parameter, all remote files are linked to their host server directly. This will be an effective solution to save your server storage, however make remote files invisible to users who set direct-link disabled, since no thumbnail will be generated, increase traffic. It is recommended that this parameter set enabled." @@ -1106,8 +1117,7 @@ admin/views/instance.vue: recaptcha-config: "the reCAPTCHA settings" recaptcha-info: "reCAPTCHA token is required. Please get it on https://www.google.com/recaptcha/intro/" enable-recaptcha: "enable reCAPTCHA" - recaptcha-site-key: "reCAPTCHA site key" - recaptcha-secret-key: "reCAPTCHA secret key" + recaptcha-preview: "Preview" twitter-integration-config: "Settings of connecting to Twitter" twitter-integration-info: "The callback URL is set on {url}." enable-twitter-integration: "Enable connection to Twitter" @@ -1514,8 +1524,6 @@ mobile/views/pages/drive.vue: rename-folder: "Rename folder" move-folder: "Move this folder" delete-folder: "Delete this folder" -mobile/views/pages/user-lists.vue: - title: "Lists" mobile/views/pages/signup.vue: lets-start: "Your account is now ready! 📦" mobile/views/pages/followers.vue: @@ -1540,10 +1548,6 @@ mobile/views/pages/widgets/activity.vue: activity: "Activity" mobile/views/pages/share.vue: share-with: "Share on {name}" -mobile/views/pages/received-follow-requests.vue: - title: "Follow requests" - accept: "Accept" - reject: "Reject" mobile/views/pages/note.vue: title: "Post" prev: "Previous note" @@ -1649,6 +1653,7 @@ pages: edit-this-page: "Edit this page" view-source: "View Source" view-page: "View page" + like: "Like" inspector: "Inspector" content: "Page block" variables: "Variables" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index f6e0b9f8be..1938d10e89 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -395,17 +395,13 @@ common/views/components/messaging.vue: you: "Tu" no-history: "Sin historial" common/views/components/messaging-room.vue: - empty: "Sin conversaciones" no-history: "El historial se ha acabado" - resize-form: "Arrastra para redimensionar" new-message: "Nuevo mensaje" - only-one-file-attached: "Un único archivo se puede conectar al mensaje" common/views/components/messaging-room.form.vue: input-message-here: "Escribe el mensaje aquí" send: "Enviar" attach-from-local: "Adjunta ficheros desde tu PC" attach-from-drive: "Adjunta ficheros desde tu disco" - only-one-file-attached: "Un único archivo se puede conectar al mensaje" common/views/components/messaging-room.message.vue: is-read: "Leer" deleted: "El mensaje se ha borrado" @@ -587,8 +583,13 @@ common/views/components/user-list-editor.vue: rename: "Cambiar el nombre de la lista" delete: "Eliminar lista" remove-user: "Eliminar de la lista" +common/views/components/user-group-editor.vue: + invite: "Invitar" common/views/components/user-lists.vue: + user-lists: "Listas" list-name: "Nombre de lista" +common/views/components/user-groups.vue: + invites: "Invitar" common/views/widgets/broadcast.vue: fetching: "Recuperando" no-broadcasts: "Sin emisión" @@ -647,6 +648,8 @@ common/views/pages/follow.vue: request-pending: "Solicitud pendiente" follow-processing: "Solicitud en proceso" follow-request: "Solicitar suscripción" +common/views/pages/follow-requests.vue: + received-follow-requests: "Solicitudes de seguimiento" desktop: banner-crop-title: "Corta la parte que aparece como un banner" banner: "Banner" @@ -890,12 +893,6 @@ desktop/views/components/ui.header.post.vue: post: "Crear una publicación" desktop/views/components/ui.header.search.vue: placeholder: "Buscar" -desktop/views/components/received-follow-requests-window.vue: - title: "Solicitudes de seguidores" - accept: "Aceptar" - reject: "Rechazar" -desktop/views/components/user-lists-window.vue: - title: "Listas de usuario" desktop/views/components/user-preview.vue: notes: "Publicaciones" following: "Sigue" @@ -944,7 +941,7 @@ admin/views/instance.vue: maintainer-email: "Contactar con el administrador" drive-config: "Ajustes del Drive" cache-remote-files: "Mantener en cache los archivos remotos" - recaptcha-secret-key: "clave secreta reCAPTCHA" + recaptcha-preview: "Vista previa" invite: "Invitar" save: "Guardar" saved: "Guardado" @@ -1079,8 +1076,6 @@ mobile/views/pages/drive.vue: contextmenu: upload: "Subir fichero" create-folder: "Crear una carpeta" -mobile/views/pages/user-lists.vue: - title: "Listas" mobile/views/pages/home.vue: home: "Inicio" local: "Local" @@ -1091,10 +1086,6 @@ mobile/views/pages/widgets.vue: customization-tips: "Consejos de personalización" mobile/views/pages/widgets/activity.vue: activity: "Actividad" -mobile/views/pages/received-follow-requests.vue: - title: "Solicitudes de seguimiento" - accept: "Aceptar" - reject: "Rechazar" mobile/views/pages/games/reversi.vue: reversi: "Reversi" mobile/views/pages/search.vue: @@ -1114,6 +1105,7 @@ deck: deck/deck.user-column.vue: activity: "Actividad" pages: + like: "Me gusta" blocks: post: "Formulario" script: diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 29346854d4..81b370495d 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -243,6 +243,7 @@ common: my-token-regenerated: "Votre jeton vient d’être généré, vous allez maintenant être déconnecté." hide-password: "Masquer le mot de passe" show-password: "Afficher le mot de passe" + enter-username: "Saisir un nom d'utilisateur" do-not-use-in-production: "Il s’agit d’une version de développement. Ne pas utiliser dans un environnement de production." user-suspended: "Cet·te utilisateur·trice a été suspendu·e" is-remote-user: "Les informations à propos de ce compte peuvent être incomplètes." @@ -436,18 +437,15 @@ common/views/components/messaging.vue: search-user: "Trouver un utilisateur" you: "Vous" no-history: "Pas d'historique" + user: "Utilisateur·rice·s" common/views/components/messaging-room.vue: - empty: "Pas de conversations" no-history: "Aucun historique" - resize-form: "Faites glisser pour redimensionner" new-message: "Nouveau message" - only-one-file-attached: "Un seul fichier peut être joint au message" common/views/components/messaging-room.form.vue: input-message-here: "Tapez ici votre message" send: "Envoyer" attach-from-local: "Joindre un fichier depuis votre ordinateur" attach-from-drive: "Joindre un fichier depuis votre Drive" - only-one-file-attached: "Un seul fichier uniquement peut être joint au message" common/views/components/messaging-room.message.vue: is-read: "Lu" deleted: "Ce message a été supprimé" @@ -675,9 +673,20 @@ common/views/components/user-list-editor.vue: remove-user: "Retirer de cette liste" delete-are-you-sure: "Voulez-vous vraiment supprimer la liste « $1 » ?" deleted: "Supprimé" + add-user: "Ajouter un utilisateur" +common/views/components/user-group-editor.vue: + rename: "Renommer le groupe" + delete: "Supprimer le groupe" + deleted: "Supprimé" + invite: "Inviter" common/views/components/user-lists.vue: + user-lists: "Listes" create-list: "Créer une liste" list-name: "Nom de la liste" +common/views/components/user-groups.vue: + create-group: "Créer un groupe" + invites: "Inviter" + reject-invite: "Refuser" common/views/widgets/broadcast.vue: fetching: "Récupération" no-broadcasts: "Aucune annonce" @@ -738,6 +747,10 @@ common/views/pages/follow.vue: request-pending: "Demande d’abonnement en attente" follow-processing: "Demande en attente" follow-request: "Demande d’abonnement" +common/views/pages/follow-requests.vue: + received-follow-requests: "Demandes d’abonnement" + accept: "Accepter" + reject: "Refuser" desktop: banner-crop-title: "Découpez la partie qui apparaîtra comme bannière" banner: "Bannière" @@ -1009,6 +1022,7 @@ desktop/views/components/ui.header.vue: desktop/views/components/ui.header.account.vue: profile: "Votre profil" lists: "Listes" + groups: "Groupes" follow-requests: "Demandes d’abonnement" admin: "Admin" desktop/views/components/ui.header.nav.vue: @@ -1019,12 +1033,6 @@ desktop/views/components/ui.header.post.vue: post: "Rédiger une nouvelle publication" desktop/views/components/ui.header.search.vue: placeholder: "Chercher" -desktop/views/components/received-follow-requests-window.vue: - title: "Demandes d’abonnement" - accept: "Accepter" - reject: "Refuser" -desktop/views/components/user-lists-window.vue: - title: "Listes de l'utilisateur" desktop/views/components/user-preview.vue: notes: "Publications" following: "Abonné à" @@ -1083,8 +1091,12 @@ admin/views/instance.vue: maintainer-config: "Informations de l’administrateur" maintainer-name: "Nom de l’administrateur" maintainer-email: "Contact administratif" + advanced-config: "Autres réglages" drive-config: "Paramètres du lecteur" + object-storage-base-url: "URL" object-storage-endpoint: "Point de terminaison" + object-storage-access-key: "Clé d'accès" + object-storage-secret-key: "Clé secrète" cache-remote-files: "Mettre en cache des fichiers distants" local-drive-capacity-mb: "Volume du lecteur par utilisateur" remote-drive-capacity-mb: "Volume du lecteur par utilisateur distant" @@ -1092,8 +1104,8 @@ admin/views/instance.vue: recaptcha-config: "Paramètres de reCAPTCHA" recaptcha-info: "Si activé, un jeton reCAPTCHA est requis. Vous pouvez en obtenir un sur https://www.google.com/recaptcha/intro/" enable-recaptcha: "Activation de reCAPTCHA" - recaptcha-site-key: "Clé reCAPTCHA du site" - recaptcha-secret-key: "Clé secrète reCAPTCHA" + recaptcha-secret-key: "Clé secrète" + recaptcha-preview: "Prévisualisation" twitter-integration-config: "Paramètres de connexion à Twitter" twitter-integration-info: "L'URL de callback est {url}." enable-twitter-integration: "Activer la connexion à Twitter" @@ -1483,8 +1495,6 @@ mobile/views/pages/drive.vue: rename-folder: "Renommer le dossier" move-folder: "Déplacer ce dossier" delete-folder: "Supprimer ce dossier" -mobile/views/pages/user-lists.vue: - title: "Listes" mobile/views/pages/signup.vue: lets-start: "Votre compte est prêt ! 📦" mobile/views/pages/followers.vue: @@ -1508,10 +1518,6 @@ mobile/views/pages/widgets/activity.vue: activity: "Activité" mobile/views/pages/share.vue: share-with: "Partager avec {name}" -mobile/views/pages/received-follow-requests.vue: - title: "Demandes d’abonnement" - accept: "Accepter" - reject: "Refuser" mobile/views/pages/note.vue: title: "Publication" prev: "Note précédente" @@ -1608,6 +1614,7 @@ pages: edit-this-page: "Éditer cette page" view-source: "Afficher la source" view-page: "Afficher la page" + like: "Bien" inspector: "Inspecteur" content: "Bloc de page" variables: "Variables" diff --git a/locales/index.js b/locales/index.js index ceb90236a6..b71625dbc6 100644 --- a/locales/index.js +++ b/locales/index.js @@ -15,6 +15,7 @@ const merge = (...args) => args.reduce((a, c) => ({ const languages = [ 'cs-CZ', + 'da-DK', 'de-DE', 'en-US', 'es-ES', diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index 1610cad2d2..8c322fe523 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -121,6 +121,7 @@ common: update-available-title: "更新があんで" update-available: "Misskeyの新しいバージョンがあんで({newer}。現在{current}をつこてるわ)。ページを再度読み込みしたると更新が適用されるわ。" my-token-regenerated: "あんさんのトークンが更新されたらしいわ。すまんがとりあえずサインアウトすんで。" + enter-username: "ユーザー名を入力してや" do-not-use-in-production: "開発ビルドや。本番環境で使わんといて!知らんで!" is-remote-post: "この投稿情報はコピーです。" view-on-remote: "ちゃんとした情報見せてや!" @@ -294,18 +295,15 @@ common/views/components/messaging.vue: search-user: "ユーザーを探す" you: "あんさん" no-history: "履歴はあらへんで" + user: "ユーザー" common/views/components/messaging-room.vue: - empty: "このユーザーと話したことはあらへんで" no-history: "これより過去の履歴はあらへんで" - resize-form: "ドラッグしてフォームの広さを調整" new-message: "新しいメッセージがあるで" - only-one-file-attached: "メッセージに添付できんのはひとつのファイルのみやで" common/views/components/messaging-room.form.vue: input-message-here: "ここにメッセージ書いてや" send: "送信" attach-from-local: "PCからファイルを添付する" attach-from-drive: "ドライブからファイルを添付する" - only-one-file-attached: "メッセージに添付できんのはひとつのファイルのみやで" common/views/components/messaging-room.message.vue: is-read: "既読" deleted: "このメッセージは削除されたわ" @@ -476,8 +474,14 @@ common/views/components/profile-editor.vue: enter-password: "パスワードを入れてや" common/views/components/user-list-editor.vue: users: "ユーザー" + add-user: "ユーザー増やす" +common/views/components/user-group-editor.vue: + invite: "招待" common/views/components/user-lists.vue: + user-lists: "リスト" list-name: "リスト名" +common/views/components/user-groups.vue: + invites: "招待" common/views/widgets/broadcast.vue: fetching: "見てみるわ…" no-broadcasts: "お知らせはあらへんで" @@ -536,6 +540,8 @@ common/views/pages/follow.vue: request-pending: "フォローの許し待っとる" follow-processing: "今フォロー処理やっとる‥" follow-request: "フォロー許してくれや!言うてみる" +common/views/pages/follow-requests.vue: + received-follow-requests: "フォロー許してくれや!言うてみる" desktop: banner-crop-title: "どこバナーとして出す?" banner: "バナー" @@ -809,12 +815,6 @@ desktop/views/components/ui.header.post.vue: post: "新規投稿" desktop/views/components/ui.header.search.vue: placeholder: "検索" -desktop/views/components/received-follow-requests-window.vue: - title: "フォロー許してくれや!言うてみる" - accept: "許す" - reject: "許さん" -desktop/views/components/user-lists-window.vue: - title: "リスト" desktop/views/components/user-preview.vue: notes: "投稿" following: "フォロー" @@ -869,8 +869,7 @@ admin/views/instance.vue: recaptcha-config: "reCAPTCHAの設定" recaptcha-info: "reCAPTCHAを有効にするにはreCAPTCHAトークンが要るで。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してな。" enable-recaptcha: "reCAPTCHAを有効にする" - recaptcha-site-key: "reCAPTCHA site key" - recaptcha-secret-key: "reCAPTCHA secret key" + recaptcha-preview: "試してみる" twitter-integration-config: "Twitter連携の設定" twitter-integration-info: "コールバックURLは {url} に設定してや。" enable-twitter-integration: "Twitter連携を有効にする" @@ -1148,8 +1147,6 @@ mobile/views/pages/drive.vue: contextmenu: upload: "ファイル上げる" create-folder: "フォルダー作る" -mobile/views/pages/user-lists.vue: - title: "リスト" mobile/views/pages/signup.vue: lets-start: "📦 始めようや" mobile/views/pages/followers.vue: @@ -1172,10 +1169,6 @@ mobile/views/pages/widgets/activity.vue: activity: "やっとること" mobile/views/pages/share.vue: share-with: "{name}で共有" -mobile/views/pages/received-follow-requests.vue: - title: "フォロー許してくれや!" - accept: "許す" - reject: "許さん" mobile/views/pages/note.vue: title: "投稿" prev: "前のやつ" @@ -1260,6 +1253,7 @@ dev/views/new-app.vue: authority-desc: "ここにチェックした機能しかAPIからアクセスできひんから気ぃつけてな" authority-warning: "アプリ作った後でも変えれるけど、新しいやつ追加したらそん時関連付いてるユーザーキーは全部ほかされるで。" pages: + like: "ええやん" blocks: image: "画像" post: "投稿フォーム" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 4a122c7d23..562a3d19e5 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -253,6 +253,7 @@ common: my-token-regenerated: "당신의 토큰이 업데이트되었으므로 로그아웃합니다." hide-password: "비밀번호 숨기기" show-password: "비밀번호 표시" + enter-username: "사용자명을 입력하여 주십시오" do-not-use-in-production: "이것은 개발 빌드입니다. 프로덕션 환경에서 사용하지 마십시오." user-suspended: "이 사용자는 정지된 상태입니다." is-remote-user: "이 사용자 정보는 정확하지 않을 수 있습니다." @@ -448,18 +449,23 @@ common/views/components/messaging.vue: search-user: "사용자 찾기" you: "당신" no-history: "기록이 없습니다" + user: "사용자" + group: "그룹" + start-with-user: "사용자와 대화 시작" + start-with-group: "그룹과 대화 시작" + select-group: "그룹을 선택하여 주십시오" common/views/components/messaging-room.vue: - empty: "이 사용자와 대화한 적이 없습니다" + not-talked-user: "이 사용자와의 대화가 없습니다" + not-talked-group: "이 그룹과의 대화가 없습니다" no-history: "이것보다 과거의 기록이 없습니다" - resize-form: "드래그하여 폼의 크기 조절" new-message: "새 메시지가 있습니다" - only-one-file-attached: "메시지에는 하나의 파일만 첨부할 수 있습니다" + only-one-file-attached: "메시지에 첨부할 수 있는 파일은 하나까지입니다" common/views/components/messaging-room.form.vue: input-message-here: "여기에 메시지를 입력하세요" send: "전송" attach-from-local: "PC에서 파일 첨부" attach-from-drive: "드라이브에서 파일 첨부" - only-one-file-attached: "메시지에는 하나의 파일만 첨부할 수 있습니다" + only-one-file-attached: "메시지에 첨부할 수 있는 파일은 하나까지입니다" common/views/components/messaging-room.message.vue: is-read: "읽음" deleted: "이 메시지는 삭제되었습니다" @@ -585,6 +591,7 @@ common/views/components/signup.vue: password-matched: "확인되었습니다" password-not-matched: "일치하지 않습니다" recaptcha: "자동 가입 방지" + agree-to: "{0}에 동의합니다." tos: "이용 약관" create: "계정 만들기" some-error: "알 수 없는 이유로 계정 만들기에 실패했습니다. 다시 한번 시도해 주세요." @@ -693,9 +700,29 @@ common/views/components/user-list-editor.vue: remove-user: "이 리스트에서 제거" delete-are-you-sure: "리스트 \"$1\"을 삭제하시겠습니까?" deleted: "삭제하였습니다" + add-user: "사용자 추가" +common/views/components/user-group-editor.vue: + users: "멤버" + rename: "그룹명을 변경" + delete: "그룹을 삭제" + remove-user: "이 그룹에서 삭제" + delete-are-you-sure: "그룹 「$1」을 삭제하시겠습니까?" + deleted: "삭제하였습니다" + invite: "초대" + invited: "초대를 보냈습니다" common/views/components/user-lists.vue: + user-lists: "리스트" create-list: "리스트 만들기" list-name: "리스트 이름" +common/views/components/user-groups.vue: + user-groups: "그룹" + create-group: "그룹 만들기" + group-name: "그룹명" + owned-groups: "자신의 그룹" + joined-groups: "참여중인 그룹" + invites: "초대" + accept-invite: "참여" + reject-invite: "거부" common/views/widgets/broadcast.vue: fetching: "확인중" no-broadcasts: "공지사항이 없습니다" @@ -757,6 +784,10 @@ common/views/pages/follow.vue: request-pending: "팔로우 허가 대기중" follow-processing: "팔로우 처리중" follow-request: "팔로우 요청" +common/views/pages/follow-requests.vue: + received-follow-requests: "팔로우 요청" + accept: "승인" + reject: "거부" desktop: banner-crop-title: "배너로 표시할 부분을 선택" banner: "배너" @@ -1028,6 +1059,7 @@ desktop/views/components/ui.header.vue: desktop/views/components/ui.header.account.vue: profile: "프로필" lists: "리스트" + groups: "그룹" follow-requests: "팔로우 요청" admin: "관리" desktop/views/components/ui.header.nav.vue: @@ -1038,12 +1070,6 @@ desktop/views/components/ui.header.post.vue: post: "새 글" desktop/views/components/ui.header.search.vue: placeholder: "검색" -desktop/views/components/received-follow-requests-window.vue: - title: "팔로우 요청" - accept: "승인" - reject: "거부" -desktop/views/components/user-lists-window.vue: - title: "리스트" desktop/views/components/user-preview.vue: notes: "글" following: "팔로잉" @@ -1103,8 +1129,22 @@ admin/views/instance.vue: maintainer-config: "관리자 정보" maintainer-name: "관리자 이름" maintainer-email: "관리자 연락처" + advanced-config: "그 외 설정" + note-and-tl: "글과 타임라인" drive-config: "드라이브 설정" + use-object-storage: "오브젝트 스토리지를 사용" + object-storage-base-url: "URL" + object-storage-bucket: "버킷 이름" + object-storage-prefix: "프리픽스" object-storage-endpoint: "엔드포인트" + object-storage-region: "리전" + object-storage-port: "포트" + object-storage-access-key: "액세스 키" + object-storage-secret-key: "시크릿 키" + object-storage-use-ssl: "SSL 사용" + object-storage-s3-info: "Amazon S3를 오브젝트 스토리지로 사용하는 경우의 「엔드포인트」와 「리전」의 설정값에 대해서는 {0}을 확인하여 주십시오." + object-storage-s3-info-here: "이곳" + object-storage-gcs-info: "Google Cloud Storage를 오브젝트 스토리지로 사용하는 경우, 「엔드포인트」는 storage.googleapis.com 으로 설정하고, 「리전」 란은 비웁니다." cache-remote-files: "원격 파일을 캐시" cache-remote-files-desc: "이 설정을 해지하면 원격 파일을 캐시하지 않고 해당 파일을 직접 링크하게 됩니다. 그에 따라 서버의 저장 공간을 절약할 수 있지만, 프라이버시 설정에서 직접 링크를 무효로 설정한 사용자에게는 파일이 보이지 않거나, 썸네일이 생성되지 않기 때문에 통신량이 증가합니다. 일반적으로 이 설정을 ON으로 두는 것을 추천합니다." local-drive-capacity-mb: "로컬 사용자 한 명당 드라이브 용량" @@ -1113,8 +1153,12 @@ admin/views/instance.vue: recaptcha-config: "reCAPCHA 설정" recaptcha-info: "reCAPCHA를 사용하도록 설정하는 경우 reCAPCHA 토큰을 확보해야 합니다. https://www.google.com/recaptcha/intro/ 에 접속하여 토큰을 가져와주십시오." enable-recaptcha: "reCAPCHA 활성화" - recaptcha-site-key: "reCAPTCHA site key" - recaptcha-secret-key: "reCAPTCHA secret key" + recaptcha-site-key: "사이트 키" + recaptcha-secret-key: "시크릿 키" + recaptcha-preview: "미리보기" + hidden-tags: "숨긴 해시태그" + hidden-tags-info: "집계에서 제외할 해시태그를 줄 바꿈으로 구분하여 기술합니다." + external-service-integration-config: "외부 서비스 연계" twitter-integration-config: "Twitter 연동 설정" twitter-integration-info: "콜백 URL은 {url} 로 설정됩니다." enable-twitter-integration: "트위터 연동 활성화" @@ -1146,6 +1190,7 @@ admin/views/instance.vue: save: "저장" saved: "저장하였습니다" pinned-users: "고정된 사용자" + pinned-users-info: "고정해두고 싶은 사용자를 줄바꿈으로 구분하여 기술합니다." email-config: "메일 서버 설정" email-config-info: "메일 주소 확인 혹은 비밀번호 재설정에 사용 됩니다." enable-email: "메일 발신 활성화" @@ -1231,6 +1276,8 @@ admin/views/users.vue: unsilence-confirm: "침묵 해제하시겠습니까?" update-remote-user: "원격 사용자 정보 갱신" remote-user-updated: "원격 사용자 정보를 갱신하였습니다" + delete-all-files: "모든 파일 삭제" + delete-all-files-confirm: "모든 파일을 삭제하시겠습니까?" users: title: "사용자" sort: @@ -1306,6 +1353,7 @@ admin/views/federation.vue: latest-request-received-at: "마지막으로 요청을 받은 시간" remove-all-following: "모든 팔로잉 해제" remove-all-following-info: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 인스턴스가 더 이상 존재하지 않게 된 경우 등에 실행하십시오." + delete-all-files: "파일을 모두 삭제" block: "차단" marked-as-closed: "폐쇄된 것으로 표시" lookup: "조회" @@ -1353,6 +1401,7 @@ admin/views/federation.vue: hour: "1시간마다" day: "1일마다" blocked-hosts: "차단" + blocked-hosts-info: "차단할 호스트를 줄바꿈으로 구분하여 기술합니다." desktop/views/pages/welcome.vue: about: "자세히..." timeline: "타임라인" @@ -1509,6 +1558,7 @@ mobile/views/components/ui.nav.vue: follow-requests: "팔로우 요청" search: "검색" user-lists: "리스트" + user-groups: "그룹" widgets: "위젯" game: "게임" admin: "관리" @@ -1521,8 +1571,6 @@ mobile/views/pages/drive.vue: rename-folder: "폴더 이름 바꾸기" move-folder: "이 폴더를 이동" delete-folder: "이 폴더를 삭제" -mobile/views/pages/user-lists.vue: - title: "리스트" mobile/views/pages/signup.vue: lets-start: "📦 이제 시작해도 됩니다" mobile/views/pages/followers.vue: @@ -1547,10 +1595,6 @@ mobile/views/pages/widgets/activity.vue: activity: "활동" mobile/views/pages/share.vue: share-with: "{name}(으)로 공유" -mobile/views/pages/received-follow-requests.vue: - title: "팔로우 요청" - accept: "승인" - reject: "거부" mobile/views/pages/note.vue: title: "글" prev: "이전 글" @@ -1656,9 +1700,17 @@ pages: edit-this-page: "이 페이지를 편집" view-source: "소스 보기" view-page: "페이지 보기" + like: "좋아요" + unlike: "좋아요 해제" + liked-pages: "좋아요한 페이지" + my-pages: "내 페이지" inspector: "인스펙터" content: "페이지 블록" variables: "변수" + variables-info: "변수를 사용하면 동적인 페이지를 만들 수 있습니다. 텍스트에 { 변수명 }을 적으면 그 위치에 변수의 값을 집어넣습니다. 예를 들자면 Hello { thing } world! 라는 텍스트가 있을 때, 변수(thing)의 값이 ai인 경우 텍스트는 Hello ai world!가 됩니다." + variables-info2: "변수의 평가(값을 산출해내는 것)는 위에서부터 아래로 진행되므로 어떤 변수의 내부에서 자신보다 아래에 있는 변수를 참조할 수는 없습니다. 예를 들자면 위에서부터 A, B, C의 3개의 변수가 정의되어 있을 때, C의 내부에 A나 B를 참조할 수는 있지만, A의 내부에서 B나 C를 참조할 수는 없습니다." + variables-info3: "사용자로부터 입력을 받으려면, 페이지에 「사용자 입력」 블록을 삽입하고 「변수명」에 입력받은 값을 저장하고 싶은 변수명을 설정합니다 (변수는 자동으로 생성됩니다). 그 변수를 사용하여 사용자 입력에 따라 동작할 수 있습니다." + variables-info4: "함수를 사용하면 반복되는 작업을 손쉽게 처리할 수 있습니다. 함수를 만드시려면 「함수」 타입의 변수를 만듭니다. 함수에서 슬롯(인수)를 받도록 설정하면, 함수를 사용할 때 슬롯에 입력된 값을 함수 안에서 변수로써 이용할 수 있게 됩니다. 또한, AiScript 표준에는 함수를 인수로 받는 함수(고차함수)도 존재합니다. 함수를 미리 정의하는 것 외에, 이와 같은 고차함수를 즉석으로 설정할 수 있습니다." more-details: "자세한 설명" title: "제목" url: "페이지 URL" @@ -1739,6 +1791,8 @@ pages: text: "텍스트" multiLineText: "텍스트 (여러줄)" textList: "텍스트 목록" + _textList: + info: "각각을 줄 바꿈으로 구분해주십시오" strLen: "텍스트의 길이" _strLen: arg1: "텍스트" @@ -1828,40 +1882,57 @@ pages: randomPick: "목록에서 임의로 선택" _randomPick: arg1: "리스트" + dailyRandom: "랜덤 (하루동안 결과 유지)" _dailyRandom: arg1: "확률" + dailyRannum: "난수 (하루동안 결과 유지)" _dailyRannum: arg1: "최소" arg2: "최대" + dailyRandomPick: "목록에서 임의로 선택 (하루동안 결과 유지)" _dailyRandomPick: arg1: "리스트" + seedRandom: "무작위 (시드)" _seedRandom: arg1: "시드" arg2: "확률" + seedRannum: "난수 (시드)" _seedRannum: arg1: "시드" arg2: "최소" arg3: "최대" + seedRandomPick: "목록에서 무작위로 선택 (시드)" _seedRandomPick: arg1: "시드" arg2: "리스트" + DRPWPM: "확률형 목록에서 임의로 선택 (하루동안 결과 유지)" _DRPWPM: arg1: "텍스트 목록" + pick: "목록에서 선택" _pick: arg1: "리스트" + arg2: "위치" number: "수치" stringToNumber: "텍스트를 수치로" _stringToNumber: arg1: "텍스트" + numberToString: "수치를 텍스트로" _numberToString: arg1: "수치" + splitStrByLine: "텍스트를 행 단위로 분할" _splitStrByLine: arg1: "텍스트" ref: "변수" fn: "함수" _fn: slots: "슬롯" + slots-info: "각 슬롯을 줄 바꿈으로 구분하여 주십시오" arg1: "출력" + for: "반복" + _for: + arg1: "횟수" + arg2: "처리" + typeError: "슬롯 {slot}은 \"{expect}\"를 사용할 수 있지만 \"{actual}이 들어있습니다!" thereIsEmptySlot: "슬롯 {slot}이(가) 비었습니다!" types: string: "텍스트" diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml index cfff13f715..fd7a27eb92 100644 --- a/locales/nl-NL.yml +++ b/locales/nl-NL.yml @@ -104,10 +104,9 @@ common/views/components/messaging.vue: search-user: "Gebruiker zoeken" you: "Jij" no-history: "Geen geschiedenis" + user: "Gebruiker" common/views/components/messaging-room.vue: - empty: "Geen gesprekken" no-history: "Er is geen verdere geschiedenis" - resize-form: "Versleep om grootte te wijzigen" new-message: "Nieuw bericht" common/views/components/messaging-room.form.vue: input-message-here: "Voer hier je bericht in" @@ -202,6 +201,9 @@ common/views/components/profile-editor.vue: enter-password: "Voer het wachtwoord in" common/views/components/user-list-editor.vue: users: "Gebruiker" + add-user: "Gebruiker toevoegen" +common/views/components/user-lists.vue: + user-lists: "Lijsten" common/views/widgets/broadcast.vue: fetching: "Bezig met ophalen" no-broadcasts: "Geen uitzendingen" @@ -401,8 +403,6 @@ desktop/views/components/ui.header.post.vue: post: "Nieuw bericht opstellen" desktop/views/components/ui.header.search.vue: placeholder: "Zoeken" -desktop/views/components/user-lists-window.vue: - title: "Lijsten" desktop/views/components/user-preview.vue: notes: "Berichten" following: "Volgend" @@ -558,8 +558,6 @@ mobile/views/pages/drive.vue: contextmenu: upload: "Bestand uploaden" create-folder: "Map creëren" -mobile/views/pages/user-lists.vue: - title: "Lijsten" mobile/views/pages/home.vue: home: "Startpagina" local: "Lokaal" @@ -618,6 +616,7 @@ docs: edit-this-page-on-github: "Heb je een fout ontdekt of wil je bijdragen aan de documentatie? " edit-this-page-on-github-link: "Bewerk deze pagina op GitHub!" pages: + like: "Leuk" blocks: image: "Afbeeldingen" script: diff --git a/locales/no-NO.yml b/locales/no-NO.yml index 6e5ff52828..7206c771db 100644 --- a/locales/no-NO.yml +++ b/locales/no-NO.yml @@ -130,6 +130,7 @@ common/views/components/cw-button.vue: hide: "Skjul" common/views/components/messaging.vue: you: "Du" + user: "Bruker" common/views/components/messaging-room.form.vue: send: "Send" common/views/components/messaging-room.message.vue: @@ -192,8 +193,13 @@ common/views/components/profile-editor.vue: user-lists: "Lister" common/views/components/user-list-editor.vue: users: "Bruker" +common/views/components/user-group-editor.vue: + invite: "Inviter" common/views/components/user-lists.vue: + user-lists: "Lister" list-name: "Liste navn" +common/views/components/user-groups.vue: + invites: "Inviter" common/views/widgets/broadcast.vue: fetching: "Henter" next: "Neste" @@ -307,11 +313,6 @@ desktop/views/components/ui.header.post.vue: post: "Skriv nytt innlegg" desktop/views/components/ui.header.search.vue: placeholder: "Søk" -desktop/views/components/received-follow-requests-window.vue: - accept: "Godta" - reject: "Avslå" -desktop/views/components/user-lists-window.vue: - title: "Brukerlister" desktop/views/components/user-preview.vue: notes: "Innlegg" following: "Følger" @@ -448,17 +449,12 @@ mobile/views/components/ui.nav.vue: user-lists: "Lister" game: "Spill" admin: "Admin" -mobile/views/pages/user-lists.vue: - title: "Lister" mobile/views/pages/home.vue: home: "Hjem" local: "Lokalt" global: "Globalt" mobile/views/pages/widgets.vue: add-widget: "Legg til" -mobile/views/pages/received-follow-requests.vue: - accept: "Godta" - reject: "Avslå" mobile/views/pages/note.vue: title: "Innlegg" prev: "Forrige innlegg" @@ -490,6 +486,7 @@ deck/deck.user-column.vue: followers: "Følgere" images: "Bilder" pages: + like: "Lik" blocks: image: "Bilder" script: diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 827cc4fdf5..08a5cfeb41 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -168,6 +168,7 @@ common: my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany." hide-password: "Ukryj hasło" show-password: "Pokaż hasło" + enter-username: "Wprowadź nazwę użytkownika" view-on-remote: "Dla dopełnienia, zobacz to zdalnie." renoted-by: "{user} udostępnił(a)" error: @@ -323,18 +324,15 @@ common/views/components/messaging.vue: search-user: "Znajdź użytkownika" you: "Ty" no-history: "Brak historii" + user: "Użytkownicy" common/views/components/messaging-room.vue: - empty: "Brak konwersacji" no-history: "Brak dalszej historii" - resize-form: "Przeciągnij aby zmienić rozmiar" new-message: "Nowa wiadomość" - only-one-file-attached: "Tylko JEDEN plik może zostać dołączony do wiadomości" common/views/components/messaging-room.form.vue: input-message-here: "Wprowadź wiadomość tutaj" send: "Wyślij" attach-from-local: "Załącz pliki z komputera" attach-from-drive: "Załącz pliki z dysku" - only-one-file-attached: "Tylko jeden plik może zostać dołączony do wiadomości" common/views/components/messaging-room.message.vue: is-read: "Przeczytano" deleted: "Wiadomość została usunięta" @@ -511,8 +509,15 @@ common/views/components/user-list-editor.vue: remove-user: "Usuń z tej listy" delete-are-you-sure: "Usunąć listę \"$1\"?" deleted: "Usunięto" + add-user: "Dodaj użytkownika" +common/views/components/user-group-editor.vue: + deleted: "Usunięto" + invite: "Zaproś" common/views/components/user-lists.vue: + user-lists: "Listy" list-name: "Nazwa listy" +common/views/components/user-groups.vue: + invites: "Zaproś" common/views/widgets/broadcast.vue: fetching: "Sprawdzanie" no-broadcasts: "Brak transmisji" @@ -568,6 +573,8 @@ common/views/pages/follow.vue: request-pending: "Oczekiwanie na pozwolenie" follow-processing: "Przetwarzanie śledzenia" follow-request: "Poproś o śledzenie" +common/views/pages/follow-requests.vue: + received-follow-requests: "Prośby o śledzenie" desktop: banner: "Baner" uploading-banner: "Wysyłanie baneru" @@ -829,12 +836,6 @@ desktop/views/components/ui.header.post.vue: post: "Utwórz nowy wpis" desktop/views/components/ui.header.search.vue: placeholder: "Szukaj" -desktop/views/components/received-follow-requests-window.vue: - title: "Prośby o śledzenie" - accept: "Zatwierdź" - reject: "Odmów" -desktop/views/components/user-lists-window.vue: - title: "Listy" desktop/views/components/user-preview.vue: notes: "Wpisy" following: "Śledzeni" @@ -866,6 +867,7 @@ admin/views/abuse.vue: remove-report: "Usuń" admin/views/instance.vue: instance: "Instancja" + recaptcha-preview: "Pokaż podgląd" github-integration-client-id: "Client ID" github-integration-client-secret: "Client Secret" discord-integration-client-id: "Client ID" @@ -1102,8 +1104,6 @@ mobile/views/pages/drive.vue: contextmenu: upload: "Wyślij plik" create-folder: "Utwórz katalog" -mobile/views/pages/user-lists.vue: - title: "Listy" mobile/views/pages/signup.vue: lets-start: "Rozpocznijmy! 📦" mobile/views/pages/home.vue: @@ -1118,10 +1118,6 @@ mobile/views/pages/widgets.vue: customization-tips: "Wskazówki o dostosowywaniu" mobile/views/pages/widgets/activity.vue: activity: "Aktywność" -mobile/views/pages/received-follow-requests.vue: - title: "Prośby o śledzenie" - accept: "Zatwierdź" - reject: "Odmów" mobile/views/pages/note.vue: title: "Wpis" prev: "Poprzedni wpis" @@ -1196,6 +1192,7 @@ dev/views/new-app.vue: app-name: "Nazwa Aplikacji" authority: "Uprawnienia" pages: + like: "Lubię" title: "Tytuł" blocks: image: "Zdjęcia" diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml index 576f367d9e..f2fd2a540d 100644 --- a/locales/pt-PT.yml +++ b/locales/pt-PT.yml @@ -160,6 +160,10 @@ common/views/components/profile-editor.vue: name: "Nome" export-targets: following-list: "Seguindo" +common/views/components/user-group-editor.vue: + invite: "Convidar" +common/views/components/user-groups.vue: + invites: "Convidar" common/views/widgets/posts-monitor.vue: title: "Gráfico de publicações" common/views/widgets/memo.vue: @@ -270,6 +274,7 @@ docs: dev/views/index.vue: manage-apps: "Gerenciar aplicativos" pages: + like: "Curtir" blocks: image: "Imagens" post: "Formulário de publicação" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 4a181aa639..002e3bfab9 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -147,6 +147,7 @@ mobile/views/components/sub-note-content.vue: mobile/views/pages/widgets.vue: customization-tips: "Советы по настройке" pages: + like: "Нравится" script: categories: random: "Случайно" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 07bec73541..8752bf3347 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -253,6 +253,7 @@ common: my-token-regenerated: "您的 Token 已被重置, 您将自动登出。" hide-password: "隐藏密码" show-password: "显示密码" + enter-username: "请输入用户名" do-not-use-in-production: "这是一个开发者测试版. 请勿在生产环境中使用." user-suspended: "该用户已被冻结。" is-remote-user: "此用户信息可能不准确。" @@ -448,18 +449,22 @@ common/views/components/messaging.vue: search-user: "查找用户" you: "您" no-history: "没有历史记录" + user: "用户" + group: "群组" + start-with-user: "开始用户聊天" + start-with-group: "开始群组聊天" common/views/components/messaging-room.vue: - empty: "没有对话" + not-talked-user: "没有用户的会话记录" + not-talked-group: "没有群组的会话记录" no-history: "没有更多的历史记录" - resize-form: "拖动以调整大小" new-message: "新信息" - only-one-file-attached: "只有一个附件可以附加到消息中。" + only-one-file-attached: "只能添加一个附件" common/views/components/messaging-room.form.vue: input-message-here: "在此键入信息" send: "发送" attach-from-local: "从电脑中添加文件" attach-from-drive: "从网盘中添加文件" - only-one-file-attached: "在信息中只允许添加一个附件" + only-one-file-attached: "只能添加一个附件" common/views/components/messaging-room.message.vue: is-read: "已读" deleted: "此消息已被删除" @@ -694,9 +699,25 @@ common/views/components/user-list-editor.vue: remove-user: "从此列表中删除" delete-are-you-sure: "删除列表“$1”?" deleted: "已删除" + add-user: "添加用户" +common/views/components/user-group-editor.vue: + users: "成员" + rename: "更改群组名" + delete: "删除群组" + remove-user: "从本群组中删除" + delete-are-you-sure: "确定要删除「$1」组?" + deleted: "已删除" + invite: "邀请" common/views/components/user-lists.vue: + user-lists: "列表" create-list: "创建列表" list-name: "列表名称" +common/views/components/user-groups.vue: + user-groups: "群组" + create-group: "创建群组" + group-name: "群组名" + invites: "邀请" + reject-invite: "拒绝" common/views/widgets/broadcast.vue: fetching: "确认中" no-broadcasts: "没有公告" @@ -758,6 +779,10 @@ common/views/pages/follow.vue: request-pending: "发送关注申请" follow-processing: "申请处理中" follow-request: "关注请求" +common/views/pages/follow-requests.vue: + received-follow-requests: "关注申请" + accept: "接受" + reject: "拒绝" desktop: banner-crop-title: "裁剪显示为背景的部分" banner: "背景" @@ -1029,6 +1054,7 @@ desktop/views/components/ui.header.vue: desktop/views/components/ui.header.account.vue: profile: "个人资料" lists: "列表" + groups: "群组" follow-requests: "关注申请" admin: "管理" desktop/views/components/ui.header.nav.vue: @@ -1039,12 +1065,6 @@ desktop/views/components/ui.header.post.vue: post: "撰写新帖子" desktop/views/components/ui.header.search.vue: placeholder: "搜索" -desktop/views/components/received-follow-requests-window.vue: - title: "关注申请" - accept: "接收" - reject: "拒绝" -desktop/views/components/user-lists-window.vue: - title: "用户列表" desktop/views/components/user-preview.vue: notes: "帖子" following: "关注中" @@ -1128,8 +1148,9 @@ admin/views/instance.vue: recaptcha-config: "reCAPTCHA设置" recaptcha-info: "reCAPTCHA token是必要的. 请从 https://www.google.com/recaptcha/intro/ 获取。\n请注意, 该功能在中国大陆不可用。" enable-recaptcha: "启用 reCAPTCHA\n(请注意, 此功能在中国大陆不可用. 如果启用, 可能导致无法正常使用登录或注册等功能)" - recaptcha-site-key: "reCAPTCHA site key" - recaptcha-secret-key: "reCAPTCHA secret key" + recaptcha-site-key: "网站密钥" + recaptcha-secret-key: "密钥" + recaptcha-preview: "预览" hidden-tags: "隐藏哈希标签" hidden-tags-info: "使用换行符分隔要从集合中排除的哈希标签。" external-service-integration-config: "连接外部服务" @@ -1532,6 +1553,7 @@ mobile/views/components/ui.nav.vue: follow-requests: "关注申请" search: "搜索" user-lists: "列表" + user-groups: "群组" widgets: "小部件" game: "游戏" admin: "管理" @@ -1544,8 +1566,6 @@ mobile/views/pages/drive.vue: rename-folder: "重命名文件夹" move-folder: "移动此文件夹" delete-folder: "删除此文件夹" -mobile/views/pages/user-lists.vue: - title: "列表" mobile/views/pages/signup.vue: lets-start: "您的账户现已准备就绪! 📦" mobile/views/pages/followers.vue: @@ -1570,10 +1590,6 @@ mobile/views/pages/widgets/activity.vue: activity: "活动" mobile/views/pages/share.vue: share-with: "共享{name}" -mobile/views/pages/received-follow-requests.vue: - title: "关注申请" - accept: "批准" - reject: "拒绝" mobile/views/pages/note.vue: title: "帖文" prev: "上一个帖子" @@ -1679,6 +1695,10 @@ pages: edit-this-page: "编辑此页面" view-source: "查看源代码" view-page: "查看页面" + like: "赞" + unlike: "取消赞" + liked-pages: "喜欢的页面" + my-pages: "个人页面" inspector: "检查器" content: "页面内容" variables: "变量" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index f3ff7f55b7..9d8d8ebb69 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -86,3 +86,5 @@ admin/views/dashboard.vue: drive: "雲端硬碟" admin/views/charts.vue: drive: "雲端硬碟" +pages: + like: "贊" diff --git a/package.json b/package.json index 4d3b59388a..6a8cf03e2c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "misskey", "author": "syuilo ", - "version": "11.17.1", + "version": "11.18.0", "codename": "daybreak", "repository": { "type": "git", @@ -97,7 +97,7 @@ "@types/websocket": "0.0.40", "@types/ws": "6.0.1", "animejs": "3.0.1", - "apexcharts": "3.6.11", + "apexcharts": "3.6.12", "autobind-decorator": "2.4.0", "autosize": "4.0.2", "autwh": "0.1.0", @@ -107,7 +107,7 @@ "cafy": "15.1.1", "chai": "4.2.0", "chalk": "2.4.2", - "cli-highlight": "2.1.0", + "cli-highlight": "2.1.1", "commander": "2.20.0", "content-disposition": "0.5.3", "crc-32": "1.2.0", @@ -215,7 +215,7 @@ "summaly": "2.2.0", "systeminformation": "4.1.6", "syuilo-password-strength": "0.0.1", - "terser-webpack-plugin": "1.2.3", + "terser-webpack-plugin": "1.2.4", "textarea-caret": "3.1.0", "tinycolor2": "1.4.1", "tmp": "0.1.0", @@ -248,12 +248,12 @@ "vue-style-loader": "4.1.2", "vue-svg-inline-loader": "1.2.15", "vue-template-compiler": "2.6.10", - "vuedraggable": "2.20.0", + "vuedraggable": "2.21.0", "vuewordcloud": "18.7.11", "vuex": "3.1.1", "vuex-persistedstate": "2.5.4", - "web-push": "3.3.4", - "webpack": "4.31.0", + "web-push": "3.3.5", + "webpack": "4.32.0", "webpack-cli": "3.3.2", "websocket": "1.0.28", "ws": "7.0.0", diff --git a/src/client/app/common/scripts/note-subscriber.ts b/src/client/app/common/scripts/note-subscriber.ts index d881fe01ce..5b31a9f9d0 100644 --- a/src/client/app/common/scripts/note-subscriber.ts +++ b/src/client/app/common/scripts/note-subscriber.ts @@ -144,8 +144,6 @@ export default prop => ({ break; } } - - this.$emit(`update:${prop}`, this.$_ns_note_); }, } }); diff --git a/src/client/app/common/scripts/paging.ts b/src/client/app/common/scripts/paging.ts new file mode 100644 index 0000000000..c13a607e6f --- /dev/null +++ b/src/client/app/common/scripts/paging.ts @@ -0,0 +1,171 @@ +import Vue from 'vue'; + +export default (opts) => ({ + data() { + return { + items: [], + queue: [], + fetching: true, + moreFetching: false, + inited: false, + more: false + }; + }, + + computed: { + empty(): boolean { + return this.items.length == 0 && !this.fetching && this.inited; + }, + + error(): boolean { + return !this.fetching && !this.inited; + } + }, + + watch: { + queue(x) { + if (opts.onQueueChanged) opts.onQueueChanged(this, x); + }, + + pagination() { + this.init(); + } + }, + + created() { + opts.displayLimit = opts.displayLimit || 30; + this.init(); + }, + + mounted() { + if (opts.captureWindowScroll) { + this.isScrollTop = () => { + return window.scrollY <= 8; + }; + + window.addEventListener('scroll', this.onWindowScroll, { passive: true }); + } + }, + + beforeDestroy() { + if (opts.captureWindowScroll) { + window.removeEventListener('scroll', this.onWindowScroll); + } + }, + + methods: { + updateItem(i, item) { + Vue.set((this as any).items, i, item); + }, + + reload() { + this.queue = []; + this.items = []; + this.init(); + }, + + async init() { + this.fetching = true; + let params = typeof this.pagination.params === 'function' ? this.pagination.params(true) : this.pagination.params; + if (params && params.then) params = await params; + await this.$root.api(this.pagination.endpoint, { + limit: (this.pagination.limit || 10) + 1, + ...params + }).then(x => { + if (x.length == (this.pagination.limit || 10) + 1) { + x.pop(); + this.items = x; + this.more = true; + } else { + this.items = x; + this.more = false; + } + this.inited = true; + this.fetching = false; + if (opts.onInited) opts.onInited(this); + }, e => { + this.fetching = false; + if (opts.onInited) opts.onInited(this); + }); + }, + + async fetchMore() { + if (!this.more || this.moreFetching || this.items.length === 0) return; + this.moreFetching = true; + let params = typeof this.pagination.params === 'function' ? this.pagination.params(false) : this.pagination.params; + if (params && params.then) params = await params; + await this.$root.api(this.pagination.endpoint, { + limit: (this.pagination.limit || 10) + 1, + untilId: this.items[this.items.length - 1].id, + ...params + }).then(x => { + if (x.length == (this.pagination.limit || 10) + 1) { + x.pop(); + this.items = this.items.concat(x); + this.more = true; + } else { + this.items = this.items.concat(x); + this.more = false; + } + this.moreFetching = false; + }, e => { + this.moreFetching = false; + }); + }, + + prepend(item, silent = false) { + if (opts.onPrepend) { + const cancel = opts.onPrepend(this, item, silent); + if (cancel) return; + } + + if (this.isScrollTop == null || this.isScrollTop()) { + // Prepend the item + this.items.unshift(item); + + // オーバーフローしたら古い投稿は捨てる + if (this.items.length >= opts.displayLimit) { + this.items = this.items.slice(0, opts.displayLimit); + this.more = true; + } + } else { + this.queue.push(item); + } + }, + + append(item) { + this.items.push(item); + }, + + releaseQueue() { + for (const n of this.queue) { + this.prepend(n, true); + } + this.queue = []; + }, + + onWindowScroll() { + if (this.isScrollTop()) { + this.onTop(); + } + + if (this.$store.state.settings.fetchOnScroll) { + // 親要素が display none だったら弾く + // https://github.com/syuilo/misskey/issues/1569 + // http://d.hatena.ne.jp/favril/20091105/1257403319 + if (this.$el.offsetHeight == 0) return; + + const current = window.scrollY + window.innerHeight; + if (current > document.body.offsetHeight - 8) this.onBottom(); + } + }, + + onTop() { + this.releaseQueue(); + }, + + onBottom() { + this.fetchMore(); + } + } +}); diff --git a/src/client/app/common/views/components/avatars.vue b/src/client/app/common/views/components/avatars.vue new file mode 100644 index 0000000000..0dc1ece3bf --- /dev/null +++ b/src/client/app/common/views/components/avatars.vue @@ -0,0 +1,27 @@ + +{{ $t('no-users') }}
@@ -39,33 +38,47 @@ import Vue from 'vue'; import i18n from '../../../i18n'; import shouldMuteNote from '../../../common/scripts/should-mute-note'; - -const displayLimit = 20; +import paging from '../../../common/scripts/paging'; export default Vue.extend({ i18n: i18n(), inject: ['column', 'isScrollTop', 'count'], + mixins: [ + paging({ + limit: 20, + + onQueueChanged: (self, q) => { + self.count(q.length); + }, + + onPrepend: (self, note, silent) => { + // 弾く + if (shouldMuteNote(self.$store.state.i, self.$store.state.settings, note)) return false; + + // タブが非表示またはスクロール位置が最上部ではないならタイトルで通知 + if (document.hidden || !self.isScrollTop()) { + self.$store.commit('pushBehindNote', note); + } + } + }), + ], + props: { - makePromise: { + pagination: { required: true + }, + extract: { + required: false } }, - data() { - return { - rootEl: null, - notes: [], - queue: [], - fetching: true, - moreFetching: false, - inited: false, - more: false - }; - }, - computed: { + notes() { + return this.extract ? this.extract(this.items) : this.items; + }, + _notes(): any[] { return (this.notes as any).map(note => { const date = new Date(note.createdAt).getDate(); @@ -77,15 +90,6 @@ export default Vue.extend({ } }, - watch: { - queue(q) { - this.count(q.length); - }, - makePromise() { - this.init(); - } - }, - created() { this.column.$on('top', this.onTop); this.column.$on('bottom', this.onBottom); @@ -101,88 +105,6 @@ export default Vue.extend({ focus() { (this.$refs.notes as any).children[0].focus ? (this.$refs.notes as any).children[0].focus() : (this.$refs.notes as any).$el.children[0].focus(); }, - - onNoteUpdated(i, note) { - Vue.set((this as any).notes, i, note); - }, - - reload() { - this.init(); - }, - - async init() { - this.queue = []; - this.notes = []; - this.fetching = true; - await (this.makePromise()).then(x => { - if (Array.isArray(x)) { - this.notes = x; - } else { - this.notes = x.notes; - this.more = x.more; - } - this.inited = true; - this.fetching = false; - this.$emit('inited'); - }, e => { - this.fetching = false; - }); - }, - - async fetchMore() { - if (!this.more || this.moreFetching) return; - this.moreFetching = true; - await (this.makePromise(this.notes[this.notes.length - 1].id)).then(x => { - this.notes = this.notes.concat(x.notes); - this.more = x.more; - this.moreFetching = false; - }, e => { - this.moreFetching = false; - }); - }, - - prepend(note, silent = false) { - // 弾く - if (shouldMuteNote(this.$store.state.i, this.$store.state.settings, note)) return; - - // タブが非表示ならタイトルで通知 - if (document.hidden) { - this.$store.commit('pushBehindNote', note); - } - - if (this.isScrollTop()) { - // Prepend the note - this.notes.unshift(note); - - // オーバーフローしたら古い投稿は捨てる - if (this.notes.length >= displayLimit) { - this.notes = this.notes.slice(0, displayLimit); - this.more = true; - } - } else { - this.queue.push(note); - } - }, - - append(note) { - this.notes.push(note); - this.cursor = this.notes[this.notes.length - 1].id - }, - - releaseQueue() { - for (const n of this.queue) { - this.prepend(n, true); - } - this.queue = []; - }, - - onTop() { - this.releaseQueue(); - }, - - onBottom() { - this.fetchMore(); - } } }); diff --git a/src/client/app/common/views/deck/deck.notification.vue b/src/client/app/common/views/deck/deck.notification.vue index 3ced7b7e23..8a21bedb91 100644 --- a/src/client/app/common/views/deck/deck.notification.vue +++ b/src/client/app/common/views/deck/deck.notification.vue @@ -81,15 +81,15 @@
+
{{ $t('empty') }}
+{{ $t('empty') }}
+{{ $t('disabled-timeline.description') }}
+
+
{{ $t('empty') }}
+{{ $t('empty') }}
+
+
+
{{ $t('empty') }}
+{{ $t('empty') }}
+ +