Misskey's code does the same, but our groups behave differently enough
that this may be not the best choice
for example, let's say we have:
- notifications 1-5 for reaction to note A
- notifications 6-8 for reaction to note B
- notifications 9-12 for reaction to note A
- notification 13-19 for non-groupable events
- notification 20 for reaction to note A
and that events happened one every minute (so the last notification is
from 20 minutes ago)
client requests the most recent 10 notifications; we fetch
notifications 1-10, and reply:
- grouped id 6 for reactions 6-8 to note B
- grouped id 10 for reactions 1-5, 9-10 to note A
then the client requests 10 more notifications, untilId=10; we fetch
notifications 11-20, and reply:
- non-grouped notifications 13-19
- grouped id 20 for reactions 11,12,20 to note A
because we sort by id, and also the `createdAt` marks the _newest_
event in each group, the client will then show:
6 reactions to note B, 6 minutes ago
4 reactions to note A, 1 minute ago
notifications 13-19, 13 minutes to 19 minutes ago
3 reactions to note A, 11 minutes ago
I don't know how to make this work better ☹
* there's no need to pre-load follow requests for many users, since
at most we'll pack them for only 1 user (the one requesting the
data)
* similarly, it makes sense to preload security keys for many users
if we're serving a moderator's request, but if not, we need at most 1
user's keys (the requesting user's), and we can let `.pack()` fetch
those
* we always need to preload relations when serving a detailed
request, not only when the set of users to pack does not include the
requesting user
* Consolidate multiple different HTML/XML/RSS libraries to use the Cheerio stack
* Remove unused deps
* Move dev dependencies to correct section
* Pin versions where missing
* Improved styling for user/instance IDs
* Show target instance as a section
* Load reports and sections faster
* Rename "moderation note" to "staff notes" for clarity
* Preview reported notes directly
our own `renderVote` generates IDs like
`${this.config.url}/users/${user.id}#votes/${vote.id}/activity`
also `renderUpdate` generates
`${this.config.url}/users/${user.id}#updates/${new Date().getTime()}`
so we can't reject IDs with fragments
in a few places icon classes are constructed from string constants,
and those not always include the `ti` prefix
also updated the `grep` in `CONTRIBUTING.md` to catch those kind of
constants.
the way we replace icons, the `ti` class gets removed, so those styles
were not applied; we always add a `ph-lg` class, so we select on that
one
I've left the `ti` selectors to hopefully make future merge conflicts
clearer
* Split into local, global, and completed sections
* Don't require credential, but check for local/global timeline perms
* Fix rate limit
* Return polls where the current user has already voted
* Return non-public polls if the user has permission to view them
* Apply user/instance blocks
* Fetch polls + notes + users in a single step to speed up pack
my current hypothesis to explain #1059:
- we have a timeline, with some notes
- a new note arrives on the websocket
- we replace the items in the pagination inside the timeline
- vue starts re-rendering the notes, using the `:key` values to know
which ones to leave there and which ones to move / add / delete
- since DynamicNote is `computed`, every time vue needs to instantiate
it, it does an `await`
- so if another note is waiting in the websocket buffer, it gets
processed *while vue is rendering*
- processing the new note cause the `items` map (and the array
computed from it) to be replaced
- at this point vue may well get a new iterator from the start of the
new list of items, after it had already decided that the first few
notes did not need to be changed
- which manifests as new notes appearing in the middle of the
timeline!
- and after enough new notes have arrived, all the old notes are out
of the items map, so their elements have all been deleted, and
"normality" is restored
this makes sense in my head, let's see if this change actually fixes
the problem
before d7784ea4ff
`moreFetching.value=false` happened after the `nextTick` inside
`reverseConcat` had completed, but after that commit, it happens
immediately (as part of the try/finally)
this _probably_ doesn't matter, but let's avoid changes we didn't
intend
the fix for #1037 was wrong (it would collapse a boosted quote if the
quoted note was from the current user), and not
necessary (`appearNote.value.userId` _is_ the author of the boosted
note, no need to look inside `note.renote` at all)
so… I'm not sure why I even raised the issue 😕
instead of passing a (possibly gigantic) array from JS, we get
PostgreSQL to look at the value in the `meta` table directly
tested the `federation/instances` endpoint, and the `QueryService`
methods; I have not tested the charts
when the posting form gets shown, the original note is already gone,
and without this change, the note only exists in local variables
now, we save the draft as soon as the form is shown, so clicking on
the "post" (or reply, or quote) button will get you a form with the
draft data
none of our endpoints will ever contain `..` (they might, maybe, at
some point, contain `.`, as in `something/get.html`?), so every
`Mk:api()` call to an endpoint that contains `..` can't work: let's
reject it outright
Co-authored-by: dakkar <dakkar@thenautilus.net>
* SP-2025-03.1 always wrap icon&thumbnail URLs
if they're not HTTP URLs, the frontend won't be able to display them
anyway (`<img src="mailto:…">` or '<div stile="background-image:
url(nntp:…)">` aren't going to work!), so let's always run them through the
media proxy, which will fail harder (fetching a `javascript:` URL
won't do anything in the backend, might do something in the frontend)
and will always protect the client's address in cases like `gemini:`
where the browser could try to fetch
* SP-2025-03.2 use object binding for more styles
interpolating a random (remote-controlled!) string into a `style`
attribute is a bad idea; using VueJS object binding, we should get
proper quoting and therefore safe parse failures instead of CSS
injections / XSS
* SP-2025-03.3 slightly more robust "self" URL handling
parse URLs instead of treating them as strings; this is still not
perfect, but the `URL` class only handles full URLs, not relative
ones, so there's so way to ask it "give me a URL object that
represents this resource relative to this base URL"
notice that passing very weird URLs to `MkUrl` and `MkUrlPreview` will
break the frontend (in dev mode) because there's an untrapped `new
URL(…)` that may explode; production builds seem to safely ignore the
error, though
---------
Co-authored-by: dakkar <dakkar@thenautilus.net>
bits I've left different:
* hostname for db, redis, meili (so they match the values in the
example compose file)
* listen address / socket (because changing them will confuse docker)
* no mention of the pidfile (because it's completely useless in
docker)
* Exclude blocked instance note from most timelines
* Exclude blocked instance note from FTT timelines
* Exclude blocked instance note from featured
* fix type
* fix(ci): correct invalid condition for skipping Chromatic build
* fix: change to be triggered when frontend `package.json` is edited instead of lockfile
* chore: disable automatic rebase of frontend Renovate PRs
* enhance(backend): use composite index for ordering notes by user
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
* fixup! enhance(backend): use composite index for ordering notes by user
---------
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
@Oneric explained:
> Spec says query params must be included in the signature; Mastodon
> being Mastodon used to always exclude it though and for
> compatibility everyone followed this. At some point GtS decided to
> follow spec instead which caused interop issues, but succeeded in
> getting Mastodon (and others like *oma) to accept incoming requests
> with (and also still without) query params though outgoing requests
> remaing query-param-free. Some still only accept query-param-less
> requests though and GtS uses a retry mechanism to resend any request
> failing with 401 with an query-parama-less signature once. (Also
> see:
> https://docs.gotosocial.org/en/latest/federation/http_signatures/ )
>
> So for incoming requests both versions need to be checked. For
> outgoing requests, unless you want to jump through retry hoops like
> GtS, omitting query-params is the safer bet for now (presumably this
> will only change if Mastodon ever decides to send out requests
> signed with query params)
as the comment says, frontend boot calls `cloudGets` with an empty
`needs`, and upstream's code returns an empty object without calling
the API (because the call `i/registry/get` for each element in
`needs`), but we have to special-case it
* refactor: flatten search index
* chore: use Function() to simplify parsing attribute
* chore: remove comment handling
* chore: simplify processing SearchLabel and SearchKeyword element
* chore: use SearchLabel in mutedUsers
* chore: small improvements
* chore: remove a fallback path and simplify the entire code
* fix: result path is not correct
* chore: inline function
* fix: notifications-groupedのinclude/exclude typesに:groupedを指定できてしまう問題
* refactor: 通知の取得処理を Notification Service に移動
* feat: add function to parse additional part of id
* fix: 通知のページネーションが正しく動かない問題
Redisにのページネーションで使用する時間及びidとRedis上のものが混同されていたので、Misskeyが生成するものに寄せました。
* pnpm run build-misskey-js-with-types
* chore: XADDをretryするように
* fix: notifications-groupedでxrevrangeしているのを消し忘れていた
* enhance(frontend): include server hostname and port in 2fa recovery code filename
* chore(frontend): fix mistake(use `@` for indicate server hostname)
---------
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
1) the `crossOrigin='anonymous'` tells the browser to actually honour
CORS on the image
2) the dot is now always 1/5 of the icon, even for large icons
3) we use `toBlob` instead of `toDataURL` because
https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL
says so
4) the test now blinks the dot, so it tests the actual code
5) if there's a problem during the test, we log the error, so people
can tell it to us
Thanks to Ares on Discord for reporting the problems.
* add condition to disable post button when CW text is empty
* standardize condition by using 1<= inserted of 0<
* unify CW text length condition to improve readability
* add missing CW state check
* fix state check, add empty/null check, improve max length validation
* simplify CW validation by removing minimum length check
* Update CHANGELOG
* remove CW text validation in post()
---------
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
* fix(backend/object-storage): disable data integrity protections (MisskeyIO#895)
Cloudflare R2 does not support 'x-amz-checksum-*'
* Update Changelog
---------
Co-authored-by: あわわわとーにゅ <17376330+u1-liquid@users.noreply.github.com>
having that "lookp user" check *twice* meant that typing a full
username, and then canceling the lookup confirmation, ended up doing a
lookup anyway
now, if you cancel the looup confirmation, you get a search
thanks to @Ares on Discord for reporting
the result of `notes/schedule/list` needs to be shaped like an array
of `Packed<'Note'>`, but it wasn't
now it's much closer, and I can edit scheduled quotes and replies
these are all the places I could find that (directly or indirectly)
perform API calls when the input is changed; telling the component to
"debounce" means that the API will be called at most once per second
* fix(backend): Fix an issue where the origin of ActivityPub lookup response was not validated correctly.
[GHSA-6w2c-vf6f-xf26](https://github.com/misskey-dev/misskey/security/advisories/GHSA-6w2c-vf6f-xf26)
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
* Enhance: Add configuration option to disable all external redirects when responding to an ActivityPub lookup (config.disallowExternalApRedirect)
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
* fixup! fix(backend): Fix an issue where the origin of ActivityPub lookup response was not validated correctly.
* docs & one edge case
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
* apply suggestions
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
* remove stale frontend reference to _responseInvalidIdHostNotMatch
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
* apply suggestions
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
---------
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
+ improve, cleanup, and de-duplicate quote resolution
+ add warning message when quote cannot be loaded
+ add "process error" framework to display warnings when a note cannot be correctly loaded from another instance
otherwise, the timestamps that the test uses for queries are
interpreted as UTC (because they have a TZ in the string), but the
truncated date is interpreted in the session timezone, which defaults
to the server timezone, which can be anything
thanks to @fEmber for noticing
* first of all, fetch from the buffer all the notes we may
need (including replied-to ones)
* then, distinguish between "we know there's no myReaction" and "we
don't know if there's any myReaction"
* finally, look at both a note and the note it's replying to
before, we got:
> ReferenceError: can't access lexical declaration 'followRequestDone'
> before initialization
(of course in non-dev mode, `followRequestDone` had a different name)
I do not particularly _love_ this solution, but it is simple and
effective
I can't find another reliable way to determine if a link goes to a
local note of the given id, apart from fetching the link
* Fix TS errors and warnings
* Fix ESLint errors and warnings
* Fix property typos in various places
* Fix property data conversion
* Add missing entity properties
* Normalize logging and reduce spam
* Check for missing request parameters
* Allow mastodon API to work with local debugging
* Safer error handling
* Fix quote-post detection
* fix: disallow corepack from fetching latest manager version instead use specified version in package.json
* Update Changelog
* fix?
* apply COREPACK_DEFAULT_TO_LATEST: 0 to every github workflows
* Revert "apply COREPACK_DEFAULT_TO_LATEST: 0 to every github workflows"
This reverts commit 67f0dc31adaa04f891f74f5c44a3d4d13a302a03.
* apply COREPACK_DEFAULT_TO_LATEST: 0 to every github workflows (re)
* fix
* fix?
* revert: removing corepack enable
* test: set COREPACK_DEFAULT_TO_LATEST for federation tests
---------
Co-authored-by: Marie <github@yuugi.dev>
Co-authored-by: anatawa12 <anatawa12@icloud.com>
* chore: reorder endpoints to lexicographic code unit order
* refactor: import endpoints in one module and use them for generating EndpointsModule and endpoints
this is not exactly great, but it should be "good enough"
note that the new `group` function should not escape in the wild, as
we don't document it and only use it internally
I tried using `$[scale foo bar]` instead of `$[group foo bar]`, but
that would be rendered as `<i>foo bar</i>` when sent over the network
to non-misskey instances, and we don't want that
This fix makes `MfmService.fromHtml()` method accept `<ruby>` tags
and translate it to MFM's ruby characters syntax (`$[ruby ...]`).
このパッチは`MfmService.fromHtml()`メソッドが`<ruby>`タグをMFMの
読み仮名(ルビ)文法に翻訳する様に修正します。
* don't double-url-encode rss urls
`url.searchParams.set()` already encodes the values passed!
(this is a partial revert of 0472d43ee9,
the change in `statusbar-rss.vue` was correct)
* Update Changelog
---------
Co-authored-by: dakkar <dakkar@thenautilus.net>
when a regular user (who has the appropriate permissions) creates an
invite, we record that user's id in the `createdById` column
but when an admin/mod creates an invite via the control panel, we
didn't
now we do
the style of widgets was changed by @Insert5StarName (@marie?) with
commit e14fd33140 as part of !178
I'm not sure if it was intentional or accidental, and I'm also not
sure why nobody noticed before 2024.11 (maybe something else kept the
widgets wider?)
Anyway, this change seems to be enough
* Use LIKE-LOWER instead of ILIKE, which pg_bigm doesn't support.
* changelog: Enhance: pg_bigmが利用できるよう、ノートの検索をILIKE演算子でなくLIKE演算子でLOWER()をかけたテキストに対して行うように
on wide viewports, the url preview only leaves space for a thumbnail
when such thumbnail exists.
on small phones, or in busy deck views, it always left that space
this was not very evident for simple previews (which are pretty much a
title line, a favicon, and the site name), but it became very obvious
with the note embedding in 2024.11
this patch makes the thumbnail space conditional on the existence of
the thumbnail, for narrow viewports as well (I pretty much copied the
bit of CSS from the non-narrow media query sections)
no live code looks at these settings, let's not confuse users
pretending they can set
also, no live code sends any of these notifications via email!
maybe, after #718, we can revisit this
the warning dialog's "trust this domain" toggle saves the whole
hostname, so this code needs to use the whole hostname
otherwise trusting a `www.example.com` will never work, because we'd
be checking `example.com` against it, and fail
while I was there, I also made the `trustedLinkUrlPatterns` correctly
match sub-domains: previously, trusting `ple.com` would trust
`example.com`
I don't understand the difference between `any` and `unknown`, but the
type signatures before this branch had `Record<string, any> | null`,
and this code passes the typecheck… mah
2024.10 or 2024.11 added a `<div>` around `<MkAd>`, but while `MkAd`
checks if ads should be shown, and generates an empty `<div>` if not,
the wrapper `div` was always shown.
This commit takes the same logic from `MkAd` and applies it to the
wrapper as well.
thanks to @puppygirlhornypost for noticing
if `requireSigninToViewContents` in on, no notes are included in the
feed
notes covered by `makeNotesFollowersOnlyBefore` and
`makeNotesHiddenBefore` are skipped
misskey still doesn't have these… I'm putting them here because these
are not Sharkey-specific strings
and yes, this *will* cause conflicts on the next merge
when switching between accounts, with many tabs open (10 seem to be
enough), they all hit the endpoint at the same time, and some get rate
limited.
treating a 429 as a fatal error confuses the frontend, which ends up
logging the user out of all their accounts.
this code makes the frontend retry, after waiting the appropriate
amount of time.
seems to work fine in my testing.
clicking on the username of the collapsed replied-to note, opens the
note instead of navigating to the user's profile
clicking the avatar still goes to the profile
* Resolve frontend/backend contradiction for home visibility embeds
This now uses the same check from `packages/frontend/src/scripts/get-note-menu.ts`
* Update Changelog
---------
Co-authored-by: CenTdemeern1 <timo.herngreen@gmail.com>
it's sensible to show the pinned notes first *if they exist*
if there's nothing pinned, we're just showing an empty list
let's show the "notes" tab in that case
Previously, when the note was collapsed, it didn't get updates such
as reactions from streaming server. This was a problem, as any change
made to the post before it got uncollapsed would end up being ignored.
I literally tried this before and it didn't work I have witnesses
Before, when I set it to 100%, it became 64 pixels tall
Piuvas witnessed this happen and tried to help me debug it
at some point it just suddenly started working and we have no clue how
Witnessed-by: piuvas <piuvas@proton.me>
Co-authored-by: piuvas <piuvas@proton.me>
Full list of changes:
- Visual clarification for when certain UI elements are disabled
- Fix the play/pause button not being reactive due to isPlaying being a getter (technically a hack but it's probably fine)
- Makes sure to use `comment` instead of `flashFile.comment` as condition for the ALT text icon being visible
These can be replaced later when Ruffle API v1 releases with proper TypeScript definitions and such: https://github.com/ruffle-rs/ruffle/pull/17939
I am planning to do so myself when that happens.
For now, Dinnerbone has graciously provided us with type definitions of the current API.
Co-authored-by: Nathan Adams <dinnerbone@dinnerbone.com>
This commit has a long story behind it.
Removes Ruffle from /scripts/ and instead always loads the installed version from unpkg, Ruffle's preferred CDN.
This requires having unpkg in the CORS rules.
Ruffle is also loaded from the CDN in dev mode. To help with this an externalPackages array has been added to the vite dev config.
Co-authored-by: Julia Johannesen <julia@insertdomain.name>
This prevents an edge case where the server begins processing inbound API / AP requests before any of the chart / management daemons are ready, potentially leading to incorrect chart statistics.
those objects always have the normal prototype, and can't have
`hasOwnProperty` redefined, let me call it normally
(otherwise I'd have to write
`Object.prototype.hasOwnProperty.call(newUser, field)` and that's
ugly)
* editing _just the poll_ is now recognised as an actual change to the
note
* the "poll ended" notification job is now replaced (with potentially
the new expiry time)
* check harder for connectibility
`allSettled` does not throw if a promise is rejected, so
`check_connect` never actually failed
* Update Changelog
---------
Co-authored-by: dakkar <dakkar@thenautilus.net>
* Fix type error in security fixes
(cherry picked from commit fa3cf6c299)
* Fix error in test function calls
(cherry picked from commit 1758f29364)
* Fix style error
(cherry picked from commit 23c4aa2571)
* Fix another style error
(cherry picked from commit 36af07abe2)
* Fix `.punyHost` misuse
(cherry picked from commit 6027b516e1)
* attempt to fix test: make yaml valid
---------
Co-authored-by: Julia Johannesen <julia@insertdomain.name>
* enhance: Add a few validation fixes from Sharkey
See the original MR on the GitLab instance:
https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/484
Co-Authored-By: Dakkar <dakkar@thenautilus.net>
* fix: primitive 2: acceptance of cross-origin alternate
Co-Authored-By: Laura Hausmann <laura@hausmann.dev>
* fix: primitive 3: validation of non-final url
* fix: primitive 4: missing same-origin identifier validation of collection-wrapped activities
* fix: primitives 5 & 8: reject activities with non
string identifiers
Co-Authored-By: Laura Hausmann <laura@hausmann.dev>
* fix: primitive 6: reject anonymous objects that were fetched by their id
* fix: primitives 9, 10 & 11: http signature validation
doesn't enforce required headers or specify auth header name
Co-Authored-By: Laura Hausmann <laura@hausmann.dev>
* fix: primitive 14: improper validation of outbox, followers, following & shared inbox collections
* fix: code style for primitive 14
* fix: primitive 15: improper same-origin validation for
note uri and url
Co-Authored-By: Laura Hausmann <laura@hausmann.dev>
* fix: primitive 16: improper same-origin validation for user uri and url
* fix: primitive 17: note same-origin identifier validation can be bypassed by wrapping the id in an array
* fix: code style for primitive 17
* fix: check attribution against actor in notes
While this isn't strictly required to fix the exploits at hand, this
mirrors the fix in `ApQuestionService` for GHSA-5h8r-gq97-xv69, as a
preemptive countermeasure.
* fix: primitive 18: `ap/get` bypasses access checks
One might argue that we could make this one actually preform access
checks against the returned activity object, but I feel like that's a
lot more work than just restricting it to administrators, since, to me
at least, it seems more like a debugging tool than anything else.
* fix: primitive 19 & 20: respect blocks and hide more
Ideally, the user property should also be hidden (as leaving it in leaks
information slightly), but given the schema of the note endpoint, I
don't think that would be possible without introducing some kind of
"ghost" user, who is attributed for posts by users who have you blocked.
* fix: primitives 21, 22, and 23: reuse resolver
This also increases the default `recursionLimit` for `Resolver`, as it
theoretically will go higher that it previously would and could possibly
fail on non-malicious collection activities.
* fix: primitives 25-33: proper local instance checks
* revert: fix: primitive 19 & 20
This reverts commit 465a9fe6591de90f78bd3d084e3c01e65dc3cf3c.
---------
Co-authored-by: Dakkar <dakkar@thenautilus.net>
Co-authored-by: Laura Hausmann <laura@hausmann.dev>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
* FEAT: Allow users to view pending follow requests they sent
This commit implements the `following/requests/sent` interface firstly
implemented on Firefish, and provides a UI interface to view the pending
follow requests users sent.
* ux: should not show follow requests tab when have no pending sent follow req
* fix default followreq tab
* fix default followreq tab
* restore missing hasPendingReceivedFollowRequest in navbar
* refactor
* use tabler icons
* tweak design
* Revert "ux: should not show follow requests tab when have no pending sent follow req"
This reverts commit e580b92c37f27c2849c6d27e22ca4c47086081bb.
* Update Changelog
* Update Changelog
* change tab titles
---------
Co-authored-by: Lhc_fl <lhcfl@outlook.com>
Co-authored-by: Hazelnoot <acomputerdog@gmail.com>
* fix: make sure mentions of local users get rendered correctly during AP delivery (resolves#645)
* Update Changelog
* indent
---------
Co-authored-by: Laura Hausmann <laura@hausmann.dev>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
* Check if time-based achievements are unlocked before initializing them in main-boot
(cherry picked from commit c0702fd92f)
* Update Changelog
---------
Co-authored-by: Evan Paterakis <evan@geopjr.dev>
* fix(frontend): Make post form attachments accessible
Adds a role="button", tabindex, and @keydown to MkPostFormAttaches in
order to make it accessible to keyboard users.
* Fix for linter
* Add spacing in type signature
# When using authorized fetch, this is often undesired as any signed activity can be forwarded to a blocked instance by relays and other instances.
# This setting allows admins to disable LD signatures for increased privacy, at the expense of fewer relayed activities and additional inbound fetch (GET) requests.
attachLdSignatureForRelays:true
# check that inbound ActivityPub GET requests are signed ("authorized fetch")
checkActivityPubGetSignature:false
# For security reasons, uploading attachments from the intranet is prohibited,
# but exceptions can be made from the following settings. Default value is "undefined".
# Read changelog to learn more (Improvements of 12.90.0 (2021/09/04)).
# Some example configurations:
#allowedPrivateNetworks:
# # Allow connections to 127.0.0.1 on any port
# - '127.0.0.1/32'
# # Allow connections to 127.0.0.* on any port
# - '127.0.0.1/24'
# # Allow connections to 127.0.0.1 on any port
# - '127.0.0.1'
# # Allow connections to 127.0.0.1 on any port
# - network: '127.0.0.1'
# # Allow connections to 127.0.0.1 on port 80
# - network: '127.0.0.1'
# ports: [80]
# # Allow connections to 127.0.0.1 on port 80 or 443
# - network: '127.0.0.1'
# ports:
# - 80
# - 443
allowedPrivateNetworks:[
'127.0.0.1/32',
'192.168.65.0/24'
@ -228,5 +356,43 @@ allowedPrivateNetworks: [
#customMOTD: ['Hello World', 'The sharks rule all', 'Shonks']
# Disable automatic redirect for ActivityPub object lookup. (default: false)
# This is a strong defense against potential impersonation attacks if the viewer instance has inadequate validation.
# However it will make it impossible for other instances to lookup third-party user and notes through your URL.
#disallowExternalApRedirect: true
# Upload or download file size limits (bytes)
#maxFileSize: 262144000
# CHMod-style permission bits to apply to uploaded files.
# Permission bits are specified as a base-8 string representing User/Group/Other permissions.
# This setting is only useful for custom deployments, such as using a reverse proxy to serve media.
#filePermissionBits: '644'
# Log settings
# logging:
# sql:
# # Outputs query parameters during SQL execution to the log.
# # default: false
# enableQueryParamLogging: false
# # Disable query truncation. If set to true, the full text of the query will be output to the log.
# # default: false
# disableQueryTruncation: false
# # Shows debug log messages after instance startup. To capture earlier debug logs, set the MK_VERBOSE environment variable.
# # default: false in production, true otherwise.
# #verbose: false
# Settings for the activity logger, which records inbound activities to the database.
# Disabled by default due to the large volume of data it saves.
#activityLogging:
# Log activities to the database (default: false)
#enabled: false
# Save the activity before processing, then update later with the results.
# This has the advantage of capturing activities that cause a hard-crash, but doubles the number of queries used.
# Default: false
#preSave: false
# How long to save each log entry before deleting it.
# Linked Data signatures are cryptographic signatures attached to each activity to provide proof of authenticity.
# When using authorized fetch, this is often undesired as any signed activity can be forwarded to a blocked instance by relays and other instances.
# This setting allows admins to disable LD signatures for increased privacy, at the expense of fewer relayed activities and additional inbound fetch (GET) requests.
attachLdSignatureForRelays:true
# check that inbound ActivityPub GET requests are signed ("authorized fetch")
checkActivityPubGetSignature:false
# For security reasons, uploading attachments from the intranet is prohibited,
# but exceptions can be made from the following settings. Default value is "undefined".
# Read changelog to learn more (Improvements of 12.90.0 (2021/09/04)).
allowedPrivateNetworks:[
'127.0.0.1/32',
'192.168.65.0/24'
]
#customMOTD: ['Hello World', 'The sharks rule all', 'Shonks']
# Upload or download file size limits (bytes)
#maxFileSize: 262144000
# CHMod-style permission bits to apply to uploaded files.
# Permission bits are specified as a base-8 string representing User/Group/Other permissions.
# This setting is only useful for custom deployments, such as using a reverse proxy to serve media.
#filePermissionBits: '644'
# Log settings
# logging:
# sql:
# # Outputs query parameters during SQL execution to the log.
# # default: false
# enableQueryParamLogging: false
# # Disable query truncation. If set to true, the full text of the query will be output to the log.
# # default: false
# disableQueryTruncation: false
# Settings for the activity logger, which records inbound activities to the database.
# Disabled by default due to the large volume of data it saves.
#activityLogging:
# Log activities to the database (default: false)
#enabled: false
# Save the activity before processing, then update later with the results.
# This has the advantage of capturing activities that cause a hard-crash, but doubles the number of queries used.
# Default: false
#preSave: false
# How long to save each log entry before deleting it.
# These are the setting items for the full-text search provider.
fulltextSearch:
# You can select the ID generation method.
# - sqlLike (default)
# Use SQL-like search.
# This is a standard feature of PostgreSQL, so no special extensions are required.
# - sqlPgroonga
# Use pgroonga.
# You need to install pgroonga and configure it as a PostgreSQL extension.
# In addition to the above, you need to create a pgroonga index on the text column of the note table.
# see: https://pgroonga.github.io/tutorial/
# - sqlTsvector
# Use Postgres tsvectors.
# You need to create a generated column and index on the note table to use this, followed by an ANALYZE on the table. Beware, this will take a while to be created and the database will remain locked during this process.
# This also enables advanced search syntax, see documentation of websearch_to_tsquery: https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES
# Support for multiple languages is currently rather poor and will be improved once post languages become a feature.
#
# Example to set up tsvectors for an English instance:
# When using authorized fetch, this is often undesired as any signed activity can be forwarded to a blocked instance by relays and other instances.
# This setting allows admins to disable LD signatures for increased privacy, at the expense of fewer relayed activities and additional inbound fetch (GET) requests.
attachLdSignatureForRelays:true
# check that inbound ActivityPub GET requests are signed ("authorized fetch")
checkActivityPubGetSignature:false
# For security reasons, uploading attachments from the intranet is prohibited,
# but exceptions can be made from the following settings. Default value is "undefined".
# Read changelog to learn more (Improvements of 12.90.0 (2021/09/04)).
#allowedPrivateNetworks: [
# '127.0.0.1/32'
#]
# Some example configurations:
#allowedPrivateNetworks:
# # Allow connections to 127.0.0.1 on any port
# - '127.0.0.1/32'
# # Allow connections to 127.0.0.* on any port
# - '127.0.0.1/24'
# # Allow connections to 127.0.0.1 on any port
# - '127.0.0.1'
# # Allow connections to 127.0.0.1 on any port
# - network: '127.0.0.1'
# # Allow connections to 127.0.0.1 on port 80
# - network: '127.0.0.1'
# ports: [80]
# # Allow connections to 127.0.0.1 on port 80 or 443
# - network: '127.0.0.1'
# ports:
# - 80
# - 443
#customMOTD: ['Hello World', 'The sharks rule all', 'Shonks']
# Disable automatic redirect for ActivityPub object lookup. (default: false)
# This is a strong defense against potential impersonation attacks if the viewer instance has inadequate validation.
# However it will make it impossible for other instances to lookup third-party user and notes through your URL.
#disallowExternalApRedirect: true
# Upload or download file size limits (bytes)
#maxFileSize: 262144000
# timeout (in milliseconds) and maximum size for imports (e.g. note imports)
#import:
# downloadTimeout: 30000
# maxFileSize: 262144000
# CHMod-style permission bits to apply to uploaded files.
# Permission bits are specified as a base-8 string representing User/Group/Other permissions.
# This setting is only useful for custom deployments, such as using a reverse proxy to serve media.
#filePermissionBits: '644'
# Log settings
# logging:
# sql:
# # Outputs query parameters during SQL execution to the log.
# # default: false
# enableQueryParamLogging: false
# # Disable query truncation. If set to true, the full text of the query will be output to the log.
# # default: false
# disableQueryTruncation: false
# # Shows debug log messages after instance startup. To capture earlier debug logs, set the MK_VERBOSE environment variable.
# # default: false in production, true otherwise.
# #verbose: false
# Settings for the activity logger, which records inbound activities to the database.
# Disabled by default due to the large volume of data it saves.
#activityLogging:
# Log activities to the database (default: false)
#enabled: false
# Save the activity before processing, then update later with the results.
# This has the advantage of capturing activities that cause a hard-crash, but doubles the number of queries used.
# Default: false
#preSave: false
# How long to save each log entry before deleting it.
# Default: 2592000000 (1 week)
#maxAge: 2592000000
# Transparently compress every websocket message on clients that support it.
# Trades server CPU usage for reduced bandwidth usage and a faster frontend on the client.
# If you're not using jemalloc, this may cause memory fragmentation and performance issues! (https://www.npmjs.com/package/ws#websocket-compression)
# jemalloc is used by default in the Sharkey Docker image and may be set up manually otherwise: https://github.com/jemalloc/jemalloc/wiki/getting-started
websocketCompression:false
# Inject arbitrary HTML tags to customize Sharkey without having to fork it
# These are the setting items for the full-text search provider.
fulltextSearch:
# You can select the ID generation method.
# - sqlLike (default)
# Use SQL-like search.
# This is a standard feature of PostgreSQL, so no special extensions are required.
# - sqlPgroonga
# Use pgroonga.
# You need to install pgroonga and configure it as a PostgreSQL extension.
# In addition to the above, you need to create a pgroonga index on the text column of the note table.
# see: https://pgroonga.github.io/tutorial/
# - sqlTsvector
# Use Postgres tsvectors.
# You need to create a generated column and index on the note table to use this, followed by an ANALYZE on the table. Beware, this will take a while to be created and the database will remain locked during this process.
# This also enables advanced search syntax, see documentation of websearch_to_tsquery: https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES
# Support for multiple languages is currently rather poor and will be improved once post languages become a feature.
#
# Example to set up tsvectors for an English instance:
# When using authorized fetch, this is often undesired as any signed activity can be forwarded to a blocked instance by relays and other instances.
# This setting allows admins to disable LD signatures for increased privacy, at the expense of fewer relayed activities and additional inbound fetch (GET) requests.
attachLdSignatureForRelays:true
# check that inbound ActivityPub GET requests are signed ("authorized fetch")
checkActivityPubGetSignature:false
# For security reasons, uploading attachments from the intranet is prohibited,
# but exceptions can be made from the following settings. Default value is "undefined".
# Read changelog to learn more (Improvements of 12.90.0 (2021/09/04)).
#allowedPrivateNetworks: [
# '127.0.0.1/32'
#]
# Some example configurations:
#allowedPrivateNetworks:
# # Allow connections to 127.0.0.1 on any port
# - '127.0.0.1/32'
# # Allow connections to 127.0.0.* on any port
# - '127.0.0.1/24'
# # Allow connections to 127.0.0.1 on any port
# - '127.0.0.1'
# # Allow connections to 127.0.0.1 on any port
# - network: '127.0.0.1'
# # Allow connections to 127.0.0.1 on port 80
# - network: '127.0.0.1'
# ports: [80]
# # Allow connections to 127.0.0.1 on port 80 or 443
# - network: '127.0.0.1'
# ports:
# - 80
# - 443
#customMOTD: ['Hello World', 'The sharks rule all', 'Shonks']
# Disable automatic redirect for ActivityPub object lookup. (default: false)
# This is a strong defense against potential impersonation attacks if the viewer instance has inadequate validation.
# However it will make it impossible for other instances to lookup third-party user and notes through your URL.
#disallowExternalApRedirect: true
# Upload or download file size limits (bytes)
#maxFileSize: 262144000
# timeout and maximum size for imports (e.g. note imports)
# timeout (in milliseconds) and maximum size for imports (e.g. note imports)
#import:
# downloadTimeout: 30
# downloadTimeout: 30000
# maxFileSize: 262144000
# PID File of master process
#pidFile: /tmp/misskey.pid
# CHMod-style permission bits to apply to uploaded files.
# Permission bits are specified as a base-8 string representing User/Group/Other permissions.
# This setting is only useful for custom deployments, such as using a reverse proxy to serve media.
#filePermissionBits: '644'
# Log settings
# logging:
# sql:
# # Outputs query parameters during SQL execution to the log.
# # default: false
# enableQueryParamLogging: false
# # Disable query truncation. If set to true, the full text of the query will be output to the log.
# # default: false
# disableQueryTruncation: false
# # Shows debug log messages after instance startup. To capture earlier debug logs, set the MK_VERBOSE environment variable.
# # default: false in production, true otherwise.
# #verbose: false
# Settings for the activity logger, which records inbound activities to the database.
# Disabled by default due to the large volume of data it saves.
#activityLogging:
# Log activities to the database (default: false)
#enabled: false
# Save the activity before processing, then update later with the results.
# This has the advantage of capturing activities that cause a hard-crash, but doubles the number of queries used.
# Default: false
#preSave: false
# How long to save each log entry before deleting it.
# Default: 2592000000 (1 week)
#maxAge: 2592000000
# Transparently compress every websocket message on clients that support it.
# Trades server CPU usage for reduced bandwidth usage and a faster frontend on the client.
# If you're not using jemalloc, this may cause memory fragmentation and performance issues! (https://www.npmjs.com/package/ws#websocket-compression)
# jemalloc is used by default in the Sharkey Docker image and may be set up manually otherwise: https://github.com/jemalloc/jemalloc/wiki/getting-started
websocketCompression:false
# Inject arbitrary HTML tags to customize Sharkey without having to fork it
🔒 Found a security vulnerability? [Please disclose it responsibly.](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/SECURITY.md)
🤝 By submitting this feature request, you agree to follow our [Contribution Guidelines.](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/CONTRIBUTING.md) -->
**What happened?** _(Please give us a brief description of what happened.)_
# **What happened?**
<!-- Please give us a brief description of what happened. -->
**What did you expect to happen?** _(Please give us a brief description of what you expected to happen.)_
# **What did you expect to happen?**
<!-- Please give us a brief description of what you expected to happen. -->
**Version** _(What version of Sharkey is your instance running? You can find this by clicking your instance's logo at the top left and then clicking instance information.)_
# **Version**
<!-- What version of Sharkey is your instance running? You can find this by clicking your instance's logo at the top left and then clicking instance information. -->
**Instance** _(What instance of Sharkey are you using?)_
# **Instance**
<!-- What instance of Sharkey are you using? -->
**What type of issue is this?** _(If this happens on your device and has to do with the user interface, it's client-side. If this happens on either with the API or the backend, or you got a server-side error in the client, it's server-side.)_
# **What type of issue is this?**
<!-- If this happens on your device and has to do with the user interface, it's client-side. If this happens on either with the API or the backend, or you got a server-side error in the client, it's server-side. -->
**What browser are you using? (Client-side issues only)**
# **What browser are you using? (Client-side issues only)**
**What operating system are you using? (Client-side issues only)**
# **What operating system are you using? (Client-side issues only)**
**How do you deploy Sharkey on your server? (Server-side issues only)**
# **How do you deploy Sharkey on your server? (Server-side issues only)**
**What operating system are you using? (Server-side issues only)**
# **What operating system are you using? (Server-side issues only)**
**Relevant log output** _(Please copy and paste any relevant log output. You can find your log by inspecting the page, and going to the "console" tab. This will be automatically formatted into code, so no need for backticks.)_
# **Relevant log output**
<!-- Please copy and paste any relevant log output. You can find your log by inspecting the page, and going to the "console" tab. This will be automatically formatted into code, so no need for backticks. -->
**Contribution Guidelines**
# **Contribution Guidelines**
By submitting this issue, you agree to follow our [Contribution Guidelines](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/CONTRIBUTING.md)
- [ ] I agree to follow this project's Contribution Guidelines
- [ ] I have searched the issue tracker for similar issues, and this is not a duplicate.
🔒 Found a security vulnerability? [Please disclose it responsibly.](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/SECURITY.md)
🤝 By submitting this feature request, you agree to follow our [Contribution Guidelines.](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/CONTRIBUTING.md) -->
**What feature would you like implemented?** _(Please give us a brief description of what you'd like.)_
# **What feature would you like implemented?**
<!-- Please give us a brief description of what you'd like. -->
**Why should we add this feature?** _(Please give us a brief description of why your feature is important.)_
# **Why should we add this feature?**
<!-- Please give us a brief description of why your feature is important. -->
**Version** _(What version of Sharkey is your instance running? You can find this by clicking your instance's logo at the top left and then clicking instance information.)_
# **Version**
<!-- What version of Sharkey is your instance running? You can find this by clicking your instance's logo at the top left and then clicking instance information. -->
**Instance** _(What instance of Sharkey are you using?)_
# **Instance**
<!-- What instance of Sharkey are you using? -->
**Contribution Guidelines**
# **Contribution Guidelines**
By submitting this issue, you agree to follow our [Contribution Guidelines](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/CONTRIBUTING.md)
- [ ] I agree to follow this project's Contribution Guidelines
- [ ] I have searched the issue tracker for similar requests, and this is not a duplicate.
<!-- Thanks for taking the time to make Sharkey better! -->
**What does this PR do?** _(Please give us a brief description of what this PR does.)_
# **What does this MR do?**
<!-- Please give us a brief description of what this PR does. -->
**Contribution Guidelines**
%{all_commits}
# **Contribution Guidelines**
By submitting this merge request, you agree to follow our [Contribution Guidelines](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/CONTRIBUTING.md)
- [ ] I agree to follow this project's Contribution Guidelines
- [ ] I have made sure to test this pull request
- [ ] I have made sure to test this merge request
<!-- Uncomment if your merge request has multiple authors -->
@ -62,9 +62,29 @@ Thank you for your PR! Before creating a PR, please check the following:
Thanks for your cooperation 🤗
### Additional things for ActivityPub payload changes
*This section is specific to misskey-dev implementation. Other fork or implementation may take different way. A significant difference is that non-"misskey-dev" extension is not described in the misskey-hub's document.*
If PR includes changes to ActivityPub payload, please reflect it in [misskey-hub's document](https://github.com/misskey-dev/misskey-hub-next/blob/master/content/ns.md) by sending PR.
The name of purporsed extension property (referred as "extended property" in later) to ActivityPub shall be prefixed by `_misskey_`. (i.e. `_misskey_quote`)
The extended property in `packages/backend/src/core/activitypub/type.ts`**must** be declared as optional because ActivityPub payloads that comes from older Misskey or other implementation may not contain it.
The extended property must be included in the context definition. Context is defined in `packages/backend/src/core/activitypub/misc/contexts.ts`.
The key shall be same as the name of extended property, and the value shall be same as "short IRI".
"Short IRI" is defined in misskey-hub's document, but usually takes form of `misskey:<name of extended property>`. (i.e. `misskey:_misskey_quote`)
One should not add property that has defined before by other implementation, or add custom variant value to "well-known" property.
## Reviewers guide
Be willing to comment on the good points and not just the things you want fixed 💯
@ -79,6 +99,29 @@ Be willing to comment on the good points and not just the things you want fixed
- Are there any omissions or gaps?
- Does it check for anomalies?
## Security Advisory
### For reporter
Thank you for your reporting!
If you can also create a patch to fix the vulnerability, please create a PR on the private fork.
> [!note]
> There is a GitHub bug that prevents merging if a PR not following the develop branch of upstream, so please keep follow the develop branch.
### For misskey-dev member
修正PRがdevelopに追従されていないとマージできないので、マージできなかったら
> Could you merge or rebase onto upstream develop branch?
などと伝える。
## Deploy
The `/deploy` command by issue comment can be used to deploy the contents of a PR to the preview environment.
```
/deploy sha=<commithash>
```
An actual domain will be assigned so you can test the federation.
## Merge
## Release
@ -107,7 +150,8 @@ You can improve our translations with your Crowdin account.
Your changes in Crowdin are automatically submitted as a PR (with the title "New Crowdin translations") to the repository.
The owner [@syuilo](https://github.com/syuilo) merges the PR into the develop branch before the next release.
If your language is not listed in Crowdin, please open an issue.
If your language is not listed in Crowdin, please open an issue. We will add it to Crowdin.
For newly added languages, once the translation progress per language exceeds 70%, it will be officially introduced into Misskey and made available to users.
- Server-side source files and automatically builds them if they are modified. Automatically start the server process(es).
- Vite HMR (just the `vite` command) is available. The behavior may be different from production.
- Service Worker is watched by esbuild.
- The front end can be viewed by accessing `http://localhost:5173`.
- The backend listens on the port configured with `port` in .config/default.yml.
If you have not changed it from the default, it will be "http://localhost:3000".
If "port" in .config/default.yml is set to something other than 3000, you need to change the proxy settings in packages/frontend/vite.config.local-dev.ts.
### `MK_DEV_PREFER=backend pnpm dev`
pnpm dev has another mode with `MK_DEV_PREFER=backend`.
```
MK_DEV_PREFER=backend pnpm dev
```
- This mode is closer to the production environment than the default mode.
- Vite runs behind the backend (the backend will proxy Vite at /vite).
- Vite HMR (just the `vite` command) is available. The behavior may be different from production.
- Vite runs behind the backend (the backend will proxy Vite at /vite and /embed_vite except for websocket used for HMR).
- You can see Misskey by accessing `http://localhost:3000` (Replace `3000` with the port configured with `port` in .config/default.yml).
- To change the port of Vite, specify with `VITE_PORT` environment variable.
- HMR may not work in some environments such as Windows.
## Testing
- Test codes are located in [`/packages/backend/test`](packages/backend/test).
### Run test
Create a config file.
You can run non-backend tests by executing following commands:
```sh
pnpm --filter frontend test
pnpm --filter misskey-js test
```
cp .github/misskey/test.yml .config/
```
Prepare DB/Redis for testing.
Backend tests require manual preparation of servers. See the next section for more on this.
### Backend
There are three types of test codes for the backend:
- Unit tests: [`/packages/backend/test/unit`](/packages/backend/test/unit)
| `MemoryKVCache` | Key-Value | None | None | Caller | Single | Lifetime | Implements a basic in-memory Key-Value store. The implementation is entirely synchronous, except for user-provided data sources. |
| `MemorySingleCache` | Single | None | None | Caller | Single | Lifetime | Implements a basic in-memory Single Value store. The implementation is entirely synchronous, except for user-provided data sources. |
| `RedisKVCache` | Key-Value | Eventual | Redis | Callback | Single | Lifetime | Extends `MemoryKVCache` with Redis-backed persistence and a pre-defined callback data source. This provides eventual consistency guarantees based on the memory cache lifetime. |
| `RedisSingleCache` | Single | Eventual | Redis | Callback | Single | Lifetime | Extends `MemorySingleCache` with Redis-backed persistence and a pre-defined callback data source. This provides eventual consistency guarantees based on the memory cache lifetime. |
| `QuantumKVCache` | Key-Value | Immediate | None | Callback | Multiple | Lifetime | Combines `MemoryKVCache` with a pre-defined callback data source and immediate consistency via Redis sync events. The implementation offers multi-item batch overloads for efficient bulk operations. **This is the recommended cache implementation for most use cases.** |
Key-Value caches store multiple entries per cache, while Single caches store a single value that can be accessed directly.
Consistency refers to the consistency of cached data between different processes in the instance cluster: "None" means no consistency guarantees, "Eventual" caches will gradually become consistent after some unknown time, and "Immediate" consistency ensures accurate data ASAP after the update.
Caches with persistence can retain their data after a reboot through an external service such as Redis.
If a data source is supported, then this allows the cache to directly load missing data in response to a fetch.
"Caller" data sources are passed into the fetch method(s) directly, while "Callback" sources are passed in as a function when the cache is first initialized.
The cardinality of a cache refers to the number of items that can be updated in a single operation, and eviction, finally, is the method that the cache uses to evict stale data.
#### Selecting a cache implementation
For most cache uses, `QuantumKVCache` should be considered first.
It offers strong consistency guarantees, multiple cardinality, and a cleaner API surface than the older caches.
An alternate cache implementation should be considered if any of the following apply:
* The data is particularly slow to calculate or difficult to access. In these cases, either `RedisKVCache` or `RedisSingleCache` should be considered.
* If stale data is acceptable, then consider `MemoryKVCache` or `MemorySingleCache`. These synchronous implementations have much less overhead than the other options.
* There is only one data item, or all data items must be fetched together. Using `MemorySingleCache` or `RedisSingleCache` could provide a cleaner implementation without resorting to hacks like a fixed key.
## CSS Recipe
### Lighten CSS vars
``` css
color: hsl(from var(--accent) h s calc(l + 10));
color: hsl(from var(--MI_THEME-accent) h s calc(l + 10));
```
### Darken CSS vars
``` css
color: hsl(from var(--accent) h s calc(l - 10));
color: hsl(from var(--MI_THEME-accent) h s calc(l - 10));
```
### Add alpha to CSS vars
``` css
color: color(from var(--accent) srgb r g b / 0.5);
color: color(from var(--MI_THEME-accent) srgb r g b / 0.5);
```
## Merging from Misskey into Sharkey
@ -611,46 +688,44 @@ seems to do a decent job)
*after that commit*, do all the extra work, on the same branch:
* from `packages/backend/src/queue/processors/InboxProcessorService.ts` to `packages/backend/src/core/UpdateInstanceQueue.ts`, where `updateInstanceQueue` is impacted
* from `.config/example.yml` to `.config/ci.yml` and `chart/files/default.yml`
* in `packages/backend/src/core/MfmService.ts`, from `toHtml` to `toMastoApiHtml`
* from `verifyLink` in `packages/backend/src/core/activitypub/models/ApPersonService.ts` to `verifyFieldLinks` in `packages/backend/src/misc/verify-field-link.ts` (if sensible)
* if there have been any changes to the federated user data (the `renderPerson` function in `packages/backend/src/core/activitypub/ApRendererService.ts`), make sure that the set of fields in `userNeedsPublishing` and `profileNeedsPublishing` in `packages/backend/src/server/api/endpoints/i/update.ts` are still correct.
* check the changes against our `develop` (`git diff develop`) and against Misskey (`git diff misskey/develop`)
* re-generate `misskey-js` (`pnpm build-misskey-js-with-types`) and commit
* build the frontend: `rm -rf built/; NODE_ENV=development pnpm
--filter=frontend --filter=frontend-embed build` (the `development`
tells it to keep some of the original filenames in the built files)
* make sure there aren't any new `ti-*` classes (Tabler Icons), and
replace them with appropriate `ph-*` ones (Phosphor Icons):
`grep -rP '["'\'']ti[ -](?!fw)' -- built/` should show you what to change.
NOTE: `ti-fw` is a special class that's defined by Misskey, leave it
alone
after every change, re-build the frontend and check again, until
there are no more `ti-*` classes in the built files
commit!
* double-check the new migration, that they won't conflict with our db
* re-generate locales (`pnpm run build-assets`) and commit
* build the frontend: `rm -rf built/; NODE_ENV=development pnpm --filter=frontend --filter=frontend-embed --filter=frontend-shared build` (the `development` tells it to keep some of the original filenames in the built files)
* make sure there aren't any new `ti-*` classes (Tabler Icons), and replace them with appropriate `ph-*` ones (Phosphor Icons) in [`vite.replaceicons.ts`](packages/frontend/vite.replaceIcons.ts).
* This command should show you want to change: `grep -ohrP '(?<=["'\''](ti )?)(ti-(?!fw)[\w\-]+)' --exclude \*.map -- built/ | sort -u`.
* NOTE: `ti-fw` is a special class that's defined by Misskey, leave it alone.
* After every change, re-build the frontend and check again, until there are no more `ti-*` classes in the built files.
* Commit!
* double-check the new migration, that they won't conflict with our db changes: `git diff develop -- packages/backend/migration/`
* `pnpm clean; pnpm build`
* run tests `pnpm --filter='!megalodon' test` (requires a test
database, [see above](#testing)) and fix as much as you can
* right now `megalodon` doesn't pass its tests, so we skip them
* run lint `pnpm --filter=backend lint` + `pnpm --filter=frontend
eslint` and fix as much as you can
* run tests `pnpm test; pnpm --filter backend test:e2e` (requires a test database, [see above](#testing)) and fix as much as you can.
* run lint `pnpm --filter=backend --filter=frontend-shared lint` + `pnpm --filter=frontend --filter=frontend-embed eslint` and fix as much as you can.
Barkey is Sharkey with a few minor tweaks. It was created as a personal project so that I can learn some development fundamentals, and is used in production on [yeentown](https://yeen.town). For several reasons, I **highly encourage** you to use Sharkey instead of this fork.
> ⚠️ I have temporarily stopped creating arm64 images due to the ridiculous time it takes to build in QEMU. These will be back in the future when I am able to set up an arm64 node. If you require arm builds, please build from source for the time being. Thank you for your understanding.
@ -7,3 +7,15 @@ This will allow us to assess the risk, and make a fix available before we add a
bug report to the GitLab repository.
Thanks for helping make Sharkey safe for everyone.
> [!note]
> CNA [requires](https://www.cve.org/ResourcesSupport/AllResources/CNARules#section_5-2_Description) that CVEs include a description in English for inclusion in the CVE Catalog.
>
> When creating a security advisory, all content must be written in English (it is acceptable to include a non-English description along with the English one).
## When create a patch
If you can also create a patch to fix the vulnerability, please create a PR on the private fork.
> [!note]
> There is a GitHub bug that prevents merging if a PR not following the develop branch of upstream, so please keep follow the develop branch.
This version retires the configuration entry `checkActivityPubGetSignature`, which is now replaced with the new "Authorized Fetch" settings under Control Panel/Security.
The database migrations will automatically import the value of this configuration file, but it will never be read again after upgrading.
To avoid confusion and possible mis-configuration, please remove the entry **after** completing the upgrade.
Do not remove it before migration, or else the setting will reset to default (disabled)!
## 2024.10.0
### Hellspawns
Sharkey versions before 2024.10 suffered from a bug in the "Mark instance as NSFW" feature.
When a user from such an instance boosted a note, the boost would be converted to a hellspawn (pure renote with Content Warning).
Hellspawns are buggy and do not properly federate, so it may be desirable to correct any that already exist in the database.
The following script will correct any local or remote hellspawns in the database.
```postgresql
/* Remove "instance is marked as NSFW" hellspawns */
@ -252,7 +252,6 @@ removeAreYouSure: "আপনি কি \"{x}\" সরানোর ব্যা
deleteAreYouSure:"আপনি কি \"{x}\" সরানোর ব্যাপারে নিশ্চিত?"
resetAreYouSure:"রিসেট করার ব্যাপারে নিশ্চিত?"
saved:"সংরক্ষিত হয়েছে"
messaging:"চ্যাট"
upload:"আপলোড"
keepOriginalUploading:"আসল ছবি রাখুন"
keepOriginalUploadingDescription:"ছবিটি আপলোড করার সময় আসল সংস্করণটি রাখুন। অপশনটি বন্ধ থাকলে, আপলোডের সময় ওয়েব প্রকাশনার জন্য ছবি ব্রাউজারে তৈরি করা হবে।"
@ -265,7 +264,6 @@ uploadFromUrlMayTakeTime: "URL হতে আপলোড হতে কিছু
@ -5,9 +5,13 @@ introMisskey: "¡Bienvenido/a! Misskey es un servicio de microblogging descentra
poweredByMisskeyDescription:"{name} es uno de los servicios (también llamado instancia) que usa la plataforma de código abierto <b>Misskey</b>"
monthAndDay:"{day}/{month}"
search:"Buscar"
reset:"Reiniciar"
notifications:"Notificaciones"
username:"Nombre de usuario"
password:"Contraseña"
initialPasswordForSetup:"Contraseña para iniciar la inicialización"
initialPasswordIsIncorrect:"La contraseña para iniciar la configuración inicial es incorrecta."
initialPasswordForSetupDescription:"Si ha instalado Misskey usted mismo, utilice la contraseña introducida en el archivo de configuración.\nSi utiliza un servicio de alojamiento de Misskey o similar, utilice la contraseña proporcionada.\nSi no ha establecido una contraseña, déjela en blanco para continuar."
forgotPassword:"Olvidé mi contraseña"
fetchingAsApObject:"Buscando en el fediverso"
ok:"OK"
@ -45,6 +49,7 @@ pin: "Fijar al perfil"
unpin:"Desfijar"
copyContent:"Copiar contenido"
copyLink:"Copiar enlace"
copyRemoteLink:"Copiar enlace remoto"
copyLinkRenote:"Copiar enlace de renota"
delete:"Borrar"
deleteAndEdit:"Borrar y editar"
@ -196,6 +201,7 @@ followConfirm: "¿Desea seguir a {name}?"
proxyAccount:"Cuenta proxy"
proxyAccountDescription:"Una cuenta proxy es una cuenta que actúa como un seguidor remoto de un usuario bajo ciertas condiciones. Por ejemplo, cuando un usuario añade un usuario remoto a una lista, si ningún usuario local sigue al usuario agregado a la lista, la instancia no puede obtener su actividad. Así que la cuenta proxy sigue al usuario añadido a la lista"
host:"Host"
selectSelf:"Elígete a ti mismo"
selectUser:"Elegir usuario"
recipient:"Recipiente"
annotation:"Anotación"
@ -211,6 +217,7 @@ perDay: "por día"
stopActivityDelivery:"Dejar de enviar actividades"
blockThisInstance:"Bloquear instancia"
silenceThisInstance:"Silenciar esta instancia"
mediaSilenceThisInstance:"Silencia la Multimedia(Imágenes,videos...) para este servidor"
blockedInstancesDescription:"Seleccione los hosts de las instancias que desea bloquear, separadas por una linea nueva. Las instancias bloqueadas no podrán comunicarse con esta instancia."
silencedInstances:"Instancias silenciadas"
silencedInstancesDescription:"Listar los hostname de las instancias que quieres silenciar. Todas las cuentas de las instancias listadas serán tratadas como silenciadas, solo podrán hacer peticiones de seguimiento, y no podrán mencionar cuentas locales si no las siguen. Esto no afecta a las instancias bloqueadas."
mediaSilencedInstancesDescription:"Listar las instancias que quieres silenciar. Todas las cuentas de las instancias listadas serán tratadas como silenciadas, solo podrán hacer peticiones de seguimiento, y no podrán mencionar cuentas locales si no las siguen. Esto no afecta a las instancias bloqueadas."
federationAllowedHosts:"Servidores federados"
federationAllowedHostsDescription:"Establezca los nombres de los servidores que pueden federarse, separados por una nueva línea."
keepOriginalUploading:"Mantener la imagen original"
keepOriginalUploadingDescription:"Mantener la versión original al cargar imágenes. Si está desactivado, el navegador generará imágenes para la publicación web en el momento de recargar la página"
@ -291,7 +301,7 @@ uploadFromUrlMayTakeTime: "Subir el fichero puede tardar un tiempo."
useSoundOnlyWhenActive:"Sonar solo cuando Misskey esté activo"
details:"Detalles"
renoteDetails:"Detalles(Renota)"
chooseEmoji:"Elije un emoji"
unableToProcess:"La operación no se puede llevar a cabo"
recentUsed:"Usado recientemente"
@ -584,6 +602,8 @@ ascendingOrder: "Ascendente"
descendingOrder:"Descendente"
scratchpad:"Scratch pad"
scratchpadDescription:"Scratchpad proporciona un entorno experimental para AiScript. Puede escribir, ejecutar y verificar los resultados que interactúan con Misskey."
uiInspector:"Inspector de UI"
uiInspectorDescription:"Puedes visualizar una lista de elementos UI presentes en la memoria. Los componentes de la interfaz de usuario son generados por las funciones UI:C:"
output:"Salida"
script:"Script"
disablePagesScript:"Deshabilitar AiScript en Páginas"
@ -664,14 +684,19 @@ smtpSecure: "Usar SSL/TLS implícito en la conexión SMTP"
smtpSecureInfo:"Apagar cuando se use STARTTLS"
testEmail:"Prueba de envío"
wordMute:"Silenciar palabras"
wordMuteDescription:"Minimiza las notas que contienen la palabra o frase especificada. Las notas minimizadas pueden visualizarse haciendo clic sobre ellas."
hardWordMute:"Filtro de palabra fuerte"
showMutedWord:"Mostrar palabras silenciadas."
hardWordMuteDescription:"Oculta las notas que contienen la palabra o frase especificada. A diferencia de Silenciar palabra, la nota quedará completamente oculta a la vista."
regexpError:"Error de la expresión regular"
regexpErrorDescription:"Ocurrió un error en la expresión regular en la linea {line} de las palabras muteadas {tab}"
instanceMute:"Instancias silenciadas"
userSaysSomething:"{name} dijo algo"
userSaysSomethingAbout:"{name} dijo algo sobre {word}"
makeActive:"Activar"
display:"Apariencia"
copy:"Copiar"
copiedToClipboard:"Texto copiado al portapapeles"
metrics:"Métricas"
overview:"Resumen"
logs:"Registros"
@ -837,6 +862,7 @@ administration: "Administrar"
accounts:"Cuentas"
switch:"Cambiar"
noMaintainerInformationWarning:"No se ha establecido la información del administrador"
noInquiryUrlWarning:"No se ha guardado la URL de consulta."
noBotProtectionWarning:"La protección contra los bots no está configurada"
configure:"Configurar"
postToGallery:"Crear una nueva publicación en la galería"
@ -901,6 +927,7 @@ followersVisibility: "Visibilidad de seguidores"
continueThread:"Ver la continuación del hilo"
deleteAccountConfirm:"La cuenta será borrada. ¿Está seguro?"
incorrectPassword:"La contraseña es incorrecta"
incorrectTotp:"La contraseña de un solo uso es incorrecta o ha caducado."
voteConfirm:"¿Confirma su voto a {choice}?"
hide:"Ocultar"
useDrawerReactionPickerForMobile:"Mostrar panel de reacciones en móviles"
@ -925,6 +952,9 @@ oneHour: "1 hora"
oneDay:"1 día"
oneWeek:"1 semana"
oneMonth:"1 mes"
threeMonths:"Tres meses"
oneYear:"Un año"
threeDays:"Tres días"
reflectMayTakeTime:"Puede pasar un tiempo hasta que se reflejen los cambios"
failedToFetchAccountInformation:"No se pudo obtener información de la cuenta"
rateLimitExceeded:"Se excedió el límite de peticiones"
@ -949,6 +979,7 @@ document: "Documento"
numberOfPageCache:"Cantidad de páginas cacheadas"
numberOfPageCacheDescription:"Al aumentar el número mejora la conveniencia pero tambien puede aumentar la carga y la memoria a usarse"
logoutConfirm:"¿Cerrar sesión?"
logoutWillClearClientData:"Al cerrar la sesión, la información de configuración del cliente se borra del navegador. Para garantizar que la información de configuración se pueda restaurar al volver a iniciar sesión, active la copia de seguridad automática de la configuración."
lastActiveDate:"Utilizado por última vez el"
statusbar:"Barra de estado"
pleaseSelect:"Selecciona una opción"
@ -1026,6 +1057,7 @@ thisPostMayBeAnnoyingHome: "Publicar en línea de tiempo 'Inicio'"
thisPostMayBeAnnoyingCancel:"detener"
thisPostMayBeAnnoyingIgnore:"Publicar de todos modos"
collapseRenotes:"Colapsar renotas que ya hayas visto"
collapseRenotesDescription:"Contrae notas a las que ya has reaccionado o renotado "
internalServerError:"Error interno del servidor"
internalServerErrorDescription:"El servidor tuvo un error inesperado."
copyErrorInfo:"Copiar detalles del error"
@ -1043,7 +1075,7 @@ reactionAcceptance: "Aceptación de reacciones"
likeOnly:"Sólo 'me gusta'"
likeOnlyForRemote:"Sólo reacciones de instancias remotas"
nonSensitiveOnly:"Solo no sensible"
nonSensitiveOnlyForLocalLikeOnlyForRemote:"Sólo no contenido sensible (sólo me gusta en remote)"
nonSensitiveOnlyForLocalLikeOnlyForRemote:"Sólo no contenido sensible (sólo me gusta en remoto)"
rolesAssignedToMe:"Roles asignados a mí"
resetPasswordConfirm:"¿Realmente quieres cambiar la contraseña?"
sensitiveWords:"Palabras sensibles"
@ -1064,6 +1096,7 @@ retryAllQueuesConfirmTitle: "Desea ¿reintentar inmediatamente todas las colas?"
retryAllQueuesConfirmText:"La carga del servidor está incrementándose temporalmente "
enableChartsForRemoteUser:"Generar gráficas de usuarios remotos."
enableChartsForFederatedInstances:"Generar gráficos de servidores remotos"
enableStatsForFederatedInstances:"Activar las estadísticas de las instancias remotas federadas"
showClipButtonInNoteFooter:"Añadir \"Clip\" al menú de notas"
reactionsDisplaySize:"Tamaño de las reacciones"
limitWidthOfReaction:"Limitar ancho de las reacciones"
@ -1111,6 +1144,9 @@ preventAiLearning: "Rechazar el uso en el Aprendizaje de Máquinas. (IA Generati
preventAiLearningDescription:"Pedirle a las arañas (crawlers) no usar los textos publicados o imágenes en el aprendizaje automático (IA Predictiva / Generativa). Ésto se logra añadiendo una marca respuesta HTML con la cadena \"noai\" al cantenido. Una prevención total no podría lograrse sólo usando ésta marca, ya que puede ser simplemente ignorada."
options:"Opción"
specifyUser:"Especificar usuario"
lookupConfirm:"¿Quiere informarse?"
openTagPageConfirm:"¿Quieres abrir la página de etiquetas?"
specifyHost:"Especificar Host"
failedToPreviewUrl:"No se pudo generar la vista previa"
update:"Actualizar"
rolesThatCanBeUsedThisEmojiAsReaction:"Roles que pueden usar este emoji como reacción"
@ -1238,8 +1274,149 @@ useBackupCode: "Usar códigos de respaldo"
launchApp:"Ejecutar la app"
useNativeUIForVideoAudioPlayer:"Usar la interfaz del navegador cuando se reproduce audio y vídeo"
keepOriginalFilename:"Mantener el nombre original del archivo"
keepOriginalFilenameDescription:"Si desactivas esta opción, los nombres de los archivos serán remplazados por una cadena de caracteres aleatoria cuando subas los archivos."
noDescription:"No hay descripción"
alwaysConfirmFollow:"Confirmar siempre cuando se sigue a alguien"
inquiry:"Contacto"
tryAgain:"Por favor , inténtalo de nuevo"
confirmWhenRevealingSensitiveMedia:"Confirmación cuando se revele contenido sensible"
sensitiveMediaRevealConfirm:"Esto puede contener contenido sensible. ¿Estás seguro/a de querer mostrarlo?"
createdLists:"Listas creadas"
createdAntennas:"Antenas creadas"
fromX:"De {x}"
genEmbedCode:"Obtener el código para incrustar"
noteOfThisUser:"Notas de este usuario"
clipNoteLimitExceeded:"No se pueden añadir más notas a este clip."
performance:"Rendimiento"
modified:"Modificado"
discard:"Descartar"
thereAreNChanges:"Hay {n} cambio(s)"
signinWithPasskey:"Iniciar sesión con clave de acceso"
unknownWebAuthnKey:"Esto no se ha registrado llave maestra."
passkeyVerificationFailed:"La verificación de la clave de acceso ha fallado."
passkeyVerificationSucceededButPasswordlessLoginDisabled:"La verificación de la clave de acceso ha sido satisfactoria pero se ha deshabilitado el inicio de sesión sin contraseña."
messageToFollower:"Mensaje a seguidores"
target:"Para"
testCaptchaWarning:"Esta función está pensada para probar CAPTCHAs.<strong>No utilizar en un entorno de producción.</strong>"
prohibitedWordsForNameOfUser:"Palabras prohibidas para nombres de usuario"
prohibitedWordsForNameOfUserDescription:"Si alguna de las cadenas de esta lista está incluida en el nombre del usuario, el nombre será denegado. Los usuarios con privilegios de moderador no se ven afectados por esta restricción."
yourNameContainsProhibitedWords:"Tu nombre contiene palabras prohibidas"
yourNameContainsProhibitedWordsDescription:"Si deseas usar este nombre, por favor contacta con tu administrador/a de tu servidor"
thisContentsAreMarkedAsSigninRequiredByAuthor:" Establecido por el autor: requiere iniciar sesión para ver"
lockdown:"Bloqueo"
pleaseSelectAccount:"Seleccione una cuenta, por favor."
availableRoles:"Roles disponibles "
acknowledgeNotesAndEnable:"Activar después de comprender las precauciones"
federationSpecified:"Este servidor opera en una federación de listas blancas. No puede interactuar con otros servidores que no sean los especificados por el administrador."
federationDisabled:"La federación está desactivada en este servidor. No puede interactuar con usuarios de otros servidores"
confirmOnReact:"Confirmar la reacción"
reactAreYouSure:"¿Quieres añadir una reacción «{emoji}»?"
markAsSensitiveConfirm:"¿Desea establecer este medio multimedia(Imagen,vídeo...) como sensible?"
unmarkAsSensitiveConfirm:"¿Desea eliminar la designación de sensible para este adjunto?"
preferences:"Preferencias"
accessibility:"Accesibilidad"
preferencesProfile:"Configuración del perfil"
copyPreferenceId:"Copiar ID de la configuración"
resetToDefaultValue:"Revertir a valor predeterminado"
overrideByAccount:"Anulado por la cuenta"
untitled:"Sin título"
noName:"No hay nombre."
skip:"Saltar"
restore:"Restaurar"
syncBetweenDevices:"Sincronizar entre dispositivos"
preferenceSyncConflictTitle:"Los valores configurados existen en el servidor."
preferenceSyncConflictText:"Los ajustes de sincronización activados guardarán sus valores en el servidor. Sin embargo, hay valores existentes en el servidor. ¿Qué conjunto de valores desea sobrescribir?"
preferenceSyncConflictChoiceServer:"Valores de configuración del servidor"
preferenceSyncConflictChoiceDevice:"Valor configurado en el dispositivo"
paste:"Pegar"
emojiPalette:"Paleta emoji"
postForm:"Formulario"
information:"Información"
chat:"Chat"
migrateOldSettings:"Migrar la configuración anterior"
right:"Derecha"
bottom:"Abajo"
top:"Arriba"
embed:"Insertar"
settingsMigrating:"La configuración está siendo migrada, por favor espera un momento... (También puedes migrar manualmente más tarde yendo a Ajustes otros migrar configuración antigua"
readonly:"Solo Lectura"
goToDeck:"Volver al Deck"
federationJobs:"Trabajos de Federación"
_chat:
noMessagesYet:"Aún no hay mensajes"
newMessage:"Mensajes nuevos"
individualChat:"Chat individual"
individualChat_description:"Mantén una conversación privada con otra persona."
roomChat:"Sala de Chat"
roomChat_description:"Una sala de chat que puede tener varias personas.\nTambién puedes invitar a personas que no permiten chats privados si aceptan la invitación."
createRoom:"Crear sala"
inviteUserToChat:"Invitar usuarios para empezar a chatear"
yourRooms:"Salas creadas"
joiningRooms:"Salas que te has unido"
invitations:"Invitar"
noInvitations:"No hay invitación."
history:"Historial"
noHistory:"No hay datos en el historial"
noRooms:"Sala no encontrada"
inviteUser:"Invitar usuarios"
sentInvitations:"Invitaciones enviadas"
join:"Unirse"
ignore:"Ignorar"
leave:"Dejar sala"
members:"Miembros"
searchMessages:"Buscar mensajes"
home:"Inicio"
send:"Enviar"
newline:"Nueva línea"
muteThisRoom:"Silenciar esta sala"
deleteRoom:"Borrar sala"
chatNotAvailableForThisAccountOrServer:"El chat no está habilitado en este servidor ni para esta cuenta."
chatIsReadOnlyForThisAccountOrServer:"El chat es de sólo lectura en esta instancia o esta cuenta. No puedes escribir nuevos mensajes ni crear/unirte a salas de chat."
chatNotAvailableInOtherAccount:"La función de chat está desactivada para el otro usuario."
cannotChatWithTheUser:"No se puede iniciar un chat con este usuario"
cannotChatWithTheUser_description:"El chat no está disponible o la otra parte no ha habilitado el chat."
chatWithThisUser:"Chatear"
thisUserAllowsChatOnlyFromFollowers:"Este usuario sólo acepta chats de seguidores."
thisUserAllowsChatOnlyFromFollowing:"Este usuario sólo acepta chats de los usuarios a los que sigue."
thisUserAllowsChatOnlyFromMutualFollowing:"Este usuario sólo acepta chats de usuarios que son seguidores mutuos."
thisUserNotAllowedChatAnyone:"Este usuario no acepta chats de nadie."
chatAllowedUsers:"A quién permitir chatear."
chatAllowedUsers_note:"Puedes chatear con cualquier persona a la que hayas enviado un mensaje de chat, independientemente de esta configuración."
_chatAllowedUsers:
everyone:"Todos"
followers:"Sólo sus propios seguidores."
following:"Solo usuarios que sigues"
mutual:"Solo seguidores mutuos"
none:"Nadie"
_emojiPalette:
palettes:"Paleta\n"
enableSyncBetweenDevicesForPalettes:"Activar la sincronización de paletas entre dispositivos"
_settings:
api:"API"
webhook:"Webhook"
timelineAndNote:"Líneas del tiempo y notas"
makeEveryTextElementsSelectable_description:"Activar esta opción puede reducir la usabilidad en algunas situaciones."
useStickyIcons:"Hacer que los iconos te sigan cuando desplaces"
showNavbarSubButtons:"Mostrar los sub-botones en la barra de navegación."
ifOn:"Si está activado"
enableSyncThemesBetweenDevices:"Sincronizar los temas instalados entre dispositivos."
_chat:
showSenderName:"Mostrar el nombre del remitente"
sendOnEnter:"Intro para enviar"
_preferencesProfile:
profileName:"Nombre de perfil"
profileNameDescription:"Establece un nombre que identifique al dispositivo"
restoreFromBackup:"Restaurar desde copia de seguridad"
noBackupsFoundTitle:"No se encontró una copia de seguridad"
_accountSettings:
requireSigninToViewContents:"Se requiere iniciar sesión para ver el contenido"
requireSigninToViewContentsDescription1:"Requiere iniciar sesión para ver todas las notas y otros contenidos que hayas creado. Se espera que esto evite que los rastreadores recopilen información."
_abuseUserReport:
accept:"Acepte"
reject:"repudio"
_delivery:
stop:"Suspendido"
_type:
@ -1893,7 +2070,6 @@ _theme:
header:"Cabezal"
navBg:"Fondo de la barra lateral"
navFg:"Texto de la barra lateral"
navHoverFg:"Texto de la barra lateral (hover)"
navActive:"Texto de la barra lateral (activo)"
navIndicator:"Indicador de la barra lateral"
link:"Vínculo"
@ -1916,11 +2092,8 @@ _theme:
buttonHoverBg:"Fondo de botón (hover)"
inputBorder:"Borde de los campos de entrada"
driveFolderBg:"Fondo de capeta del drive"
wallpaperOverlay:"Transparencia del fondo de pantalla"
badge:"Medalla"
messageBg:"Fondo de chat"
accentDarken:"Acento (oscuro)"
accentLighten:"Acento (claro)"
fgHighlighted:"Texto resaltado"
_sfx:
note:"Notas"
@ -2072,6 +2245,7 @@ _permissions:
"read:clip-favorite": "Ver los clips que me gustan"
"read:federation": "Ver instancias federadas"
"write:report-abuse": "Crear reportes de usuario"
"write:chat": "Administrar chat"
_auth:
shareAccessTitle:"Permisos de la aplicación"
shareAccess:"¿Desea permitir el acceso a la cuenta \"{name}\"?"
@ -2127,6 +2301,7 @@ _widgets:
chooseList:"Seleccione una lista"
clicker:"Cliqueador"
birthdayFollowings:"Hoy cumplen años"
chat:"Chat"
_cw:
hide:"Ocultar"
show:"Ver más"
@ -2252,9 +2427,6 @@ _pages:
newPage:"Crear página"
editPage:"Editar página"
readPage:"Viendo la fuente"
created:"La página fue creada"
updated:"La página fue actualizada"
deleted:"La página borrada"
pageSetting:"Configurar página"
nameAlreadyExists:"La URL de la página especificada ya existe"
invalidNameTitle:"URL inválida"
@ -2340,6 +2512,7 @@ _notification:
roleAssigned:"Rol asignado"
achievementEarned:"Logro desbloqueado"
login:"Iniciar sesión"
test:"Pruebas de nofiticaciones"
app:"Notificaciones desde aplicaciones"
_actions:
followBack:"Te sigue de vuelta"
@ -2376,6 +2549,7 @@ _deck:
mentions:"Menciones"
direct:"Notas directas"
roleTimeline:"Linea de tiempo del rol"
chat:"Chat"
_dialog:
charactersExceeded:"¡Has excedido el límite de caracteres! Actualmente {current} de {max}."
charactersBelow:"¡Estás por debajo del límite de caracteres! Actualmente {current} de {min}."
@ -2398,6 +2572,8 @@ _webhookSettings:
renote:"Cuando reciba un \"re-note\""
reaction:"Cuando se recibe una reacción"
mention:"Cuando hay una mención"
_systemEvents:
userCreated:"Cuando se crea el usuario."
_abuseReport:
_notificationRecipient:
_recipientType:
@ -2453,10 +2629,8 @@ _externalResourceInstaller:
checkVendorBeforeInstall:"Asegúrate de que el distribuidor de este recurso es de confianza antes de proceder a la instalación."
initialPasswordForSetup:"Mot de passe initial pour la configuration"
initialPasswordIsIncorrect:"Mot de passe initial pour la configuration est incorrecte"
initialPasswordForSetupDescription:"Utilisez le mot de passe que vous avez entré pour le fichier de configuration si vous avez installé Misskey vous-même.\nSi vous utilisez un service d'hébergement Misskey, utilisez le mot de passe fourni.\nSi vous n'avez pas défini de mot de passe, laissez le champ vide pour continuer."
forgotPassword:"Mot de passe oublié"
fetchingAsApObject:"Récupération depuis le fédiverse …"
ok:"OK"
@ -60,6 +63,7 @@ copyFileId: "Copier l'identifiant du fichier"
copyFolderId:"Copier l'identifiant du dossier"
copyProfileUrl:"Copier l'URL du profil"
searchUser:"Chercher un·e utilisateur·rice"
searchThisUsersNotes:"Cherchez les notes de cet·te utilisateur·rice"
reply:"Répondre"
loadMore:"Afficher plus …"
showMore:"Voir plus"
@ -108,6 +112,7 @@ enterEmoji: "Insérer un émoji"
renote:"Renoter"
unrenote:"Annuler la Renote"
renoted:"Renoté !"
renotedToX:"Renoté en {name}"
cantRenote:"Ce message ne peut pas être renoté."
cantReRenote:"Impossible de renoter une Renote."
quote:"Citer"
@ -151,6 +156,7 @@ editList: "Modifier la liste"
selectChannel:"Sélectionner un canal"
selectAntenna:"Sélectionner une antenne"
editAntenna:"Modifier l'antenne"
createAntenna:"Créer une antenne"
selectWidget:"Sélectionner un widget"
editWidgets:"Modifier les widgets"
editWidgetsExit:"Valider les modifications"
@ -177,6 +183,7 @@ addAccount: "Ajouter un compte"
reloadAccountsList:"Rafraichir la liste des comptes"
loginFailed:"Échec de la connexion"
showOnRemote:"Voir sur l’instance distante"
continueOnRemote:"Continuer sur l'instance distante"
proxyAccountDescription:"Un compte proxy se comporte, dans certaines conditions, comme un·e abonné·e distant·e pour les utilisateurs d'autres instances. Par exemple, quand un·e utilisateur·rice ajoute un·e utilisateur·rice distant·e à une liste, ses notes ne seront pas visibles sur l'instance si personne ne suit cet·te utilisateur·rice. Le compte proxy va donc suivre cet·te utilisateur·rice pour que ses notes soient acheminées."
keepOriginalUploadingDescription:"Conserve la version originale lors du téléchargement d'images. S'il est désactivé, le navigateur génère l'image pour la publication web lors du téléchargement."
@ -282,7 +289,6 @@ uploadFromUrlMayTakeTime: "Le téléversement de votre fichier peut prendre un c
explore:"Découvrir"
messageRead:"Lu"
noMoreHistory:"Il n’y a plus d’historique"
startMessaging:"Commencer à discuter"
nUsersRead:"Lu par {n} personnes"
agreeTo:"J’accepte {0}"
agree:"Accepter"
@ -320,6 +326,7 @@ renameFolder: "Renommer le dossier"
deleteFolder:"Supprimer le dossier"
folder:"Dossier"
addFile:"Ajouter un fichier"
showFile:"Voir les fichiers"
emptyDrive:"Le Disque est vide"
emptyFolder:"Le dossier est vide"
unableToDelete:"Suppression impossible"
@ -362,7 +369,6 @@ enableLocalTimeline: "Activer le fil local"
enableGlobalTimeline:"Activer le fil global"
disablingTimelinesInfo:"Même si vous désactivez ces fils, les administrateur·rice·s et les modérateur·rice·s pourront toujours y accéder."
registration:"S’inscrire"
enableRegistration:"Autoriser les nouvelles inscriptions"
invite:"Inviter"
driveCapacityPerLocalAccount:"Capacité de stockage du Disque par utilisateur local"
driveCapacityPerRemoteAccount:"Capacité de stockage du Disque par utilisateur distant"
@ -430,10 +436,11 @@ token: "Jeton"
2fa:"Authentification à deux facteurs"
setupOf2fa:"Configuration de l’authentification à deux facteurs"
totp:"Application d'authentification"
totpDescription:"Entrez un mot de passe à usage unique à l'aide d'une application d'authentification"
totpDescription:"Entrer un mot de passe à usage unique à l'aide d'une application d'authentification"
moderator:"Modérateur·rice·s"
moderation:"Modérations"
moderationNote:"Note de modération"
moderationNoteDescription:"Vous pouvez remplir des notes qui seront partagés seulement entre modérateurs."
addModerationNote:"Ajouter une note de modération"
quoteQuestion:"Souhaitez-vous ajouter une citation ?"
noMessagesYet:"Pas encore de discussion"
newMessageExists:"Vous avez un nouveau message"
onlyOneFileCanBeAttached:"Vous ne pouvez joindre qu’un seul fichier au message"
signinRequired:"Veuillez vous connecter"
invitations:"Invitations"
@ -493,6 +498,10 @@ uiLanguage: "Langue d’affichage de l’interface"
aboutX:"À propos de {x}"
emojiStyle:"Style des émojis"
native:"Natif"
menuStyle:"Style du menu"
style:"Style"
drawer:"Sélecteur"
popup:"Pop-up"
showNoteActionsOnlyHover:"Afficher les actions de note uniquement au survol"
showReactionsCount:"Afficher le nombre de réactions des notes"
noHistory:"Pas d'historique"
@ -575,6 +584,7 @@ ascendingOrder: "Ascendant"
descendingOrder:"Descendant"
scratchpad:"ScratchPad"
scratchpadDescription:"ScratchPad fournit un environnement expérimental pour AiScript. Vous pouvez vérifier la rédaction de votre code, sa bonne exécution et le résultat de son interaction avec Misskey."
uiInspector:"Inspecteur UI"
output:"Sortie"
script:"Script"
disablePagesScript:"Désactiver AiScript sur les Pages"
@ -618,7 +628,7 @@ description: "Description"
describeFile:"Ajouter une description d'image"
enterFileDescription:"Saisissez une description"
author:"Auteur·rice"
leaveConfirm:"Vous avez des modifications non-sauvegardées. Voulez-vous les ignorer ?"
leaveConfirm:"Vous avez des modifications nonsauvegardées. Voulez-vous les ignorer ?"
manage:"Gestion"
plugins:"Extensions"
preferencesBackups:"Sauvegarder les paramètres"
@ -828,6 +838,7 @@ administration: "Gestion"
accounts:"Comptes"
switch:"Remplacer"
noMaintainerInformationWarning:"Informations administrateur non configurées."
noInquiryUrlWarning:"L'URL demandé n'est pas définie"
noBotProtectionWarning:"La protection contre les bots n'est pas configurée."
configure:"Configurer"
postToGallery:"Publier dans la galerie"
@ -892,6 +903,7 @@ followersVisibility: "Visibilité des abonnés"
continueThread:"Afficher la suite du fil"
deleteAccountConfirm:"Votre compte sera supprimé. Êtes vous certain ?"
incorrectPassword:"Le mot de passe est incorrect."
incorrectTotp:"Le mot de passe à usage unique est incorrect ou a expiré."
voteConfirm:"Confirmez-vous votre vote pour « {choice} » ?"
hide:"Masquer"
useDrawerReactionPickerForMobile:"Afficher le sélecteur de réactions en tant que panneau sur mobile"
@ -916,6 +928,9 @@ oneHour: "1 heure"
oneDay:"1 jour"
oneWeek:"1 semaine"
oneMonth:"Un mois"
threeMonths:"3 mois"
oneYear:"1 an"
threeDays:"3 jours"
reflectMayTakeTime:"Cela peut prendre un certain temps avant que cela ne se termine."
failedToFetchAccountInformation:"Impossible de récupérer les informations du compte."
rateLimitExceeded:"Limite de taux dépassée"
@ -923,7 +938,7 @@ cropImage: "Recadrer l'image"
cropImageAsk:"Voulez-vous recadrer cette image ?"
cropYes:"Rogner"
cropNo:"Utiliser en l'état"
file:"Fichiers"
file:"Fichier"
recentNHours:"Dernières {n} heures"
recentNDays:"Derniers {n} jours"
noEmailServerWarning:"Serveur de courrier non configuré."
preventAiLearningDescription:"Demander aux robots d'indexation de ne pas utiliser le contenu publié, tel que les notes et les images, dans l'apprentissage automatique d'IA générative. Cela est réalisé en incluant le drapeau « noai » dans la réponse HTML. Une prévention complète n'est toutefois pas possible, car il est au robot d'indexation de respecter cette demande."
options:"Options"
specifyUser:"Spécifier l'utilisateur·rice"
openTagPageConfirm:"Ouvrir une page d'hashtags ?"
specifyHost:"Spécifier un serveur distant"
failedToPreviewUrl:"Aperçu d'URL échoué"
update:"Mettre à jour"
rolesThatCanBeUsedThisEmojiAsReaction:"Rôles qui peuvent utiliser cet émoji comme réaction"
@ -1222,13 +1240,63 @@ enableHorizontalSwipe: "Glisser pour changer d'onglet"
loading:"Chargement en cours"
surrender:"Annuler"
gameRetry:"Réessayer"
notUsePleaseLeaveBlank:"Laisser vide si non utilisé"
useTotp:"Entrer un mot de passe à usage unique"
useBackupCode:"Utiliser le codes de secours"
launchApp:"Lancer l'app"
useNativeUIForVideoAudioPlayer:"Lire les vidéos et audios en utilisant l'UI du navigateur"
keepOriginalFilename:"Garder le nom original du fichier"
keepOriginalFilenameDescription:"Si vous désactivez ce paramètre, les noms de fichiers seront automatiquement remplacés par des noms aléatoires lorsque vous téléchargerez des fichiers."
noDescription:"Il n'y a pas de description"
alwaysConfirmFollow:"Confirmer lors d'un abonnement"
inquiry:"Contact"
tryAgain:"Veuillez réessayer plus tard"
confirmWhenRevealingSensitiveMedia:"Confirmer pour révéler du contenu sensible"
sensitiveMediaRevealConfirm:"Ceci pourrait être du contenu sensible. Voulez-vous l'afficher ?"
createdLists:"Listes créées"
createdAntennas:"Antennes créées"
fromX:"De {x}"
genEmbedCode:"Générer le code d'intégration"
noteOfThisUser:"Notes de cet·te utilisateur·rice"
clipNoteLimitExceeded:"Aucune note supplémentaire ne peut être ajoutée à ce clip."
performance:"Performance"
modified:"Modifié"
discard:"Annuler"
thereAreNChanges:"Il y a {n}modification(s)"
signinWithPasskey:"Se connecter avec une clé d'accès"
unknownWebAuthnKey:"Clé d'accès inconnue."
passkeyVerificationFailed:"La vérification de la clé d'accès a échoué."
passkeyVerificationSucceededButPasswordlessLoginDisabled:"La vérification de la clé d'accès a réussi, mais la connexion sans mot de passe est désactivée."
messageToFollower:"Message aux abonné·es"
target:"Destinataire"
prohibitedWordsForNameOfUser:"Mots interdits pour les noms d'utilisateur·rices"
lockdown:"Verrouiller"
pleaseSelectAccount:"Sélectionner un compte"
availableRoles:"Rôles disponibles"
postForm:"Formulaire de publication"
information:"Informations"
_chat:
invitations:"Inviter"
noHistory:"Pas d'historique"
members:"Membres"
home:"Principal"
send:"Envoyer"
_abuseUserReport:
forward:"Transférer"
forwardDescription:"Transférer le signalement vers une instance distante en tant qu'anonyme."
resolve:"Résoudre"
accept:"Accepter"
reject:"Rejeter"
resolveTutorial:"Si le signalement est légitime dans son contenu, sélectionnez « Accepter » pour marquer le cas comme résolu par l'affirmative.\nSi le contenu du rapport n'est pas légitime, sélectionnez « Rejeter » pour marquer le cas comme résolu par la négative."
_delivery:
status:"Statut de la diffusion"
stop:"Suspendu·e"
resume:"Reprendre"
_type:
none:"Publié"
manuallySuspended:"Suspendre manuellement"
goneSuspended:"L'instance est suspendue en raison de la suppression de ce dernier"
autoSuspendedForNotResponding:"L'instance est suspendue car elle ne répond pas"
_bubbleGame:
howToPlay:"Comment jouer"
hold:"Réserver"
@ -1239,6 +1307,7 @@ _bubbleGame:
maxChain:"Nombre maximum de chaînes"
yen:"{yen} yens"
estimatedQty:"{qty} pièces"
scoreSweets:"{onigiriQtyWithUnit} Onigiri(s)"
_announcement:
forExistingUsers:"Pour les utilisateurs existants seulement"
needConfirmationToRead:"Exiger la confirmation de la lecture"
@ -1258,6 +1327,7 @@ _initialAccountSetting:
profileSetting:"Paramètres du profil"
privacySetting:"Paramètres de confidentialité"
initialAccountSettingCompleted:"Configuration du profil terminée avec succès !"
haveFun:"Profitez de {name}!"
youCanContinueTutorial:"Vous pouvez procéder au tutoriel sur l'utilisation de {name}(Misskey) ou vous arrêter ici et commencer à l'utiliser immédiatement."
startTutorial:"Démarrer le tutoriel"
skipAreYouSure:"Désirez-vous ignorer la configuration du profil ?"
@ -1351,18 +1421,60 @@ _achievements:
flavor:"Passez un bon moment avec Misskey !"
_notes10:
title:"Quelques notes"
description:"Poster 10 notes"
_notes100:
title:"Beaucoup de notes"
description:"Poster 100 notes"
_notes500:
title:"Couvert de notes"
description:"Poster 500 notes"
_notes1000:
title:"Une montagne de notes"
description:"Poster 1000 notes"
_notes5000:
title:"Débordement de notes"
description:"Poster 5 000 notes"
_notes10000:
title:"Super note"
description:"Poster 10 000 notes"
_notes20000:
title:"Encore... plus... de... notes..."
description:"Poster 20 000 notes"
_notes30000:
title:"Notes notes notes !"
description:"Poster 30 000 notes"
_notes40000:
title:"Usine de notes"
description:"Poster 40 000 notes"
_notes50000:
title:"Planète des notes"
description:"Poster 50 000 notes"
_notes60000:
title:"Quasar de note"
description:"Poster 50 000 notes"
_notes70000:
title:"Trou noir de notes"
description:"Poster 70 000 notes"
_notes80000:
title:"Galaxie de notes"
description:"Poster 80 000 notes"
_notes90000:
title:"Univers de notes"
description:"Poster 90 000 notes"
_notes100000:
title:"ALL YOUR NOTE ARE BELONG TO US"
description:"Poster 100 000 notes"
flavor:"Avez-vous tant de choses à dire ?"
_login3:
title:"Débutant Ⅰ"
title:"Débutant I"
description:"Se connecter pour un total de 3 jours"
flavor:"Dès maintenant, appelez-moi Misskeynaute"
_login7:
title:"Débutant Ⅱ"
title:"Débutant II"
description:"Se connecter pour un total de 7 jours"
flavor:"On s'habitue ?"
_login15:
title:"Débutant Ⅲ"
title:"Débutant III"
description:"Se connecter pour un total de 15 jours"
_login30:
title:"Misskeynaute I"
@ -1386,6 +1498,7 @@ _achievements:
_login500:
title:"Expert I"
description:"Se connecter pour un total de 500 jours"
flavor:"Non, mes amis, j'aime les notes"
_login600:
title:"Expert II"
description:"Se connecter pour un total de 600 jours"
@ -1393,11 +1506,18 @@ _achievements:
title:"Expert III"
description:"Se connecter pour un total de 700 jours"
_login800:
title:"Maître des notes I"
description:"Se connecter pour un total de 800 jours"
_login900:
title:"Maître des notes II"
description:"Se connecter pour un total de 900 jours"
_login1000:
title:"Maître des notes III"
description:"Se connecter pour un total de 1 000 jours"
flavor:"Merci d'utiliser Misskey !"
_noteClipped1:
title:"Je... dois... clip..."
description:"Ajouter sa première note aux clips"
_profileFilled:
title:"Bien préparé"
description:"Configuration de votre profil"
@ -1456,21 +1576,31 @@ _achievements:
_driveFolderCircularReference:
title:"Référence circulaire"
_setNameToSyuilo:
title:"Complexe de dieu"
description:"Vous avez spécifié « syuilo » comme nom"
_passedSinceAccountCreated1:
title:"Premier anniversaire"
description:"Un an est passé depuis la création du compte"
_passedSinceAccountCreated2:
title:"Second anniversaire"
description:"Deux ans sont passés depuis la création du compte"
_passedSinceAccountCreated3:
title:"3ème anniversaire"
description:"Trois ans sont passés depuis la création du compte"
_loggedInOnBirthday:
title:"Joyeux Anniversaire !"
description:"Vous vous êtes connecté à la date de votre anniversaire"
_loggedInOnNewYearsDay:
title:"Bonne année!"
description:"Vous vous êtes connecté le premier jour de l'année"
flavor:"Merci pour le soutient continue sur cette instance."
_cookieClicked:
title:"Jeu de clic sur des cookies"
description:"Cliqué sur un cookie"
flavor:"Attendez une minute, vous êtes sur le mauvais site web ?"
_brainDiver:
title:"Brain Diver"
description:"Poster le lien sur Brain Diver"
flavor:"Misskey-Misskey La-Tu-Ma"
_smashTestNotificationButton:
title:"Débordement de tests"
@ -1478,6 +1608,11 @@ _achievements:
_tutorialCompleted:
title:"Diplôme de la course élémentaire de Misskey"
description:"Terminer le tutoriel"
_bubbleGameExplodingHead:
title:"🤯"
description:"Le plus gros objet du jeu de bulles"
_bubbleGameDoubleExplodingHead:
title:"Double🤯"
_role:
new:"Nouveau rôle"
edit:"Modifier le rôle"
@ -1508,9 +1643,11 @@ _role:
canManageCustomEmojis:"Gestion des émojis personnalisés"
canManageAvatarDecorations:"Gestion des décorations d'avatar"
driveCapacity:"Capacité de stockage du Disque"
antennaMax:"Nombre maximum d'antennes"
wordMuteMax:"Nombre maximal de caractères dans le filtre de mots"
canUseTranslator:"Usage de la fonctionnalité de traduction"
avatarDecorationLimit:"Nombre maximal de décorations d'avatar"
description:"L'apprentissage automatique peut être utilisé pour détecter automatiquement les médias sensibles à modérer. La sollicitation des serveurs augmente légèrement."
sensitivity:"Sensibilité de la détection"
@ -1679,7 +1816,6 @@ _theme:
header:"Entête"
navBg:"Fond de la barre latérale"
navFg:"Texte de la barre latérale"
navHoverFg:"Texte de la barre latérale (survolé)"
navActive:"Texte de la barre latérale (actif)"
navIndicator:"Indicateur de barre latérale"
link:"Lien"
@ -1702,11 +1838,8 @@ _theme:
buttonHoverBg:"Arrière-plan du bouton (survolé)"
inputBorder:"Cadre de la zone de texte"
driveFolderBg:"Arrière-plan du dossier de disque"
wallpaperOverlay:"Superposition de fond d'écran"
badge:"Badge"
messageBg:"Arrière plan de la discussion"
accentDarken:"Plus sombre"
accentLighten:"Plus clair"
fgHighlighted:"Texte mis en évidence"
_sfx:
note:"Nouvelle note"
@ -1793,6 +1926,30 @@ _permissions:
"write:gallery": "Éditer la galerie"
"read:gallery-likes": "Voir les mentions « J'aime » dans la galerie"
"write:gallery-likes": "Gérer les mentions « J'aime » dans la galerie"
"read:flash": "Voir le Play"
"write:flash": "Modifier le Play"
"read:flash-likes": "Lire vos mentions j'aime des Play"
"write:flash-likes": "Modifier vos mentions j'aime des Play"
"read:admin:abuse-user-reports": "Voir les utilisateurs signalés"
"write:admin:delete-account": "Supprimer le compte d'utilisateur"
"write:admin:delete-all-files-of-a-user": "Supprimer tous les fichiers d'un utilisateur"
"read:admin:index-stats": "Voir les statistiques sur les index de base de données"
"read:admin:table-stats": "Voir les statistiques sur les index de base de données"
"read:admin:user-ips": "Voir l'adresse IP de l'utilisateur"
"read:admin:meta": "Voir les métadonnées de l'instance"
"write:admin:reset-password": "Réinitialiser le mot de passe de l'utilisateur"
"write:admin:resolve-abuse-user-report": "Résoudre le signalement d'un utilisateur"
"write:admin:send-email": "Envoyer un mail"
"read:admin:server-info": "Voir les informations de l'instance"
"read:admin:show-moderation-log": "Voir les logs de modération"
"read:admin:show-user": "Voir les informations privées de l'utilisateur"
unsetUserAvatar:"Supprimer l'avatar de l'utilisateur·rice"
unsetUserBanner:"Supprimer la bannière de l'utilisateur·rice"
deleteFlash:"Supprimer le Play"
_fileViewer:
title:"Détails du fichier"
type:"Type du fichier"
@ -2125,10 +2295,8 @@ _externalResourceInstaller:
checkVendorBeforeInstall:"Veuillez confirmer que le distributeur est fiable avant l'installation."
_plugin:
title:"Voulez-vous installer cette extension ?"
metaTitle:"Informations sur l'extension"
_theme:
title:"Voulez-vous installer ce thème ?"
metaTitle:"Informations sur le thème"
_meta:
base:"Palette de couleurs de base"
_vendorInfo:
@ -2175,5 +2343,27 @@ _dataSaver:
title:"Mise en évidence du code"
description:"Si la notation de mise en évidence du code est utilisée, par exemple dans la MFM, elle ne sera pas chargée tant qu'elle n'aura pas été tapée. La mise en évidence du code nécessite le chargement du fichier de définition de chaque langue à mettre en évidence, mais comme ces fichiers ne sont plus chargés automatiquement, on peut s'attendre à une réduction du trafic de données."
@ -196,6 +196,7 @@ followConfirm: "Apakah kamu yakin ingin mengikuti {name}?"
proxyAccount:"Akun proksi"
proxyAccountDescription:"Akun proksi merupakan sebuah akun yang bertindak sebagai pengikut instansi luar untuk pengguna dalam kondisi tertentu. Sebagai contoh, ketika pengguna menambahkan seorang pengguna instansi luar ke dalam daftar, aktivitas dari pengguna instansi luar tidak akan disampaikan ke instansi apabila tidak ada pengguna lokal yang mengikuti pengguna tersebut, dengan begitu akun proksilah yang akan mengikutinya."
blockedInstancesDescription:"Daftar nama host dari instansi yang diperlukan untuk diblokir. Instansi yang didaftarkan tidak akan dapat berkomunikasi dengan instansi ini."
silencedInstances:"Instansi yang disenyapkan"
silencedInstancesDescription:"Daftar nama host dari instansi yang ingin kamu senyapkan. Semua akun dari instansi yang terdaftar akan diperlakukan sebagai disenyapkan. Hal ini membuat akun hanya dapat membuat permintaan mengikuti, dan tidak dapat menyebutkan akun lokal apabila tidak mengikuti. Hal ini tidak akan mempengaruhi instansi yang diblokir."
federationAllowedHosts:"Server yang membolehkan federasi"
muteAndBlock:"Bisukan / Blokir"
mutedUsers:"Pengguna yang dibisukan"
blockedUsers:"Pengguna yang diblokir"
@ -278,7 +280,6 @@ deleteAreYouSure: "Apakah kamu yakin ingin menghapus \"{x}\"?"
resetAreYouSure:"Yakin mau atur ulang?"
areYouSure:"Apakah kamu yakin?"
saved:"Telah disimpan"
messaging:"Pesan"
upload:"Unggah"
keepOriginalUploading:"Simpan gambar asli"
keepOriginalUploadingDescription:"Simpan gambar yang diunggah sebagaimana gambar aslinya. Bila dimatikan, versi tampilan web akan dihasilkan pada saat diunggah."
@ -291,7 +292,6 @@ uploadFromUrlMayTakeTime: "Membutuhkan beberapa waktu hingga pengunggahan selesa
explore:"Jelajahi"
messageRead:"Telah dibaca"
noMoreHistory:"Tidak ada sejarah lagi"
startMessaging:"Mulai mengirim pesan"
nUsersRead:"Dibaca oleh {n}"
agreeTo:"Saya setuju kepada {0}"
agree:"Setuju"
@ -330,6 +330,7 @@ renameFolder: "Ubah nama folder"
deleteFolder:"Hapus folder"
folder:"Folder"
addFile:"Tambahkan berkas"
showFile:"Tampilkan berkas"
emptyDrive:"Drive kosong"
emptyFolder:"Folder kosong"
unableToDelete:"Tidak dapat menghapus"
@ -372,7 +373,6 @@ enableLocalTimeline: "Nyalakan lini masa lokal"
enableGlobalTimeline:"Nyalakan lini masa global"
disablingTimelinesInfo:"Admin dan Moderator akan selalu memiliki akses ke semua lini masa meskipun lini masa tersebut tidak diaktifkan."
registration:"Pendaftaran"
enableRegistration:"Nyalakan pendaftaran pengguna baru"
invite:"Undang"
driveCapacityPerLocalAccount:"Kapasitas drive per pengguna lokal"
driveCapacityPerRemoteAccount:"Kapasitas drive per pengguna remote"
@ -479,8 +479,6 @@ noteOf: "Catatan milik {user}"
quoteAttached:"Dikutip"
quoteQuestion:"Apakah kamu ingin menambahkan kutipan?"
attachAsFileQuestion:"Teks dalam papan klip terlalu panjang. Apakah kamu ingin melampirkannya sebagai berkas teks?"
noMessagesYet:"Tidak ada pesan"
newMessageExists:"Kamu mendapatkan pesan baru"
onlyOneFileCanBeAttached:"Kamu hanya dapat melampirkan satu berkas ke dalam pesan"
showNoteActionsOnlyHover:"Hanya tampilkan aksi catatan saat ditunjuk"
showReactionsCount:"Lihat jumlah reaksi dalam catatan"
noHistory:"Tidak ada riwayat"
@ -927,6 +927,9 @@ oneHour: "1 Jam"
oneDay:"1 Hari"
oneWeek:"1 Bulan"
oneMonth:"satu bulan"
threeMonths:"3 bulan"
oneYear:"1 tahun"
threeDays:"3 hari"
reflectMayTakeTime:"Mungkin perlu beberapa saat untuk dicerminkan."
failedToFetchAccountInformation:"Gagal untuk mendapatkan informasi akun"
rateLimitExceeded:"Batas sudah terlampaui"
@ -1101,6 +1104,7 @@ preservedUsernames: "Nama pengguna tercadangkan"
preservedUsernamesDescription:"Daftar nama pengguna yang dicadangkan dipisah dengan baris baru. Nama pengguna berikut akan tidak dapat dipakai pada pembuatan akun normal, namun dapat digunakan oleh admin untuk membuat akun baru. Akun yang sudah ada dengan menggunakan nama pengguna ini tidak akan terpengaruh."
createNoteFromTheFile:"Buat catatan dari berkas ini"
archive:"Arsipkan"
archived:"Diarsipkan"
channelArchiveConfirmTitle:"Yakin untuk mengarsipkan {name}?"
channelArchiveConfirmDescription:"Kanal yang diarsipkan tidak akan muncul pada daftar kanal atau hasil pencarian. Postingan baru juga tidak dapat ditambahkan lagi."
thisChannelArchived:"Kanal ini telah diarsipkan."
@ -1111,6 +1115,7 @@ preventAiLearning: "Tolak penggunaan Pembelajaran Mesin (AI Generatif)"
preventAiLearningDescription:"Minta perayap web untuk tidak menggunakan materi teks atau gambar yang telah diposting ke dalam set data Pembelajaran Mesin (Prediktif / Generatif). Hal ini dicapai dengan menambahkan flag HTML-Response \"noai\" ke masing-masing konten. Pencegahan penuh mungkin tidak dapat dicapai dengan flag ini, karena juga dapat diabaikan begitu saja."
options:"Opsi peran"
specifyUser:"Pengguna spesifik"
openTagPageConfirm:"Apakah ingin membuka laman tagar?"
failedToPreviewUrl:"Tidak dapat dipratinjau"
update:"Perbarui"
rolesThatCanBeUsedThisEmojiAsReaction:"Peran yang dapat menggunakan emoji ini sebagai reaksi"
@ -1243,6 +1248,28 @@ noDescription: "Tidak ada deskripsi"
alwaysConfirmFollow:"Selalu konfirmasi ketika mengikuti"
inquiry:"Hubungi kami"
tryAgain:"Silahkan coba lagi."
createdLists:"Senarai yang dibuat"
createdAntennas:"Antena yang dibuat"
fromX:"Dari {x}"
noteOfThisUser:"Catatan oleh pengguna ini"
clipNoteLimitExceeded:"Klip ini tak bisa ditambahi lagi catatan."
performance:"Kinerja"
modified:"Diubah"
thereAreNChanges:"Ada {n} perubahan"
prohibitedWordsForNameOfUser:"Kata yang dilarang untuk nama pengguna"
postForm:"Buat catatan"
information:"Informasi"
_chat:
invitations:"Undang"
noHistory:"Tidak ada riwayat"
members:"Anggota"
home:"Beranda"
send:"Kirim"
_settings:
webhook:"Webhook"
_abuseUserReport:
accept:"Setuju"
reject:"Tolak"
_delivery:
status:"Status pengiriman"
stop:"Ditangguhkan"
@ -1707,6 +1734,8 @@ _role:
canSearchNotes:"Penggunaan pencarian catatan"
canUseTranslator:"Penggunaan penerjemah"
avatarDecorationLimit:"Jumlah maksimum dekorasi avatar yang dapat diterapkan"
canImportAntennas:"Izinkan mengimpor antena"
canImportUserLists:"Izinkan mengimpor senarai"
_condition:
roleAssignedTo:"Ditugaskan ke peran manual"
isLocal:"Pengguna lokal"
@ -1902,7 +1931,6 @@ _theme:
header:"Header"
navBg:"Latar belakang bilah samping"
navFg:"Teks bilah samping"
navHoverFg:"Teks bilah samping (Mengambang)"
navActive:"Teks bilah samping (Aktif)"
navIndicator:"Indikator bilah samping"
link:"Tautan"
@ -1925,11 +1953,8 @@ _theme:
buttonHoverBg:"Latar belakang tombol (Mengambang)"
inputBorder:"Batas bidang masukan"
driveFolderBg:"Latar belakang folder drive"
wallpaperOverlay:"Lapisan wallpaper"
badge:"Lencana"
messageBg:"Latar belakang obrolan"
accentDarken:"Aksen (Gelap)"
accentLighten:"Aksen (Terang)"
fgHighlighted:"Teks yang disorot"
_sfx:
note:"Catatan"
@ -1943,6 +1968,7 @@ _soundSettings:
driveFileTypeWarnDescription:"Pilih berkas audio"
driveFileDurationWarn:"Audio ini terlalu panjang"
driveFileDurationWarnDescription:"Audio panjang dapat mengganggu penggunaan Misskey. Masih ingin melanjutkan?"
driveFileError:"Tak bisa memuat audio. Mohon ubah pengaturan"
_ago:
future:"Masa depan"
justNow:"Baru saja"
@ -2081,6 +2107,7 @@ _permissions:
"read:clip-favorite": "Lihat klip yang difavoritkan"
@ -5,9 +5,13 @@ introMisskey: "Welkom! Misskey is een open source, gedecentraliseerde microblogd
poweredByMisskeyDescription:"{name} is één van de services die door het open source platform <b>Misskey</b> wordt geleverd (het wordt ook wel een \"Misskey server genmoemd\")."
monthAndDay:"{day} {month}"
search:"Zoeken"
reset:"Herstellen"
notifications:"Meldingen"
username:"Gebruikersnaam"
password:"Wachtwoord"
initialPasswordForSetup:"Initiële wachtwoord voor configuratie"
initialPasswordIsIncorrect:"Initiële wachtwoord voor configuratie is onjuist"
initialPasswordForSetupDescription:"Gebruik het initiële wachtwoord uit de configuratie, als je Misskey zelf hebt geïnstalleerd.\nAls je een Misskey hosting provider gebruikt, gebruik dan het gegeven wachtwoord.\nAls je geen wachtwoord hebt gezet, laat het dan leeg om verder te gaan."
forgotPassword:"Wachtwoord vergeten"
fetchingAsApObject:"Ophalen vanuit de Fediverse"
ok:"Ok"
@ -45,6 +49,7 @@ pin: "Vastmaken aan profielpagina"
unpin:"Losmaken van profielpagina"
copyContent:"Kopiëren inhoud"
copyLink:"Kopiëren link"
copyRemoteLink:"Remote-link kopiëren"
copyLinkRenote:""
delete:"Verwijderen"
deleteAndEdit:"Verwijderen en bewerken"
@ -60,6 +65,7 @@ copyFileId: "Kopieer veld ID"
copyFolderId:"Kopieer folder ID"
copyProfileUrl:"Kopieer profiel URL"
searchUser:"Zoeken een gebruiker"
searchThisUsersNotes:"Notities van deze gebruiker doorzoeken"
reply:"Antwoord"
loadMore:"Laad meer"
showMore:"Toon meer"
@ -108,9 +114,14 @@ enterEmoji: "Voer een emoji in"
renote:"Herdelen"
unrenote:"Stop herdelen"
renoted:"Herdeeld"
renotedToX:"Renoted naar {name}"
cantRenote:"Dit bericht kan niet worden herdeeld"
cantReRenote:"Een herdeling kan niet worden herdeeld"
quote:"Quote"
inChannelRenote:"Alleen-kanaal Renote"
inChannelQuote:"Alleen-kanaal Citaat"
renoteToChannel:"Renote naar kanaal"
renoteToOtherChannel:"Renote naar ander kanaal"
pinnedNote:"Vastgemaakte notitie"
pinned:"Vastmaken aan profielpagina"
you:"Jij"
@ -119,14 +130,23 @@ sensitive: "NSFW"
add:"Toevoegen"
reaction:"Reacties"
reactions:"Reacties"
emojiPicker:"Emoji kiezer"
pinnedEmojisForReactionSettingDescription:"Kies de emojis die als eerste getoond worden tijdens het reageren"
pinnedEmojisSettingDescription:"Kies de emojis die als eerste getoond worden tijdens het reageren"
emojiPickerDisplay:"Emoji kiezer weergave"
overwriteFromPinnedEmojisForReaction:"Overschrijven met reactieinstellingen"
overwriteFromPinnedEmojis:"Overschrijven met algemene instellingen"
reactionSettingDescription2:"Sleep om opnieuw te ordenen, Klik om te verwijderen, Druk op \"+\" om toe te voegen"
rememberNoteVisibility:"Vergeet niet de notitie zichtbaarheidsinstellingen"
attachCancel:"Verwijder bijlage"
deleteFile:"Bestand verwijderen"
markAsSensitive:"Markeren als NSFW"
unmarkAsSensitive:"Geen NSFW"
enterFileName:"Invoeren bestandsnaam"
mute:"Dempen"
unmute:"Stop dempen"
renoteMute:"Renotes dempen"
renoteUnmute:"Dempen Renotes opheffen"
block:"Blokkeren"
unblock:"Deblokkeren"
suspend:"Opschorten"
@ -136,11 +156,15 @@ unblockConfirm: "Ben je zeker dat je deze account wil blokkeren?"
suspendConfirm:"Ben je zeker dat je deze account wil suspenderen?"
unsuspendConfirm:"Ben je zeker dat je deze account wil opnieuw aanstellen?"
selectList:"Kies een lijst."
editList:"Lijst bewerken"
selectChannel:"Kanaal selecteren"
selectAntenna:"Kies een antenne"
editAntenna:"Antenne bewerken"
createAntenna:"Antenne aanmaken"
selectWidget:"Kies een widget"
editWidgets:"Bewerk widgets"
editWidgetsExit:"Klaar"
customEmojis:"Maatwerk emoji"
customEmojis:"Eigen emoji"
emoji:"Emoji"
emojis:"Emoji"
emojiName:"Naam emoji"
@ -148,6 +172,10 @@ emojiUrl: "URL emoji"
addEmoji:"Toevoegen emoji"
settingGuide:"Aanbevolen instellingen"
cacheRemoteFiles:"Externe bestanden cachen"
cacheRemoteFilesDescription:"Als deze instelling uitgeschakeld is worden bestanden altijd direct van remote servers geladen. Hiermee wordt opslagruimte bespaard, maar doordat er geen thumbnails worden gegenereerd, zal netwerkverkeer toenemen."
youCanCleanRemoteFilesCache:"Klik op de 🗑️ knop in de bestandsbeheerweergave om de cache te wissen."
cacheRemoteSensitiveFiles:"Gevoelige bestanden van externe instances in de cache bewaren"
cacheRemoteSensitiveFilesDescription:"Als deze instelling is uitgeschakeld, worden gevoelige bestanden op afstand direct vanuit de instantie op afstand geladen zonder caching."
flagAsBot:"Markeer dit account als een robot."
flagAsBotDescription:"Als dit account van een programma wordt beheerd, zet deze vlag aan. Het aanzetten helpt andere ontwikkelaars om bijvoorbeeld onbedoelde feedback loops te doorbreken of om Misskey meer geschikt te maken."
flagAsCat:"Markeer dit account als een kat."
@ -156,8 +184,13 @@ flagShowTimelineReplies: "Toon antwoorden op de tijdlijn."
flagShowTimelineRepliesDescription:"Als je dit vlag aanzet, toont de tijdlijn ook antwoorden op andere en niet alleen jouw eigen notities."
autoAcceptFollowed:"Accepteer verzoeken om jezelf te volgen vanzelf als je de verzoeker al volgt."
addAccount:"Account toevoegen"
reloadAccountsList:"Accountlijst opnieuw laden"
loginFailed:"Aanmelding mislukt."
showOnRemote:"Toon op de externe instantie."
continueOnRemote:"Verder op remote server"
chooseServerOnMisskeyHub:"Kies een server van de Misskey Hub"
specifyServerHost:"Serverhost uitkiezen"
inputHostName:"Domein invullen"
general:"Algemeen"
wallpaper:"Achtergrond"
setWallpaper:"Achtergrond instellen"
@ -168,6 +201,7 @@ followConfirm: "Weet je zeker dat je {name} wilt volgen?"
proxyAccount:"Proxy account"
proxyAccountDescription:"Een proxy-account is een account dat onder bepaalde voorwaarden fungeert als externe volger voor gebruikers. Als een gebruiker bijvoorbeeld een externe gebruiker aan de lijst toevoegt, wordt de activiteit van de externe gebruiker niet aan de server geleverd als geen lokale gebruiker die gebruiker volgt, dus het proxy-account volgt in plaats daarvan."
host:"Server"
selectSelf:"Mezelf kiezen"
selectUser:"Kies een gebruiker"
recipient:"Ontvanger"
annotation:"Reacties"
@ -182,6 +216,8 @@ perHour: "Per uur"
perDay:"Per dag"
stopActivityDelivery:"Stop met versturen activiteiten"
blockThisInstance:"Blokkeer deze server"
silenceThisInstance:"Instantie dempen"
mediaSilenceThisInstance:"Media van deze server dempen"
clearCachedFilesConfirm:"Weet je zeker dat je alle externe bestanden in de cache wilt verwijderen?"
blockedInstances:"Geblokkeerde servers"
blockedInstancesDescription:"Maak een lijst van de servers die moeten worden geblokkeerd, gescheiden door regeleinden. Geblokkeerde servers kunnen niet meer communiceren met deze server."
silencedInstances:"Gedempte instanties"
silencedInstancesDescription:"Geef de hostnamen van de servers die je wil dempen op, elk op hun eigen regel. Alle accounts die bij de opgegeven servers horen worden als gedempt behandeld, kunnen alleen maar volgverzoeken maken, en kunnen lokale accounts niet vermelden als ze niet gevolgd worden. Geblokkeerde servers worden hier niet door beïnvloed."
mediaSilencedInstances:"Media-gedempte servers"
mediaSilencedInstancesDescription:"Geef de hostnamen van de servers die je wil media-dempen op, elk op hun eigen regel. Alle accounts die bij de opgegeven servers horen worden als gedempt behandeld, en kunnen geen eigen emojis gebruiken. Geblokkeerde servers worden hier niet door beïnvloed."
federationAllowedHosts:"Servers die mogen federeren "
federationAllowedHostsDescription:"Geef de hostnamen van de servers die mogen federeren op, elk op hun eigen regel."
removeAreYouSure:"Weet je zeker dat je \"{x}\" wil verwijderen?"
deleteAreYouSure:"Weet je zeker dat je \"{x}\" wil verwijderen?"
resetAreYouSure:"Resetten?"
areYouSure:"Weet je het zeker?"
saved:"Opgeslagen"
messaging:"Chat"
upload:"Uploaden"
keepOriginalUploading:"Origineel beeld behouden."
keepOriginalUploadingDescription:"Bewaar de originele versie bij het uploaden van afbeeldingen. Indien uitgeschakeld, wordt bij het uploaden een alternatieve versie voor webpublicatie genereert."
@ -259,9 +301,13 @@ uploadFromUrlMayTakeTime: "Het kan even duren voordat het uploaden voltooid is."
disablingTimelinesInfo:"Beheerders en moderators hebben altijd toegang tot alle tijdlijnen, ook als ze niet actief zijn."
registration:"Registreren"
enableRegistration:"Inschakelen registratie nieuwe gebruikers "
invite:"Uitnodigen"
driveCapacityPerLocalAccount:"Opslagruimte per lokale gebruiker"
driveCapacityPerRemoteAccount:"Opslagruimte per externe gebruiker"
@ -342,14 +391,20 @@ bannerUrl: "Banner URL"
backgroundImageUrl:"URL afbeelding"
basicInfo:"Basisinformatie"
pinnedUsers:"Vastgeprikte gebruikers"
pinnedUsersDescription:"Een lijst met gebruikersnamen, gescheiden door regeleinden, die moet worden vastgemaakt in het tabblad “Verkennen”"
pinnedPages:"Vastgeprikte pagina's"
pinnedPagesDescription:"Voer de paden in van de Pagina's die je aan de bovenste pagina van deze instantie wilt vastmaken, gescheiden door regeleinden."
pinnedClipId:"ID van de clip die moet worden vastgepind"
pinnedNotes:"Vastgemaakte notitie"
hcaptcha:"hCaptcha"
enableHcaptcha:"Inschakelen hCaptcha"
hcaptchaSiteKey:"Site sleutel"
hcaptchaSecretKey:"Geheime sleutel"
mcaptcha:"mCaptcha"
enableMcaptcha:"mCaptcha activeren"
mcaptchaSiteKey:"Site sleutel"
mcaptchaSecretKey:"Geheime sleutel"
mcaptchaInstanceUrl:"mCaptcha server-URL"
recaptcha:"reCAPTCHA"
enableRecaptcha:"Inschakelen reCAPTCHA"
recaptchaSiteKey:"Site sleutel"
@ -358,12 +413,21 @@ turnstile: "Tourniquet"
enableTurnstile:"Inschakelen tourniquet"
turnstileSiteKey:"Site sleutel"
turnstileSecretKey:"Geheime sleutel"
avoidMultiCaptchaConfirm:"Het gebruik van meerdere Captcha-systemen kan interferentie tussen deze systemen veroorzaken. Wil je de andere Captcha-systemen die momenteel actief zijn uitschakelen? Als je wilt dat ze ingeschakeld blijven, druk dan op annuleren."
antennas:"Antennes"
manageAntennas:"Antennes beheren"
name:"Naam"
antennaSource:"Bron antenne"
antennaKeywords:"Sleutelwoorden"
antennaExcludeKeywords:"Blokkeerwoorden"
antennaExcludeBots:"Bot-accounts uitsluiten"
antennaKeywordsDescription:"Scheid met spaties voor een EN-voorwaarde of met regeleinden voor een OF-voorwaarde."
notifyAntenna:"Houd een notificatie bij nieuwe notities"
withFileAntenna:"Alleen notities met bestanden"
excludeNotesInSensitiveChannel:"Sluit notities uit van gevoelige kanalen"
enableServiceworker:"Activeer pushmeldingen in de browser"
antennaUsersDescription:"Lijst één gebruikersnaam per regel"
caseSensitive:"Hoofdlettergevoelig"
withReplies:"Antwoorden toevoegen"
connectedTo:"De volgende accounts zijn verbonden"
notesAndReplies:"Berichten en reacties"
@ -384,18 +448,30 @@ about: "Over"
aboutMisskey:"Over Misskey"
administrator:"Beheerder"
token:"Token"
2fa:"Twee factor authenticatie"
setupOf2fa:"Tweefactorauthenticatie instellen"
totp:"Verificatie-App"
totpDescription:"Log in via de verificatie-app met het eenmalige wachtwoord"
moderator:"Moderator"
moderation:"Moderatie"
moderationNote:"Moderatienotitie"
moderationNoteDescription:"Voer hier notities in. Deze zijn alleen zichtbaar voor de moderators."
addModerationNote:"Moderatienotitie toevoegen"
moderationLogs:"Moderatieprotocollen"
nUsersMentioned:"Vermeld door {n} gebruikers"
securityKeyAndPasskey:"Beveiligings- en pasjessleutels"
securityKey:"Beveiligingssleutel"
lastUsed:"Laatst gebruikt"
lastUsedAt:"Laatst gebruikt: {t}"
unregister:"Uitschrijven"
passwordLessLogin:"Inloggen zonder wachtwoord"
passwordLessLoginDescription:"Maakt aanmelden zonder wachtwoord mogelijk met een beveiligingstoken of -wachtsleutel"
resetPassword:"Wachtwoord terugzetten"
newPasswordIs:"Het nieuwe wachtwoord is „{password}”."
reduceUiAnimation:"Verminder beweging in de UI"
share:"Delen"
notFound:"Niet gevonden"
notFoundDescription:"Er is geen pagina gevonden onder deze URL."
uploadFolder:"Standaardmap voor uploaden"
markAsReadAllNotifications:"Markeer alle meldingen als gelezen"
markAsReadAllUnreadNotes:"Markeer alle berichten als gelezen"
@ -404,21 +480,467 @@ help: "Help"
inputMessageHere:"Voer hier je bericht in"
close:"Sluiten"
invites:"Uitnodigen"
members:"Leden"
transfer:"Overdracht"
title:"Titel"
text:"Tekst"
enable:"Inschakelen"
next:"Volgende"
retype:"Opnieuw invoeren"
noteOf:"Notitie van {user}"
quoteAttached:"Citaat"
quoteQuestion:"Toevoegen als citaat?"
attachAsFileQuestion:"De tekst op het klembord is te lang. Wilt u het als een tekstbestand bijvoegen?"
onlyOneFileCanBeAttached:"Per bericht kan slechts één bestand worden bijgevoegd"
signinRequired:"Gelieve te registreren of in te loggen om verder te gaan"
signinOrContinueOnRemote:"Ga naar je eigen instantie of registreer je/log in op deze server om door te gaan."
invitations:"Uitnodigen"
invitationCode:"Uitnodigingscode"
checking:"Wordt gecheckt ..."
available:"Beschikbaar"
unavailable:"Onbeschikbaar"
usernameInvalidFormat:"Je kunt kleine letters, hoofdletters, cijfers en onderstrepingstekens gebruiken."
tooShort:"Te kort"
tooLong:"Te lang"
weakPassword:"Zwak wachtwoord"
normalPassword:"Redelijke wachtwoord"
strongPassword:"Sterk wachtwoord"
passwordMatched:"Lucifers"
passwordNotMatched:"Komt niet overeen"
signinWith:"Aanmelden met {x}"
signinFailed:"Inloggen mislukt. Controleer gebruikersnaam en wachtwoord."
or:"Of"
language:"Taal"
uiLanguage:"Taal van gebruikersinterface"
aboutX:"Over {x}"
emojiStyle:"Emoji-stijl"
native:"Inheems"
menuStyle:"Menustijl"
style:"Stijl"
drawer:"Lade"
popup:"Pop-up"
showNoteActionsOnlyHover:"Toon notitiemenu alleen bij muisaanwijzer"
showReactionsCount:"Zie het aantal reacties op notities"
noHistory:"Geen geschiedenis gevonden"
signinHistory:"Inloggeschiedenis"
enableAdvancedMfm:"Uitgebreide MFM activeren"
enableAnimatedMfm:"Geanimeerde MFM activeren"
doing:"In uitvoering..."
category:"Categorie"
tags:"Aliassen"
docSource:"Broncode van dit document"
createAccount:"Gebruikersaccount maken"
existingAccount:"Bestaand gebruikersaccount"
regenerate:"Regenereer"
fontSize:"Lettergrootte"
mediaListWithOneImageAppearance:"Hoogte van medialijsten met slechts één afbeelding"
limitTo:"Beperken tot {x}"
noFollowRequests:"Je hebt geen lopende volgverzoeken"
openImageInNewTab:"Afbeeldingen in nieuw tabblad openen"
dashboard:"Overzicht"
local:"Lokaal"
remote:"Remote"
total:"Totaal"
weekOverWeekChanges:"Wijzigingen sinds vorige week"
dayOverDayChanges:"Dagelijkse wijzigingen"
appearance:"Weergave"
clientSettings:"Clientinstellingen"
accountSettings:"Accountinstellingen"
promotion:"Promotie"
promote:"Promoot"
numberOfDays:"Aantal dagen"
hideThisNote:"Verberg deze notitie"
showFeaturedNotesInTimeline:"Laat featured notities in tijdlijn zien"
objectStorage:"Object Storage"
useObjectStorage:"Object Storage gebruiken"
objectStorageBaseUrl:"Basis-URL"
objectStorageBaseUrlDesc:"De URL die wordt gebruikt als referentie. Als je een CDN of proxy gebruikt, voer dan de URL daarvan in. Gebruik voor S3 ‘https://<bucket>.s3.amazonaws.com’. Gebruik voor GCS of vergelijkbaar ‘https://storage.googleapis.com/<bucket>’."
objectStorageBucket:"Bucket"
objectStorageBucketDesc:"Geef de bucketnaam op die bij je provider wordt gebruikt."
objectStoragePrefix:"Prefix"
objectStoragePrefixDesc:"Bestanden worden opgeslagen in de mappen onder deze prefix."
objectStorageEndpoint:"Endpoint"
objectStorageEndpointDesc:"Laat dit leeg als je AWS S3 gebruikt, anders geef je het eindpunt op als ‘<host>’ of ‘<host>:<port>’, afhankelijk van de service die je gebruikt."
objectStorageRegion:"Region"
objectStorageRegionDesc:"Voer een regio in zoals “xx-east-1”. Als je provider geen onderscheid maakt tussen regio's, voer dan “us-east-1” in. Laat leeg als je AWS-configuratiebestanden of omgevingsvariabelen gebruikt."
objectStorageUseSSL:"SSL gebruiken"
objectStorageUseSSLDesc:"Deactiveer dit als u geen HTTPS gebruikt voor API-verbindingen"
objectStorageUseProxy:"Verbinden via proxy"
objectStorageUseProxyDesc:"Deactiveer dit als u geen proxy wilt gebruiken voor verbindingen met de API"
objectStorageSetPublicRead:"Instellen op “public-read” op upload"
s3ForcePathStyleDesc:"Als s3ForcePathStyle is geactiveerd, moet de bucketnaam niet worden opgegeven in de hostnaam van de URL, maar in het pad van de URL. Deze optie moet mogelijk worden geactiveerd als services zoals een zelfbediende Minio-instantie worden gebruikt."
serverLogs:"Serverprotocollen"
deleteAll:"Alles verwijderen"
showFixedPostForm:"Het postingformulier bovenaan de tijdbalk weergeven"
showFixedPostFormInChannel:"Het postingformulier bovenaan de tijdbalk weergeven (Kanalen)"
withRepliesByDefaultForNewlyFollowed:"Toon replies van nieuw gevolgde gebruikers standaard in de tijdlijn"
newNoteRecived:"Er zijn nieuwe notities"
sounds:"Geluiden"
sound:"Geluid"
listen:"Luisteren"
none:"Niets"
showInPage:"Weergeven in een pagina"
popout:"Pop-Up"
volume:"Volume"
masterVolume:"Hoofdvolume"
notUseSound:"Geluid uitschakelen"
useSoundOnlyWhenActive:"Geluid alleen inschakelen wanneer Misskey actief is"
details:"Details"
renoteDetails:"Renote Details"
chooseEmoji:"Emoji selecteren"
unableToProcess:"De operatie kan niet worden voltooid."
recentUsed:"Recent gebruikt"
install:"Installeren"
uninstall:"Deinstalleren"
installedApps:"Geautoriseerde toepassingen"
nothing:"Niets te zien hier"
installedDate:"Geautoriseerd at"
lastUsedDate:"Laatst gebruikt at"
state:"Status"
sort:"Sorteren"
ascendingOrder:"Oplopende volgorde"
descendingOrder:"Aflopende volgorde"
scratchpad:"Testomgeving"
scratchpadDescription:"De testomgeving biedt een gebied voor AiScript experimenten. Daar kunt u AiScript schrijven en uitvoeren en de effecten ervan op Misskey controleren."
uiInspector:"UI-inspecteur"
uiInspectorDescription:"De lijst met servers van UI-componenten kan worden bekeken in de cache. De UI-component wordt gegenereerd door de functie Ui:C:"
output:"Uitvoer"
script:"Script"
disablePagesScript:"AiScript uitschakelen op pagina's"
updateRemoteUser:"Gebruikersinformatie bijwerken"
unsetUserAvatar:"Avatar verwijderen"
unsetUserAvatarConfirm:"Weet je zeker dat je je avatar wil verwijderen?"
unsetUserBanner:"Banner verwijderen"
unsetUserBannerConfirm:"Weet je zeker dat je je banner wil verwijderen?"
deleteAllFiles:"Alle bestanden verwijderen"
deleteAllFilesConfirm:"Wil je echt alle bestanden verwijderen?"
removeAllFollowing:"Ontvolg alle gevolgde gebruikers"
removeAllFollowingDescription:"Door dit uit te voeren worden alle accounts van {host} ontvolgd. Voer dit uit als de instantie bijvoorbeeld niet meer bestaat."
userSuspended:"Deze gebruiker is geschorst."
userSilenced:"Deze gebruiker is instantiebreed gedempt."
yourAccountSuspendedTitle:"Deze account is geschorst"
yourAccountSuspendedDescription:"Dit gebruikersaccount is geschorst omdat het de gebruiksvoorwaarden van deze server heeft geschonden. Neem contact op met de operator voor meer informatie. Maak geen nieuwe gebruikersaccount aan."
tokenRevoked:"Ongeldig token"
tokenRevokedDescription:"Het token is verlopen. Log opnieuw in."
accountDeleted:"Het gebruikersaccount is verwijderd"
accountDeletedDescription:"Deze account is verwijderd."
menu:"Menu"
divider:"Scheider"
addItem:"Element toevoegen"
rearrange:"Sorteren"
relays:"Relays"
addRelay:"Relay toevoegen"
inboxUrl:"Inbox-URL"
addedRelays:"Toegevoegd Relays"
serviceworkerInfo:"Moet worden geactiveerd voor pushmeldingen."
deletedNote:"Verwijderde notitie"
invisibleNote:"Privé notitie"
enableInfiniteScroll:"Automatisch meer laden"
visibility:"Zichtbaarheid"
poll:"Peiling"
useCw:"Inhoudswaarschuwing gebruiken"
enablePlayer:"Videospeler openen"
disablePlayer:"Videospeler sluiten"
expandTweet:"Notitie uitklappen"
themeEditor:"Thema-editor"
description:"Beschrijving"
describeFile:"Beschrijving toevoegen"
enterFileDescription:"Beschrijving invoeren"
author:"Auteur"
leaveConfirm:"Er zijn niet-opgeslagen wijzigingen. Wil je ze verwijderen?"
manage:"Beheer"
plugins:"Plugins"
preferencesBackups:"Instellingen Back-ups"
deck:"Dek"
undeck:"Dek verlaten"
useBlurEffectForModal:"Vervagingseffect gebruiken voor modals"
tokenRequested:"Toegang verlenen tot het gebruikersaccount"
pluginTokenRequestedDescription:"Deze plugin kan de hier geconfigureerde autorisaties gebruiken."
notificationType:"Type melding"
edit:"Bewerken"
emailServer:"Email-Server"
enableEmail:"Email distributie inschakelen"
emailConfigInfo:"Wordt gebruikt om je email te bevestigen tijdens het aanmelden of als je je wachtwoord bent vergeten"
email:"Email"
emailAddress:"Email adres"
smtpConfig:"SMTP-server configuratie"
smtpHost:"Server"
smtpPort:"Poort"
smtpUser:"Gebruikersnaam"
smtpPass:"Wachtwoord"
emptyToDisableSmtpAuth:"Laat gebruikersnaam en wachtwoord leeg om SMTP-authenticatie uit te schakelen."
smtpSecure:"Impliciet SSL/TLS gebruiken voor SMTP-verbindingen"
smtpSecureInfo:"Schakel dit uit bij gebruik van STARTTLS"
testEmail:"Emailversand testen"
wordMute:"Woord dempen"
wordMuteDescription:"Minimaliseert notities die het gespecificeerde woord of zin bevatten. Geminimaliseerde notities kunnen worden weergegeven door er op te klikken."
hardWordMute:"Harde woorddemping"
showMutedWord:"Gedempte woorden weergeven"
hardWordMuteDescription:"Verbert notities die het gespecificeerde woord of zin bevatten. In tegenstelling tot woorddemping wordt de notitie volledig verborgen."
regexpError:"Fout in reguliere expressie"
regexpErrorDescription:"Er is een fout opgetreden in de reguliere expressie op regel {line} van uw {tab} woord dempen:"
instanceMute:"Instantie dempers"
userSaysSomething:"{name} zei iets"
userSaysSomethingAbout:"{name} zei iets over '{word}'"
makeActive:"Activeren"
display:"Weergave"
copy:"Kopiëren"
copiedToClipboard:"Naar het klembord gekopieerd"
metrics:"Metrieken"
overview:"Overzicht"
logs:"Protocollen"
delayed:"Vertraagd"
database:"Database"
channel:"Kanalen"
create:"Creëer"
notificationSetting:"Instellingen meldingen"
notificationSettingDesc:"Selecteer het type meldingen dat moet worden weergegeven."
useGlobalSetting:"Globale instelling gebruiken"
useGlobalSettingDesc:"Als deze optie is ingeschakeld, worden de meldingsinstellingen van je account gebruikt. Als deze optie uitgeschakeld is, kunnen individuele configuraties worden gemaakt."
other:"Ander"
regenerateLoginToken:"Login token opnieuw genereren"
regenerateLoginTokenDescription:"Regenereren van het token dat intern wordt gebruikt om in te loggen. Dit is normaal gezien niet nodig. Alle apparaten worden afgemeld tijdens het regenereren."
theKeywordWhenSearchingForCustomEmoji:"Dit is het keyword dat gebruikt wordt bij het zoeken naar eigen emojis."
setMultipleBySeparatingWithSpace:"Scheid elementen met een spatie om meerdere instellingen te configureren."
fileIdOrUrl:"Bestands-ID of URL"
behavior:"Gedrag"
sample:"Voorbeeld"
abuseReports:"Meldt"
reportAbuse:"Meld"
reportAbuseRenote:"Meld renote"
reportAbuseOf:"Meld {name}"
fillAbuseReportDescription:"Vul s.v.p. de details in over deze melding. Geef, als het over een specifieke notitie gaat, ook de URL op."
abuseReported:"Uw rapport is verzonden. Hartelijk dank."
noCrawleDescription:"Vraag zoekmachines om je eigen profielpagina, notities, pagina's, enz. niet te indexeren."
lockedAccountInfo:"Tenzij je de zichtbaarheid van je notities instelt op “Alleen volgers”, zijn je notities zichtbaar voor iedereen, zelfs als je vereist dat volgers handmatig worden goedgekeurd."
alwaysMarkSensitive:"Markeer media standaard als gevoelig"
loadRawImages:"Toon altijd originele afbeeldingen in plaats van miniaturen"
disableShowingAnimatedImages:"Speel geen geanimeerde afbeeldingen af"
highlightSensitiveMedia:"Markeer gevoelige media"
verificationEmailSent:"Er is een bevestigingsmail naar uw e-mailadres verzonden. Ga naar de link in de e-mail om het verificatieproces te voltooien."
notSet:"Niet geconfigureerd"
emailVerified:"Emailadres bevestigd"
noteFavoritesCount:"Aantal notities gemarkeerd als favoriet"
pageLikesCount:"Aantal gelikete pagina's"
pageLikedCount:"Aantal ontvangen pagina-likes"
contact:"Contact"
useSystemFont:"Het standaardlettertype van het systeem gebruiken"
thisIsExperimentalFeature:"Dit is een experimentele functie. De functionaliteit kan worden gewijzigd en werkt mogelijk niet zoals bedoeld."
developer:"Ontwikkelaar"
makeExplorable:"Gebruikersaccount zichtbaar maken in “Verkennen”"
makeExplorableDescription:"Als deze optie is uitgeschakeld, is uw gebruikersaccount niet zichtbaar in het gedeelte “Verkennen”."
showGapBetweenNotesInTimeline:"Een gat tussen noten op de tijdlijn weergeven"
duplicate:"Dupliceren"
left:"Links"
center:"Center"
wide:"Breed"
narrow:"Smal"
reloadToApplySetting:"Deze instelling gaat pas in nadat de pagina herladen is. Nu herladen?"
needReloadToApply:"Deze instelling wordt van kracht nadat de pagina is vernieuwd."
showTitlebar:"Titelbalk weergeven"
clearCache:"Cache opschonen"
onlineUsersCount:"{n} Gebruikers zijn online"
nUsers:"{n} Gebruikers"
nNotes:"{n} Notities"
sendErrorReports:"Foutrapporten sturen"
sendErrorReportsDescription:"Als u deze optie inschakelt, wordt gedetailleerde foutinformatie met Misskey gedeeld wanneer zich een probleem voordoet. Dit helpt de kwaliteit van Misskey te verbeteren.\nDit omvat informatie zoals de versie van uw OS, welke browser u gebruikt, uw activiteit in Misskey, enz."
myTheme:"Mijn thema"
backgroundColor:"Achtergrondkleur"
accentColor:"Accentkleur"
textColor:"Tekstkleur"
saveAs:"Opslaan als…"
advanced:"Geavanceerd"
advancedSettings:"Geavanceerde instellingen"
value:"Waarde"
createdAt:"Aangemaakt at"
updatedAt:"Laatst gewijzigd at"
saveConfirm:"Wijzigingen opslaan?"
deleteConfirm:"Echt verwijderen?"
invalidValue:"Ongeldige waarde."
registry:"Registry"
closeAccount:"Gebruikersaccount sluiten"
currentVersion:"Huidige versie"
latestVersion:"Nieuwste versie"
youAreRunningUpToDateClient:"Je gebruikt de nieuwste versie van je client."
newVersionOfClientAvailable:"Er is een nieuwere versie van je client beschikbaar."
usageAmount:"Gebruik"
capacity:"Capaciteit"
inUse:"Gebruikt"
editCode:"Code bewerken"
apply:"Toepassen"
receiveAnnouncementFromInstance:"Meldingen ontvangen van deze instantie"
emailNotification:"E-mailmeldingen"
publish:"Publiceren"
inChannelSearch:"In kanaal zoeken"
useReactionPickerForContextMenu:"Open reactieselectie door rechts te klikken"
typingUsers:"{users} is/zijn aan het schrijven..."
jumpToSpecifiedDate:"Naar een specifieke datum springen"
showingPastTimeline:"Momenteel wordt een oude tijdlijn weergeven"
clear:"Terugkeren"
markAllAsRead:"Alles als gelezen markeren"
goBack:"Terug"
unlikeConfirm:"Wil je echt je like verwijderen?"
fullView:"Volledig zicht"
quitFullView:"Volledig zicht verlaten"
addDescription:"Beschrijving toevoegen"
userPagePinTip:"Je kunt hier notities tonen door “Vastmaken aan profiel” te selecteren in het menu van de individuele notities."
notSpecifiedMentionWarning:"Deze notitie bevat verwijzingen naar gebruikers die niet zijn geselecteerd als ontvangers"
info:"Over"
userInfo:"Gebruikersinformatie"
unknown:"Onbekend"
onlineStatus:"Online status"
hideOnlineStatus:"Online status verbergen"
hideOnlineStatusDescription:"Het verbergen van je online status vermindert het nut van functies zoals zoeken."
noMaintainerInformationWarning:"Operatorinformatie is niet geconfigureerd."
noInquiryUrlWarning:"Contact-URL niet opgegeven"
noBotProtectionWarning:"Bescherming tegen bots is niet geconfigureerd."
configure:"Configureer"
postToGallery:"Nieuw galerijbericht maken"
postToHashtag:"Post naar deze hashtag"
gallery:"Galerij"
recentPosts:"Recente berichten"
popularPosts:"Populair berichten"
shareWithNote:"Delen met notitie"
ads:"Advertenties"
expiration:"Deadline"
startingperiod:"Start"
memo:"Memo"
priority:"Prioriteit"
high:"Hoge"
middle:"Medium"
low:"Lage"
emailNotConfiguredWarning:"E-mailadres niet ingesteld."
ratio:"Verhouding"
previewNoteText:"Show voorproefje"
customCss:"Aangepaste CSS"
customCssWarn:"Gebruik deze instelling alleen als je weet wat het doet. Ongeldige invoer kan ertoe leiden dat de client niet meer normaal functioneert."
global:"Globaal"
squareAvatars:"Toon profielfoto's as vierkant"
sent:"Verzonden"
received:"Ontvangen"
searchResult:"Zoekresultaten"
hashtags:"Hashtags"
troubleshooting:"Probleemoplossing"
useBlurEffect:"Vervagingseffecten in de UI gebruike"
learnMore:"Meer leren"
misskeyUpdated:"Misskey is bijgewerkt!"
whatIsNew:"Wijzigingen tonen"
translate:"Vertalen"
translatedFrom:"Vertaald uit {x}"
accountDeletionInProgress:"De verwijdering van je gebruikersaccount wordt momenteel verwerkt."
usernameInfo:"Een naam die kan worden gebruikt om je gebruikersaccount op deze server te identificeren. Je kunt het alfabet (a~z, A~Z), cijfers (0~9) of underscores (_) gebruiken. Gebruikersnamen kunnen later niet worden gewijzigd."
aiChanMode:"Ai Mode"
devMode:"Ontwikkelaar modus"
keepCw:"Inhoudswaarschuwingen behouden"
pubSub:"Pub/Sub Gebruikersaccounts"
lastCommunication:"Laatste communicatie"
resolved:"Opgelost"
unresolved:"Onopgelost"
breakFollow:"Volger verwijderen"
breakFollowConfirm:"Deze volger echt weghalen?"
itsOn:"Ingeschakeld"
itsOff:"Uitgeschakeld"
on:"Op"
off:"Uit"
emailRequiredForSignup:"Vereist e-mailadres voor aanmelding"
@ -426,20 +948,59 @@ pushNotificationAlreadySubscribed: "Pushberichtrn al ingeschakeld"
windowMaximize:"Maximaliseren"
windowRestore:"Herstellen"
loggedInAsBot:"Momenteel als bot ingelogd"
show:"Weergave"
correspondingSourceIsAvailable:"De bijbehorende broncode is beschikbaar bij {anchor}"
invalidParamErrorDescription:"De aanvraagparameters zijn ongeldig. Dit komt meestal door een bug, maar kan ook omdat de invoer te lang is of iets dergelijks."
collapseRenotes:"Renotes die je al gezien hebt, inklappen"
collapseRenotesDescription:"Klapt notities in waar je al op gereageerd hebt of die je al gerenotet hebt."
prohibitedWords:"Verboden woorden"
prohibitedWordsDescription:"Activeert een foutmelding als er geprobeerd wordt een notitie met de ingestelde woorden te plaatsen. Meerdere woorden kunnen worden ingesteld, elk op hun eigen regel."
hiddenTags:"Verborgen hashtags"
hiddenTagsDescription:"Selecteer tags die niet worden weergegeven in de trends. Meerdere tags kunnen worden geregistreerd, elk op hun eigen regel."
enableStatsForFederatedInstances:"Statistieken van remote servers ontvangen"
limitWidthOfReaction:"Limiteert de maximale breedte van reacties en geef ze verkleind weer"
audio:"Audio"
audioFiles:"Audio"
archived:"Gearchiveerd"
unarchive:"Dearchiveren"
lookupConfirm:"Weet je zeker dat je dit wil opzoeken?"
openTagPageConfirm:"Wil je deze hashtagpagina openen?"
specifyHost:"Specificeer host"
icon:"Avatar"
replies:"Antwoord"
replies:"Antwoorden"
renotes:"Herdelen"
followingOrFollower:"Gevolgd of volger"
confirmShowRepliesAll:"Dit is een onomkeerbare operatie. Weet je zeker dat reacties op anderen van iedereen die je volgt, wil weergeven in je tijdlijn?"
keepOriginalUploadingDescription:"Zapisuje oryginalnie przesłany obraz w niezmienionej postaci. Jeśli ta opcja jest wyłączona, po przesłaniu zostanie wygenerowana wersja do wyświetlenia w Internecie."
@ -282,7 +281,6 @@ uploadFromUrlMayTakeTime: "Wysyłanie może chwilę potrwać."
cannotPerformTemporaryDescription:"Ta akcja nie może zostać wykonana, z powodu przekroczenia limitu wykonań. Prosimy poczekać chwilę i spróbować ponownie"
invalidParamError:"Błąd parametrów"
invalidParamErrorDescription:"Wartości, które zostały podane są niepoprawne. Zwykle jest to spowodowane bugiem, lecz również może być to spowodowane przekroczeniem limitu wartości, lub podobnym problemem"
permissionDeniedError:"Odrzucono operacje"
permissionDeniedErrorDescription:"Konto nie posiada uprawnień"
@ -5,9 +5,13 @@ introMisskey: "Bem-vindo! O Misskey é um serviço de microblog descentralizado
poweredByMisskeyDescription:"{name} é uma instância da plataforma de código aberto <b>Misskey</b>."
monthAndDay:"{day}/{month}"
search:"Pesquisar"
reset:"Redefinir"
notifications:"Notificações"
username:"Nome de usuário"
password:"Senha"
initialPasswordForSetup:"Senha para a configuração inicial"
initialPasswordIsIncorrect:"Senha para configuração inicial está incorreta"
initialPasswordForSetupDescription:"Use a senha configurada no arquivo de configuração se você instalou o Misskey manualmente.\nSe você estiver utilizando um serviço de hospedagem, utilize a senha fornecida.\nSe uma senha não foi configurada, deixe em branco e continue."
proxyAccountDescription:"Uma conta de proxy é uma conta que assume o acompanhamento remoto de um usuário sob certas condições específicas. Por exemplo, quando um usuário inclui um usuário remoto em uma lista, mas ninguém na lista está seguindo o usuário remoto, a atividade não é entregue ao servidor. Nesse caso, a conta de proxy entra em ação para seguir o usuário remoto em vez disso."
silencedInstancesDescription:"Liste o nome de hospedagem dos servidores que você deseja silenciar, separados por linha. Todas as contas desses servidores serão silenciada e poderão enviar solicitações para seguir, mas não poderão mencionar usuários locais sem segui-los. Isso não afetará servidores bloqueados."
mediaSilencedInstances:"Instâncias com mídia silenciadas"
mediaSilencedInstancesDescription:"Liste o nome de hospedagem dos servidores cuja mídia você deseja silenciar, separados por linha. Todas as contas desses servidores serão consideradas sensíveis e não poderão utilizar emojis personalizados. Isso não afetará servidores bloqueados."
federationAllowedHosts:"Servidores com federação permitida"
federationAllowedHostsDescription:"Especifique o endereço dos servidores em que deseja permitir a federação separados por linha."
keepOriginalUploadingDescription:"Ao fazer o upload de uma imagem, ela será mantida em sua versão original. Caso desative esta opção, o navegador irá gerar uma versão da imagem otimizada para publicação na web durante o upload."
@ -295,7 +301,7 @@ uploadFromUrlMayTakeTime: "Pode levar algum tempo para que o upload seja conclu
explore:"Explorar"
messageRead:"Lida"
noMoreHistory:"Não existe histórico anterior"
startMessaging:"Iniciar conversação"
startChat:"Iniciar conversa"
nUsersRead:"{n} pessoas leram"
agreeTo:"Eu concordo com {0}"
agree:"Concordar"
@ -334,6 +340,7 @@ renameFolder: "Renomear Pasta"
deleteFolder:"Excluir pasta"
folder:"Pasta"
addFile:"Adicionar arquivo"
showFile:"Mostrar arquivos"
emptyDrive:"O drive está vazio"
emptyFolder:"A pasta está vazia"
unableToDelete:"Não é possível excluir"
@ -376,7 +383,6 @@ enableLocalTimeline: "Ativar linha do tempo local"
enableGlobalTimeline:"Ativar linha do tempo global"
disablingTimelinesInfo:"Se você desabilitar essas linhas do tempo, administradores e moderadores ainda poderão usá-las por conveniência."
registration:"Registar"
enableRegistration:"Permitir que qualquer pessoa se registre"
invite:"Convidar"
driveCapacityPerLocalAccount:"Capacidade do drive por usuário local"
driveCapacityPerRemoteAccount:"Capacidade do drive por usuário remoto"
@ -418,6 +424,7 @@ antennaExcludeBots: "Ignorar contas de bot"
antennaKeywordsDescription:"Se você separá-lo com um espaço, será uma especificação AND, e se você separá-lo com uma quebra de linha, será uma especificação OR."
notifyAntenna:"Notificar novas notas"
withFileAntenna:"Apenas notas com arquivos anexados"
excludeNotesInSensitiveChannel:"Excluir notas de canais sensíveis"
enableServiceworker:"Ative as notificações push para o seu navegador"
antennaUsersDescription:"Especificar nomes de utilizador separados por quebras de linha"
caseSensitive:"Maiúsculas e minúsculas"
@ -448,6 +455,7 @@ totpDescription: "Digite a senha de uso único informado pelo aplicativo autenti
moderator:"Moderador"
moderation:"Moderação"
moderationNote:"Nota de moderação"
moderationNoteDescription:"Você pode preencher notas que serão compartilhadas apenas com moderadores."
addModerationNote:"Adicionar nota de moderação"
moderationLogs:"Logs de moderação"
nUsersMentioned:"Postado por {n} pessoas"
@ -483,8 +491,6 @@ noteOf: "Publicação de {user}"
quoteAttached:"Com citação"
quoteQuestion:"Anexar como citação?"
attachAsFileQuestion:"O texto na área de transferência é muito longo. Você gostaria de anexá-lo como um arquivo de texto?"
noMessagesYet:"Sem conversas até o momento"
newMessageExists:"Há uma nova mensagem"
onlyOneFileCanBeAttached:"Apenas um arquivo pode ser anexado a uma mensagem"
signinRequired:"É necessário se inscrever ou fazer login antes de continuar"
signinOrContinueOnRemote:"Para continuar, você precisa mover o seu servidor ou entrar/cadastrar-se nesse servidor."
@ -509,6 +515,10 @@ uiLanguage: "Idioma de exibição da interface "
aboutX:"Sobre {x}"
emojiStyle:"Estilo de emojis"
native:"Nativo"
menuStyle:"Estilo do menu"
style:"Estilo"
drawer:"Gaveta"
popup:"Pop-up"
showNoteActionsOnlyHover:"Exibir as ações da nota somente ao passar o cursor sobre ela"
showReactionsCount:"Ver o número de reações nas notas"
useSoundOnlyWhenActive:"Apenas reproduzir sons quando Misskey estiver aberto."
details:"Detalhes"
renoteDetails:"Detalhes da repostagem"
chooseEmoji:"Selecione um emoji"
unableToProcess:"Não é possível concluir a operação"
recentUsed:"Usado recentemente"
@ -591,6 +602,8 @@ ascendingOrder: "Ascendente"
descendingOrder:"Descendente"
scratchpad:"Bloco de rascunho"
scratchpadDescription:"O Bloco de rascunho fornece um ambiente experimental para AiScript. Permite escrever, executar e verificar os resultados do código para interagir com o Misskey."
uiInspector:"Inspecionador de interface"
uiInspectorDescription:"Você pode ver a lista de servidores de componentes de interface na memória. Componentes da interface serão gerados pela função Ui:C:."
output:"Resultado"
script:"Script"
disablePagesScript:"Desabilitar scripts nas páginas"
hardWordMuteDescription:"Esconder notas que contêm a palavra ou frase especificada. Diferente do silenciamento de palavras, a nota será completamente escondida."
regexpError:"Erro na expressão regular"
regexpErrorDescription:"Ocorreu um erro na expressão regular na linha {line} da palavra mutada {tab}:"
instanceMute:"Instâncias silenciadas"
userSaysSomething:"{name} disse algo"
userSaysSomethingAbout:"{name} disse algo sobre \"{word}\""
makeActive:"Ativar"
display:"Visualizar"
copy:"Copiar"
copiedToClipboard:"Copiado à área de transferência"
metrics:"Métricas"
overview:"Visão geral"
logs:"Logs"
@ -909,6 +927,7 @@ followersVisibility: "Visibilidade dos seguidores"
continueThread:"Ver mais desta conversa"
deleteAccountConfirm:"Deseja realmente excluir a conta?"
incorrectPassword:"Senha inválida."
incorrectTotp:"A senha de uso único está incorreta ou expirou."
voteConfirm:"Deseja confirmar o seu voto em \"{choice}\"?"
hide:"Ocultar"
useDrawerReactionPickerForMobile:"Mostrar em formato de gaveta"
@ -933,6 +952,9 @@ oneHour: "1 hora"
oneDay:"1 dia"
oneWeek:"1 semana"
oneMonth:"1 mês"
threeMonths:"3 meses"
oneYear:"1 ano"
threeDays:"3 dias"
reflectMayTakeTime:"As mudanças podem demorar a aparecer."
failedToFetchAccountInformation:"Não foi possível obter informações da conta"
rateLimitExceeded:"Taxa limite excedido"
@ -957,6 +979,7 @@ document: "Documentação"
numberOfPageCache:"Número de cache de página"
numberOfPageCacheDescription:"Aumentar isso melhora a conveniência, mas também resulta em maior carga e uso de memória."
logoutConfirm:"Gostaria de encerrar a sessão?"
logoutWillClearClientData:"Sair irá remover as configurações do cliente do navegador. Para redefinir as configurações ao entrar, você deve habilitar o backup automático de configurações."
lastActiveDate:"Última data de uso"
statusbar:"Barra de status"
pleaseSelect:"Por favor, selecione."
@ -1073,6 +1096,7 @@ retryAllQueuesConfirmTitle: "Gostaria de tentar novamente agora?"
retryAllQueuesConfirmText:"Isso irá temporariamente aumentar a carga do servidor."
enableChartsForRemoteUser:"Gerar gráficos estatísticos de usuários remotos"
enableChartsForFederatedInstances:"Gerar gráficos estatísticos de instâncias remotas"
enableStatsForFederatedInstances:"Receber estatísticas de servidores remotos"
showClipButtonInNoteFooter:"Adicionar \"Clip\" ao menu de ação de notas"
reactionsDisplaySize:"Tamanho de exibição das reações"
limitWidthOfReaction:"Limita o comprimento máximo de reações e as exibe em tamanho reduzido"
@ -1259,7 +1283,181 @@ confirmWhenRevealingSensitiveMedia: "Confirmar ao revelar mídia sensível"
sensitiveMediaRevealConfirm:"Essa mídia pode ser sensível. Deseja revelá-la?"
createdLists:"Listas criadas"
createdAntennas:"Antenas criadas"
fromX:"De {x}"
genEmbedCode:"Gerar código de embed"
noteOfThisUser:"Notas por este usuário"
clipNoteLimitExceeded:"Não é possível adicionar mais notas ao clipe."
performance:"Desempenho"
modified:"Modificado"
discard:"Descartar"
thereAreNChanges:"Há {n} mudança(s)"
signinWithPasskey:"Entrar com Passkey"
unknownWebAuthnKey:"Passkey desconhecida"
passkeyVerificationFailed:"A verificação com Passkey falhou."
passkeyVerificationSucceededButPasswordlessLoginDisabled:"A verificação com Passkey teve êxito, mas a entrada sem senha está desabilitada."
messageToFollower:"Mensagem aos seguidores"
target:"Alvo"
testCaptchaWarning:"Essa função é utilizada apenas para testar CAPTCHA. <strong>Não a use num ambiente de produção.</strong>"
prohibitedWordsForNameOfUser:"Palavras proibidas para nomes de usuário"
prohibitedWordsForNameOfUserDescription:"Se quaisquer palavras dessa lista forem incluídas no nome de usuário, seu uso será negado. Usuários com privilégios de moderador não serão afetados pela restrição."
yourNameContainsProhibitedWords:"O seu nome possui palavras proibidas"
yourNameContainsProhibitedWordsDescription:"Se você deseja utilizar esse nome, entre em contato com o administrador do servidor."
thisContentsAreMarkedAsSigninRequiredByAuthor:"O autor exige que você esteja cadastrado para ver"
lockdown:"Lockdown"
pleaseSelectAccount:"Selecione uma conta"
availableRoles:"Cargos disponíveis"
acknowledgeNotesAndEnable:"Ative após compreender as precauções."
federationSpecified:"Esse servidor opera com uma lista branca de federação. Interagir com servidores diferentes daqueles designados pela administração não é permitido."
federationDisabled:"Federação está desabilitada nesse servidor. Você não pode interagir com usuários de outros servidores."
confirmOnReact:"Confirmar ao reagir"
reactAreYouSure:"Você deseja adicionar uma reação \"{emoji}\"?"
markAsSensitiveConfirm:"Você deseja definir essa mídia como sensível?"
unmarkAsSensitiveConfirm:"Você deseja remover a definição dessa mídia como sensível?"
preferences:"Preferências"
accessibility:"Acessibilidade"
preferencesProfile:"Perfil de preferências"
copyPreferenceId:"Copiar ID de preferências"
resetToDefaultValue:"Reverter ao padrão"
overrideByAccount:"Sobrescrever pela conta"
untitled:"Sem título"
noName:"Sem nome"
skip:"Pular"
restore:"Redefinir"
syncBetweenDevices:"Sincronizar entre dispositivos"
preferenceSyncConflictTitle:"O valor configurado já existe no servidor."
preferenceSyncConflictText:"As preferências com a sincronização ativada irão salvar os seus valores no servidor. Porém, já existem valores no servidor. Qual conjunto de valores você deseja sobrescrever?"
preferenceSyncConflictChoiceServer:"Valor configurado no servidor"
preferenceSyncConflictChoiceDevice:"Valor configurado no dispositivo"
preferenceSyncConflictChoiceCancel:"Cancelar a habilitação de sincronização"
paste:"Colar"
emojiPalette:"Paleta de emojis"
postForm:"Campo de postagem"
textCount:"Contagem de caracteres"
information:"Informações"
chat:"Conversas"
migrateOldSettings:"Migrar configurações antigas de cliente"
migrateOldSettings_description:"Isso deve ser feito automaticamente. Caso o processo de migração tenha falhado, você pode acioná-lo manualmente. As informações atuais de migração serão substituídas."
compress:"Comprimir"
right:"Direita"
bottom:"Inferior"
top:"Superior"
embed:"Embed"
settingsMigrating:"Configurações estão sendo migradas, aguarde... (Você pode migrar manualmente em Configurações→Outros→Migrar configurações antigas de cliente)"
readonly:"Ler apenas"
goToDeck:"Voltar ao Deck"
federationJobs:"Tarefas de Federação"
_chat:
noMessagesYet:"Ainda não há mensagens"
newMessage:"Nova mensagem"
individualChat:"Conversa Particular"
individualChat_description:"Ter uma conversa particular com outra pessoa."
roomChat:"Conversa de Grupo"
roomChat_description:"Uma sala de conversas com várias pessoas. Você pode adicionar pessoas que não permitem conversas privadas se elas aceitarem o convite."
createRoom:"Criar Sala"
inviteUserToChat:"Convide usuários para começar a conversar"
yourRooms:"Salas criadas"
joiningRooms:"Salas ingressadas"
invitations:"Convidar"
noInvitations:"Sem convites"
history:"Histórico"
noHistory:"Ainda não há histórico"
noRooms:"Nenhuma sala encontrada"
inviteUser:"Convidar Usuários"
sentInvitations:"Convites Enviados"
join:"Entrar"
ignore:"Ignorar"
leave:"Deixar sala"
members:"Membros"
searchMessages:"Pesquisar mensagens"
home:"Início"
send:"Enviar"
newline:"Nova linha"
muteThisRoom:"Silenciar sala"
deleteRoom:"Excluir sala"
chatNotAvailableForThisAccountOrServer:"Conversas não estão habilitadas nesse servidor ou para essa conta."
chatIsReadOnlyForThisAccountOrServer:"Conversas são apenas para leitura nesse servidor ou para essa conta. Não é possível escrever novas mensagens ou criar/ingressar novas conversas."
chatNotAvailableInOtherAccount:"A função de conversas está desabilitadas para o outro usuário."
cannotChatWithTheUser:"Não é possível conversar com esse usuário."
cannotChatWithTheUser_description:"Conversas estão indisponíveis ou o outro usuário não as habilitou."
chatWithThisUser:"Conversar com usuário"
thisUserAllowsChatOnlyFromFollowers:"Esse usuário aceita conversar apenas com seguidores."
thisUserAllowsChatOnlyFromFollowing:"Esse usuário aceita conversar apenas com quem segue."
thisUserAllowsChatOnlyFromMutualFollowing:"Esse usuário aceita conversar apenas com seguidores mútuos."
thisUserNotAllowedChatAnyone:"Esse usuário não aceita conversar com ninguém."
chatAllowedUsers:"Com quem permitir conversas"
chatAllowedUsers_note:"Você pode conversar com qualquer um com quem tenha iniciado uma conversa independente dessa configuração."
_chatAllowedUsers:
everyone:"Todos"
followers:"Seus seguidores"
following:"Quem você segue"
mutual:"Seguidores mútuos"
none:"Ninguém"
_emojiPalette:
palettes:"Paleta"
enableSyncBetweenDevicesForPalettes:"Sincronizar paleta entre dispositivos"
paletteForMain:"Paleta principal"
paletteForReaction:"Paleta de reações"
_settings:
driveBanner:"Você consegue administrar e configurar o drive, conferir o seu uso e configurar as opções de envio de arquivos."
pluginBanner:"Você pode ampliar as funções do cliente com plugins. Você pode instalar plugins, configurar e administrar individualmente."
notificationsBanner:"Você pode configurar os tipos e intervalo das notificações do servidor, além de notificações push."
api:"API"
webhook:"Webhook"
serviceConnection:"Integração de serviço"
serviceConnectionBanner:"Administre e configure tokens de acesso e webhooks para interagir com aplicações e serviços externos."
accountData:"Dados da conta"
accountDataBanner:"Exportar e importar dados da conta."
muteAndBlockBanner:"Você pode configurar meios para esconder conteúdo e restringir ações de certos usuários."
accessibilityBanner:"Você pode personalizar o visual e comportamento do cliente, além de configurar modos de otimizar o uso."
privacyBanner:"Você pode configurar a privacidade da conta por meio da visibilidade do conteúdo, capacidade de descoberta e aprovação manual de seguidores."
securityBanner:"Você pode configurar a segurança da conta em ajustes como senha, meios de entrada, aplicativos de autenticação e chaves de acesso."
preferencesBanner:"Você pode configurar o comportamento geral do cliente segundo as suas preferências."
appearanceBanner:"Você pode configurar a aparência do cliente e ajustes de tela segundo as suas preferências."
soundsBanner:"Você pode configurar a reprodução de sons no cliente."
timelineAndNote:"Notas e linha do tempo"
makeEveryTextElementsSelectable:"Tornar todos os elementos de texto selecionáveis"
makeEveryTextElementsSelectable_description:"Habilitar isso pode reduzir a usabilidade em algumas situações"
useStickyIcons:"Fazer ícones acompanharem a rolagem da tela"
showNavbarSubButtons:"Mostrar sub-botões na barra de navegação"
ifOn:"Quando ligado"
ifOff:"Quando desligado"
enableSyncThemesBetweenDevices:"Sincronizar temas instalados entre dispositivos"
_chat:
showSenderName:"Exibir nome de usuário do remetente"
sendOnEnter:"Pressionar Enter para enviar"
_preferencesProfile:
profileName:"Nome do perfil"
profileNameDescription:"Defina o nome que identifica esse dispositivo."
noBackupsFoundDescription:"Nenhum backup automático foi encontrado. Se você salvou um arquivo de backup manualmente, você pode importá-lo e restaurá-lo."
selectBackupToRestore:"Selecionar um backup para restaurar"
youNeedToNameYourProfileToEnableAutoBackup:"Um nome de perfil deve ser definido para habilitar o backup automático."
autoPreferencesBackupIsNotEnabledForThisDevice:"Backup automático de configurações não está habilitado no dispositivo."
backupFound:"Backup de configurações encontrado"
_accountSettings:
requireSigninToViewContents:"Exigir cadastro para ver o conteúdo"
requireSigninToViewContentsDescription1:"Exigir cadastro para ver todas as notas e outro conteúdo que você criou. Isso previne 'crawlers' de coletar os seus dados."
requireSigninToViewContentsDescription2:"Conteúdo não será exibido nas prévias de URL (OGP), incorporado em outras páginas web ou em servidores que não têm suporte a citações."
requireSigninToViewContentsDescription3:"Essas restrições podem não ser aplicadas a conteúdo federado de outros servidores."
makeNotesFollowersOnlyBefore:"Tornar notas passadas visíveis apenas para seguidores."
makeNotesFollowersOnlyBeforeDescription:"Com essa função ativada, apenas seguidores podem ver as notas anteriores à data e hora marcadas. Se isso for desativado, o status de publicação da nota será reestabelecido."
makeNotesHiddenBeforeDescription:"Com essa função ativada, apenas você poderá ver as notas anteriores à data e hora marcadas. Se isso for desativado, o status de publicação da nota será reestabelecido."
mayNotEffectForFederatedNotes:"Notas federadas a servidores remotos podem não ser afetadas."
mayNotEffectSomeSituations:"Essas restrições são simplificadas. Elas podem não ser aplicadas em algumas situações, como ao visualizar num servidor remoto ou durante a moderação."
notesHavePassedSpecifiedPeriod:"Notas que duraram um tempo específico."
notesOlderThanSpecifiedDateAndTime:"Notas antes do tempo específico."
_abuseUserReport:
forward:"Encaminhar"
forwardDescription:"Encaminhar a denúncia ao servidor remoto como uma conta anônima do sistema."
resolve:"Resolver"
accept:"Aceitar"
reject:"Rejeitar"
resolveTutorial:"Se a denúncia for legítima em conteúdo, selecione \"Aceitar\" para marcar o caso como resolvido afirmativamente.\nSe a denúncia for ilegítima em conteúdo, selecione \"Rejeitar\" para marcar o caso como resolvido negativamente."
_delivery:
status:"Estado de entrega"
stop:"Suspenso"
@ -1394,8 +1592,12 @@ _serverSettings:
fanoutTimelineDescription:"Melhora significativamente a performance do retorno da linha do tempo e reduz o impacto no banco de dados quando habilitado. Em contrapartida, o uso de memória do Redis aumentará. Considere desabilitar em casos de baixa disponibilidade de memória ou instabilidade do servidor."
fanoutTimelineDbFallback:"\"Fallback\" ao banco de dados"
fanoutTimelineDbFallbackDescription:"Quando habilitado, a linha do tempo irá recuar ao banco de dados caso consultas adicionais sejam feitas e ela não estiver em cache. Quando desabilitado, o impacto no servidor será reduzido ao eliminar o recuo, mas limita a quantidade de linhas do tempo que podem ser recebidas."
reactionsBufferingDescription:"Quando ativado, o desempenho durante a criação de uma reação será melhorado substancialmente, reduzindo a carga do banco de dados. Porém, a o uso de memória do Redis irá aumentar."
inquiryUrl:"URL de inquérito"
inquiryUrlDescription:"Especifique um URL para um formulário de inquérito para a administração ou uma página web com informações de contato."
openRegistration:"Abrir a criação de contas"
openRegistrationWarning:"Abrir cadastros contém riscos. É recomendado apenas habilitá-los se houver um sistema de monitoramento contínuo e resolução imediata de problemas."
thisSettingWillAutomaticallyOffWhenModeratorsInactive:"Se nenhuma atividade da moderação for detectada por um tempo, essa configuração será desativada para prevenir spam."
_accountMigration:
moveFrom:"Migrar outra conta para essa"
moveFromSub:"Criar um 'alias' a outra conta"
@ -1692,6 +1894,8 @@ _role:
descriptionOfIsExplorable:"Ao ativar, a lista de membros será pública na seção 'Explorar' e a linha do tempo do cargo ficará disponível."
displayOrder:"Ordenação"
descriptionOfDisplayOrder:"Quanto maior o número, maior a posição de destaque na interface do usuário."
preserveAssignmentOnMoveAccount:"Preservar a associação de cargos durante a migração"
preserveAssignmentOnMoveAccount_description:"Quando ligado, esse cargo será encaminhado para a conta final quando houver migração de um usuário."
canEditMembersByModerator:"Permitir a edição de membros deste cargo por moderadores"
descriptionOfCanEditMembersByModerator:"Quando ativado, os moderadores também poderão atribuir/remover usuários deste papel, além dos administradores. Quando desativado, apenas os administradores poderão fazê-lo."
priority:"Prioridade"
@ -1727,6 +1931,12 @@ _role:
canSearchNotes:"Permitir a busca de notas"
canUseTranslator:"Uso do tradutor"
avatarDecorationLimit:"Número máximo de decorações de avatar que podem ser aplicadas"
canImportAntennas:"Permitir importação de antenas"
canImportBlocking:"Permitir importação de bloqueios"
canImportFollowing:"Permitir importação de usuários seguidos"
canImportMuting:"Permitir importação de silenciamentos"
canImportUserLists:"Permitir importação de listas"
chatAvailability:"Permitir Conversas"
_condition:
roleAssignedTo:"Atribuído a cargos manuais"
isLocal:"Usuário local"
@ -1890,6 +2100,7 @@ _theme:
installed:"{name} foi instalado"
installedThemes:"Temas instalados"
builtinThemes:"Temas nativos"
instanceTheme:"Tema do servidor"
alreadyInstalled:"Esse tema já foi instalado"
invalid:"O formato desse tema é invalido"
make:"Fazer um tema"
@ -1922,7 +2133,6 @@ _theme:
header:"Cabeçalho"
navBg:"Plano de fundo da barra lateral"
navFg:"Texto da barra lateral"
navHoverFg:"Texto da coluna lateral (Selecionado)"
navActive:"Texto da coluna lateral (Ativa)"
navIndicator:"Indicador da coluna lateral"
link:"Link"
@ -1945,17 +2155,15 @@ _theme:
buttonHoverBg:"Plano de fundo de botão (Selecionado)"
inputBorder:"Borda de campo digitável"
driveFolderBg:"Plano de fundo da pasta no Drive"
wallpaperOverlay:"Sobreposição do papel de parede."
badge:"Emblema"
messageBg:"Plano de fundo do chat"
accentDarken:"Cor de destaque (Escurecida)"
accentLighten:"Cor de destaque (Esclarecida)"
fgHighlighted:"Texto Destacado"
_sfx:
note:"Posts"
noteMy:"Própria nota"
notification:"Notificações"
reaction:"Ao selecionar uma reação"
chatMessage:"Mensagens em Conversas"
_soundSettings:
driveFile:"Usar um arquivo de áudio do Drive."
driveFileWarn:"Selecione um arquivo de áudio do Drive."
@ -2102,6 +2310,8 @@ _permissions:
"read:clip-favorite": "Ver Clipes favoritados"
"read:federation": "Ver dados de federação"
"write:report-abuse": "Reportar violação"
"write:chat": "Compor ou editar mensagens de chat"
"read:chat": "Navegar Conversas"
_auth:
shareAccessTitle:"Conceder permissões do aplicativo"
shareAccess:"Você gostaria de autorizar \"{name}\" para acessar essa conta?"
@ -2110,8 +2320,11 @@ _auth:
permissionAsk:"O aplicativo solicita as seguintes permissões"
pleaseGoBack:"Por favor, volte ao aplicativo"
callback:"Retornando ao aplicativo"
accepted:"Acesso permitido"
denied:"Acesso negado"
scopeUser:"Operar como o usuário a seguir"
pleaseLogin:"Por favor, entre para autorizar aplicativos."
byClickingYouWillBeRedirectedToThisUrl:"Quando o acesso for permitido, você será redirecionado para o seguinte endereço"
_antennaSources:
all:"Todas as notas"
homeTimeline:"Notas de usuários seguidos"
@ -2157,6 +2370,7 @@ _widgets:
chooseList:"Selecione uma lista"
clicker:"Clicker"
birthdayFollowings:"Usuários de aniversário hoje"
chat:"Conversas"
_cw:
hide:"Esconder"
show:"Carregar mais"
@ -2220,6 +2434,9 @@ _profile:
changeBanner:"Mudar banner"
verifiedLinkDescription:"Ao inserir um URL que contém um link para essa conta, um ícone de verificação será exibido ao lado do campo"
avatarDecorationMax:"Você pode adicionar até {max} decorações."
followedMessage:"Mensagem exibida quando alguém segue você"
followedMessageDescription:"Você pode definir uma curta mensagem que será exibida aos usuários que seguirem você."
followedMessageDescriptionForLockedAccount:"Se você aceita pedidos de seguidor manualmente, isso será exibido quando você aceitá-los."
_exportOrImport:
allNotes:"Todas as notas"
favoritedNotes:"Notas nos favoritos"
@ -2282,9 +2499,6 @@ _pages:
newPage:"Criar uma Página"
editPage:"Editar essa Página"
readPage:"Ver a fonte dessa Página"
created:"Página criada com sucesso"
updated:"Página atualizada com sucesso"
deleted:"Página excluída com sucesso"
pageSetting:"Configurações da página"
nameAlreadyExists:"O URL de Página especificado já existe"
invalidNameTitle:"O URL de Página especificado é inválido"
@ -2347,6 +2561,7 @@ _notification:
newNote:"Nova nota"
unreadAntennaNote:"Antena {name}"
roleAssigned:"Cargo dado"
chatRoomInvitationReceived:"Você foi convidado para uma conversa"
emptyPushNotificationMessage:"As notificações de alerta foram atualizadas"
achievementEarned:"Conquista desbloqueada"
testNotification:"Notificação teste"
@ -2358,6 +2573,10 @@ _notification:
renotedBySomeUsers:"{n} usuários repostaram a nota"
followedBySomeUsers:"{n} usuários te seguiram"
flushNotification:"Limpar notificações"
exportOfXCompleted:"Exportação de {x} foi concluída"
login:"Alguém entrou na conta"
createToken:"Uma token de acesso foi criada"
createTokenDescription:"Se você não faz ideia, exclua o token de acesso através de \"{text}\"."
_types:
all:"Todas"
note:"Novas notas"
@ -2371,8 +2590,12 @@ _notification:
receiveFollowRequest:"Recebeu pedidos de seguidor"
followRequestAccepted:"Aceitou pedidos de seguidor"
roleAssigned:"Cargo dado"
chatRoomInvitationReceived:"Convite de conversa recebido"
achievementEarned:"Conquista desbloqueada"
exportCompleted:"A exportação foi concluída"
login:"Iniciar sessão"
createToken:"Criar token de acesso"
test:"Notificação teste"
app:"Notificações de aplicativos conectados"
_actions:
followBack:"te seguiu de volta"
@ -2381,6 +2604,9 @@ _notification:
_deck:
alwaysShowMainColumn:"Sempre mostrar a coluna principal"
columnAlign:"Alinhar colunas"
columnGap:"Margem entre colunas"
deckMenuPosition:"Posição do menu do deck"
navbarPosition:"Posição da barra de navegação"
addColumn:"Adicionar coluna"
newNoteNotificationSettings:"Opções de notificação para novas notas"
configureColumn:"Configurar coluna"
@ -2399,6 +2625,7 @@ _deck:
useSimpleUiForNonRootPages:"Usar UI simples para páginas navegadas"
usedAsMinWidthWhenFlexible:"A largura mínima será usada para isso quando o \"Ajuste automático da largura\" estiver ativado"
flexible:"Ajuste automático da largura"
enableSyncBetweenDevicesForProfiles:"Habilitar sincronização das informações do perfil entre dispositivos"
_columns:
main:"Principal"
widgets:"Widgets"
@ -2410,6 +2637,7 @@ _deck:
mentions:"Menções"
direct:"Notas diretas"
roleTimeline:"Linha do tempo do cargo"
chat:"Conversas"
_dialog:
charactersExceeded:"Você excedeu o limite de caracteres! Atualmente em {current} de {max}."
charactersBelow:"Você está abaixo do limite mínimo de caracteres! Atualmente em {current} of {min}."
@ -2438,7 +2666,10 @@ _webhookSettings:
abuseReport:"Quando receber um relatório de abuso"
abuseReportResolved:"Quando relatórios de abuso forem resolvidos "
userCreated:"Quando um usuário é criado"
inactiveModeratorsWarning:"Quando moderadores estiverem inativos por um tempo"
inactiveModeratorsInvitationOnlyChanged:"Quando um moderador está inativo por um tempo e os cadastros passam a exigir convites"
deleteConfirm:"Você tem certeza de que deseja excluir o Webhook?"
testRemarks:"Clique no botão à direita do interruptor para enviar um Webhook de teste com dados fictícios."
_abuseReport:
_notificationRecipient:
createRecipient:"Adicionar destinatário para relatórios de abuso"
@ -2482,6 +2713,8 @@ _moderationLogTypes:
markSensitiveDriveFile:"Arquivo marcado como sensível"
unmarkSensitiveDriveFile:"Arquivo desmarcado como sensível"
resolveAbuseReport:"Relatório resolvido"
forwardAbuseReport:"Denúncia encaminhada"
updateAbuseReportNote:"Nota de moderação da denúncia atualizada"
createInvitation:"Convite gerado"
createAd:"Propaganda criada"
deleteAd:"Propaganda excluída"
@ -2501,6 +2734,8 @@ _moderationLogTypes:
deletePage:"Remover página"
deleteFlash:"Remover Play"
deleteGalleryPost:"Remover a publicação da galeria"
deleteChatRoom:"Sala de Conversas Excluída"
updateProxyAccountDescription:"Atualizar descrição da conta de proxy"
_fileViewer:
title:"Detalhes do arquivo"
type:"Tipo de arquivo"
@ -2514,10 +2749,8 @@ _externalResourceInstaller:
checkVendorBeforeInstall:"Tenha certeza de que o distribuidor desse recurso é confiável antes da instalação."
_plugin:
title:"Deseja instalar esse plugin?"
metaTitle:"Informações do plugin"
_theme:
title:"Deseja instalar esse tema?"
metaTitle:"Informações do tema"
_meta:
base:"Paleta de cores base"
_vendorInfo:
@ -2637,3 +2870,135 @@ _contextMenu:
app:"Aplicativo"
appWithShift:"Aplicativo com a tecla shift"
native:"Nativo"
_gridComponent:
_error:
requiredValue:"Esse valor é necessário"
columnTypeNotSupport:"Validação de expressões regulares (RegEx) só é permitida em colunas type:text."
patternNotMatch:"Esse valor não se encaixa no padrão de {pattern}"
searchSettingCaption:"Definir critérios detalhados de busca."
searchLimit:"Limite de busca"
sortOrder:"Ordem de classificação"
registrationLogs:"Histórico de registros"
registrationLogsCaption:"Atualizações e remoções de emoji serão gravadas no histórico. Atualizar, remover, mover a uma nova página ou recarregar limpará o histórico"
alertEmojisRegisterFailedDescription:"Não foi possível atualizar ou remover emojis. Por favor, confira o histórico de registro para mais detalhes."
_logs:
showSuccessLogSwitch:"Exibir sucessos no histórico"
failureLogNothing:"Não há registro de falhas."
logNothing:"Não há registros."
_remote:
selectionRowDetail:"Detalhes da linha selecionada"
importSelectionRangesRows:"Importar linhas no intervalo"
importEmojisButton:"Importar Emojis selecionados"
confirmImportEmojisTitle:"Importar Emojis"
confirmImportEmojisDescription:"Importar {count} Emoji(s) recebidos de um servidor remoto. Por favor, preste atenção na licença do Emoji. Tem certeza que deseja continuar?"
_local:
tabTitleList:"Emojis registrados"
tabTitleRegister:"Registro de Emoji"
_list:
emojisNothing:"Não há Emojis registrados."
markAsDeleteTargetRows:"Marcar linhas selecionadas para remoção"
markAsDeleteTargetRanges:"Marcar linhas no intervalo para remoção"
alertUpdateEmojisNothingDescription:"Não há Emojis atualizados."
alertDeleteEmojisNothingDescription:"Não há Emojis marcados para remoção."
confirmResetDescription:"Todas as mudanças serão redefinidas."
confirmMovePageDesciption:"Mudanças foram feitas nos Emojis dessa página. Se você sair sem salvar, todas serão descartadas."
dialogSelectRoleTitle:"Buscar por cargo que pode usar esse Emoji"
_register:
uploadSettingTitle:"Configurações de envio"
uploadSettingDescription:"Nessa tela, você pode configurar o comportamento ao enviar Emojis."
directoryToCategoryLabel:"Transformar as pastas em categorias"
directoryToCategoryCaption:"Quando você arrastar um diretório, converter o caminho das pastas no campo \"categoria\"."
emojiInputAreaCaption:"Selecione Emojis que você deseja registrar utilizando um dos métodos."
emojiInputAreaList1:"Arraste arquivos de imagem ou diretórios dentro desse quadro"
emojiInputAreaList2:"Clique nesse link para abrir a seleção de arquivos"
emojiInputAreaList3:"Clique nesse link para selecionar do drive"
confirmRegisterEmojisDescription:"Registrando os Emojis da lista como novos Emojis personalizados. Deseja continuar? (Para evitar sobrecarga, apenas {count} Emoji(s) podem ser registrados em uma única operação)"
confirmClearEmojisDescription:"Descartando edições e limpando Emojis da lista. Deseja continuar?"
confirmUploadEmojisDescription:"Enviando {count} arquivo(s) arrastados ao drive. Deseja continuar?"
_embedCodeGen:
title:"Personalizar código do embed"
header:"Exibir cabeçalho"
autoload:"Carregar mais automaticamente (obsoleto)"
maxHeight:"Altura máxima"
maxHeightDescription:"Colocar em 0 desabilita a altura máxima. Especifique um valor para prevenir uma expansão vertical contínua."
maxHeightWarn:"O limite de altura máxima está desabilitado (0). Se isso não for intencional, insira um valor para a altura máxima."
previewIsNotActual:"A exibição difere do embed original porque ela excede o tamanho da tela de prévia."
rounded:"Tornar arredondado"
border:"Adicionar uma borda ao quadro externo"
applyToPreview:"Aplicar para a prévia"
generateCode:"Gerar código de embed"
codeGenerated:"O código foi gerado"
codeGeneratedDescription:"Coloque o código no seu website para incorporar o conteúdo."
_selfXssPrevention:
warning:"AVISO"
title:"\"Cole algo nessa tela\" é uma fraude"
description1:"Se você colar algo aqui, um usuário malicioso pode sabotar a sua conta ou roubar informações pessoais."
description2:"Se você não entender exatamente o que está colando, %cpare agora e feche essa janela."
description3:"Para mais informação, clique no link. {link}"
_followRequest:
recieved:"Aplicação recebida"
sent:"Aplicação enviada"
_remoteLookupErrors:
_federationNotAllowed:
title:"Não foi possível se comunicar com o servidor"
description:"Comunicação com esse servidor pode ter sido desabilitada ou o servidor pode ter sido bloqueado.\nPor favor, entre em contato com o administrador do servidor."
_uriInvalid:
title:"Endereço inválido"
description:"Há um problema com o endereço inserido. Por favor, confira se você não inseriu caracteres inválidos."
_requestFailed:
title:"Solicitação falhou"
description:"Comunicação com esse servidor falhou. O servidor pode estar inativo. Além disso, confira se você não inseriu um endereço inválido ou inexistente."
_responseInvalid:
title:"Resposta inválida"
description:"Foi possível comunicar com o servidor, porém os dados obtidos foram incorretos."
_noSuchObject:
title:"Não encontrado"
description:"O recurso solicitado não foi encontrado, confira o endereço."
_captcha:
verify:"Por favor, verifique o CAPTCHA"
testSiteKeyMessage:"Você pode conferir a prévia inserindo valores de teste para o site e chaves secretas.\nVeja a página seguinte para mais detalhes."
_error:
_requestFailed:
title:"O pedido do CAPTCHA falhou"
text:"Por favor, tente novamente ou verifique as configurações."
_verificationFailed:
title:"A validação do CAPTCHA falhou"
text:"Por favor, verifique se as configurações estão corretas."
_unknown:
title:"Erro CAPTCHA"
text:"Houve um erro inexperado."
_bootErrors:
title:"Falha ao carregar"
serverError:"Se o problema persistir após esperar um momento e recarregar, contate a administração da instância com o seguinte ID de erro."
solution:"O seguinte pode resolver o problema."
solution1:"Atualize seu navegador e sistema operacional para a última versão."
solution2:"Desative o bloqueador de anúncios"
solution3:"Limpe o cache do navegador"
solution4:"Defina dom.webaudio.enabled como verdadeiro no Navegador Tor"
otherOption:"Outras opções"
otherOption1:"Excluir ajustes de cliente e cache"
otherOption2:"Iniciar o cliente simples"
otherOption3:"Iniciar ferramenta de reparo"
_search:
searchScopeAll:"Todos"
searchScopeLocal:"Local"
searchScopeServer:"Servidor específico"
searchScopeUser:"Usuário específico"
pleaseEnterServerHost:"Insira o endereço do servidor"
initialPasswordForSetup:"Пароль для начала настройки"
initialPasswordIsIncorrect:"Пароль для запуска настройки неверен"
initialPasswordForSetupDescription:"Если вы установили Misskey самостоятельно, используйте пароль, который вы указали в файле конфигурации.\nЕсли вы используете что-то вроде хостинга Misskey, используйте предоставленный пароль.\nЕсли вы не установили пароль, оставьте его пустым и продолжайте."
forgotPassword:"Забыли пароль?"
fetchingAsApObject:"Приём с других сайтов"
ok:"Подтвердить"
@ -15,7 +18,7 @@ gotIt: "Ясно!"
cancel:"Отмена"
noThankYou:"Нет, спасибо"
enterUsername:"Введите имя пользователя"
renotedBy:"{user} репостнул(а)"
renotedBy:"{user} делает репост"
noNotes:"Нет ни одной заметки"
noNotifications:"Нет уведомлений"
instance:"Экземпляр"
@ -232,6 +235,7 @@ clearCachedFilesConfirm: "Удалить все закэшированные ф
blockedInstances:"Заблокированные инстансы"
blockedInstancesDescription:"Введите список инстансов, которые хотите заблокировать. Они больше не смогут обмениваться с вашим инстансом."
keepOriginalUploadingDescription:"Сохраняет исходную версию при загрузке изображений. Если выключить, то при загрузке браузер генерирует изображение для публикации."
@ -291,7 +294,6 @@ uploadFromUrlMayTakeTime: "Загрузка может занять некото
retryAllQueuesConfirmTitle:"Хотите попробовать ещё раз?"
@ -1098,16 +1101,18 @@ preservedUsernames: "Зарезервированные имена пользо
preservedUsernamesDescription:"Перечислите зарезервированные имена пользователей, отделяя их строками. Они станут недоступны при создании учётной записи. Это ограничение не применяется при создании учётной записи администраторами. Также, уже существующие учётные записи останутся без изменений."
createNoteFromTheFile:"Создать заметку из этого файла"
archive:"Архив"
unarchive:"Разархивировать"
channelArchiveConfirmTitle:"Переместить {name} в архив?"
channelArchiveConfirmDescription:"Архивированные каналы перестанут отображаться в списке каналов или результатах поиска. В них также нельзя будет добавлять новые записи."
thisChannelArchived:"Этот канал находится в архиве."
displayOfNote:"Отображение заметок"
initialAccountSetting:"Настройка профиля"
youFollowing:"Подписки"
youFollowing:"Вы подписаны"
preventAiLearning:"Отказаться от использования в машинном обучении (Генеративный ИИ)"
preventAiLearningDescription:"Запросить краулеров не использовать опубликованный текст или изображения и т.д. для машинного обучения (Прогнозирующий / Генеративный ИИ) датасетов. Это достигается путём добавления \"noai\" HTTP-заголовка в ответ на соответствующий контент. Полного предотвращения через этот заголовок не избежать, так как он может быть просто проигнорирован."
options:"Настройки ролей"
specifyUser:"Указанный пользователь"
lookupConfirm:"Хотите узнать?"
openTagPageConfirm:"Открыть страницу этого хештега?"
specifyHost:"Указать сайт"
failedToPreviewUrl:"Предварительный просмотр недоступен"
@ -1171,6 +1176,17 @@ keepOriginalFilename: "Сохранять исходное имя файла"
keepOriginalFilenameDescription:"Если вы выключите данную настройку, имена файлов будут автоматически заменены случайной строкой при загрузке."
@ -249,7 +249,6 @@ removeAreYouSure: "Är du säker att du vill radera \"{x}\"?"
deleteAreYouSure:"Är du säker att du vill radera \"{x}\"?"
resetAreYouSure:"Vill du återställa?"
saved:"Sparad"
messaging:"Chatt"
upload:"Ladda upp"
keepOriginalUploading:"Behåll originalbild"
keepOriginalUploadingDescription:"Sparar den originellt uppladdade bilden i sitt i befintliga skick. Om avstängd, kommer en webbversion bli genererad vid uppladdning."
@ -262,7 +261,6 @@ uploadFromUrlMayTakeTime: "Det kan ta tid tills att uppladdningen blir klar."
deleteAllFilesConfirm:"Är du säker på att du vill radera alla filer?"
menu:"Meny"
addItem:"Lägg till objekt"
serviceworkerInfo:"Måste vara aktiverad för pushnotiser."
enableInfiniteScroll:"Ladda mer automatiskt"
enablePlayer:"Öppna videospelare"
description:"Beskrivning"
permission:"Behörigheter"
enableAll:"Aktivera alla"
disableAll:"Inaktivera alla"
edit:"Ändra"
enableEmail:"Aktivera epost-utskick"
email:"E-post"
emailAddress:"E-postadress"
smtpHost:"Värd"
smtpUser:"Användarnamn"
smtpPass:"Lösenord"
emptyToDisableSmtpAuth:"Lämna användarnamn och lösenord tomt för att avaktivera SMTP verifiering"
makeActive:"Aktivera"
copy:"Kopiera"
overview:"Översikt"
logs:"Logg"
database:"Databas"
channel:"kanal"
create:"Skapa"
other:"Mer"
abuseReports:"Rapporter"
reportAbuse:"Rapporter"
reportAbuseOf:"Rapportera {name}"
abuseReported:"Din rapport har skickats. Tack så mycket."
send:"Skicka"
openInNewTab:"Öppna i ny flik"
createNew:"Skapa ny"
private:"Privat"
i18nInfo:"Misskey översätts till många olika språk av volontärer. Du kan hjälpa till med översättningen på {link}."
accountInfo:"Kontoinformation"
followersCount:"Antal följare"
yes:"Ja"
no:"Nej"
clips:"Klipp"
duplicate:"Duplicera"
reloadToApplySetting:"Inställningen tillämpas efter sidan laddas om. Vill du göra det nu?"
clearCache:"Rensa cache"
onlineUsersCount:"{n} användare är online"
nUsers:"{n} användare"
nNotes:"{n} Noter"
backgroundColor:"Bakgrundsbild"
textColor:"Text"
saveAs:"Spara som..."
saveConfirm:"Spara ändringar?"
youAreRunningUpToDateClient:"Klienten du använder är uppdaterat."
newVersionOfClientAvailable:"Ny version av klienten är tillgänglig."
editCode:"Redigera kod"
publish:"Publicera"
typingUsers:"{users} skriver"
goBack:"Tillbaka"
addDescription:"Lägg till beskrivning"
info:"Om"
online:"Online"
active:"Aktiv"
offline:"Offline"
enabled:"Aktiverad"
quickAction:"Snabbåtgärder"
user:"Användare"
gallery:"Galleri"
popularPosts:"Populära inlägg"
customCssWarn:"Den här inställningen borde bara ändrats av en som har rätta kunskaper. Om du ställer in det här fel så kan klienten sluta fungera rätt."
global:"Global"
squareAvatars:"Visa fyrkantiga profilbilder"
sent:"Skicka"
searchResult:"Sökresultat"
learnMore:"Läs mer"
misskeyUpdated:"Misskey har uppdaterats!"
translate:"Översätt"
controlPanel:"Kontrollpanel"
manageAccounts:"Hantera konton"
incorrectPassword:"Fel lösenord."
hide:"Dölj"
welcomeBackWithName:"Välkommen tillbaka, {name}"
clickToFinishEmailVerification:"Tryck på [{ok}] för att slutföra bekräftelsen på e-postadressen."
size:"Storlek"
searchByGoogle:"Sök"
indefinitely:"Aldrig"
tenMinutes:"10 minuter"
oneHour:"En timme"
oneDay:"En dag"
oneWeek:"En vecka"
oneMonth:"En månad"
threeMonths:"3 månader"
oneYear:"1 år"
threeDays:"3 dagar"
file:"Filer"
deleteAccount:"Radera konto"
label:"Etikett"
cannotUploadBecauseNoFreeSpace:"Kan inte ladda upp filen för att det finns inget lagringsutrymme kvar."
cannotUploadBecauseExceedsFileSizeLimit:"Kan inte ladda upp filen för att den är större än filstorleksgränsen."
beta:"Beta"
enableAutoSensitive:"Automatisk NSFW markering"
enableAutoSensitiveDescription:"Tillåter automatiskt detektering och marketing av NSFW media genom Maskininlärning när möjligt. Även om denna inställningen är avaktiverad, kan det vara aktiverat på hela instansen."
keepOriginalUploadingDescription:"Orijinal olarak yüklenen görüntüyü olduğu gibi kaydeder. Kapatılırsa, yükleme sırasında web'de görüntülenecek bir sürüm oluşturulur."
@ -273,7 +273,6 @@ uploadFromUrlMayTakeTime: "Yüklemenin tamamlanması biraz süre alabilir."
keepOriginalUploadingDescription:"Зберігає початково завантажене зображення як є. Якщо вимкнено, версія для відображення в Інтернеті буде створена під час завантаження."
@ -259,7 +258,6 @@ uploadFromUrlMayTakeTime: "Завантаження може зайняти де
@ -257,7 +257,6 @@ removeAreYouSure: "“{x}”ni olib tashlamoqchi ekanligingizga ishonchingiz kom
deleteAreYouSure:"“{x}”ni chindan ham yo'q qilmoqchimisiz?"
resetAreYouSure:"Haqiqatan ham qayta tiklansinmi?"
saved:"Saqlandi"
messaging:"Suhbat"
upload:"Yuklash"
keepOriginalUploading:"Asl rasmni saqlang"
keepOriginalUploadingDescription:"Rasmlarni yuklashda asl nusxasini saqlaydi. Agar o'chirilgan bo'lsa, brauzer yuklangandan keyin nashr qilish uchun rasm yaratadi."
@ -270,7 +269,6 @@ uploadFromUrlMayTakeTime: "Yuklash tugallanishi uchun biroz vaqt ketishi mumkin.
explore:"Ko'rib chiqish"
messageRead:"O‘qildi"
noMoreHistory:"Buning ortida hech qanday hikoya yo'q"
startMessaging:"Yangi suhbatni boshlash"
nUsersRead:"{n} tomonidan o'qildi"
agreeTo:"Men {0} ga roziman"
agree:"Rozi bo'lish"
@ -349,7 +347,6 @@ enableLocalTimeline: "Mahalliy vaqt mintaqasini yoqing"
enableGlobalTimeline:"Global vaqt mintaqasini yoqing"
disablingTimelinesInfo:"Administratorlar va Moderatorlar har doim barcha vaqt jadvallariga kirish huquqiga ega bo'ladilar, hatto ular yoqilmagan bo'lsa ham."
registration:"Ro'yxatdan o'tish"
enableRegistration:"Ro'yxatdan o'tishni yoqing"
invite:"Taklif qilish"
driveCapacityPerLocalAccount:"Har bir mahalliy foydalanuvchi uchun disk maydoni"
driveCapacityPerRemoteAccount:"Har bir masofaviy foydalanuvchi uchun disk maydoni"
@ -446,8 +443,6 @@ retype: "Qayta kiriting"
noteOf:"{user} tomonidan joylandi\n"
quoteAttached:"Iqtibos"
quoteQuestion:"Iqtibos sifatida qo'shilsinmi?"
noMessagesYet:"Bu yerda xabarlar yo'q"
newMessageExists:"Yangi xabarlar bor"
onlyOneFileCanBeAttached:"Faqat bitta faylni biriktirish mumkin"
signinRequired:"Davom etishdan oldin ro'yhatdan o'tishingiz yoki tizimga kirishingiz kerak"
introMisskey:"Xin chào! Misskey là một nền tảng tiểu blog phi tập trung mã nguồn mở.\nViết \"tút\" để chia sẻ những suy nghĩ của bạn 📡\nBằng \"biểu cảm\", bạn có thể bày tỏ nhanh chóng cảm xúc của bạn với các tút 👍\nHãy khám phá một thế giới mới! 🚀"
poweredByMisskeyDescription:"{name} là một trong những chủ máy của <b>Misskey</b> là nền tảng mã nguồn mở"
monthAndDay:"{day} tháng {month}"
search:"Tìm kiếm"
reset:"cài lại"
notifications:"Thông báo"
username:"Tên người dùng"
password:"Mật khẩu"
initialPasswordForSetup:"Mật khẩu ban đầu để thiết lập"
initialPasswordIsIncorrect:"Mật khẩu ban đầu đã nhập sai"
initialPasswordForSetupDescription:"Nếu bạn tự cài đặt Misskey, hãy sử dụng mật khẩu ban đầu của bạn đã nhập trong tệp cấu hình.\nNếu bạn đang sử dụng dịch vụ nào đó giống như dịch vụ lưu trữ của Misskey, hãy sử dụng mật khẩu ban đầu được cung cấp.\nNếu bạn chưa đặt mật khẩu ban đầu, vui lòng để trống và tiếp tục."
forgotPassword:"Quên mật khẩu"
fetchingAsApObject:"Đang nạp dữ liệu từ Fediverse..."
ok:"Đồng ý"
@ -45,9 +49,10 @@ pin: "Ghim"
unpin:"Bỏ ghim"
copyContent:"Chép nội dung"
copyLink:"Chép liên kết"
copyRemoteLink:"Sao chép liên kết từ xa"
copyLinkRenote:"Sao chép liên kết ghi chú"
delete:"Xóa"
deleteAndEdit:"Sửa"
deleteAndEdit:"Xóa và soạn thảo lại"
deleteAndEditConfirm:"Bạn có chắc muốn sửa tút này? Những biểu cảm, lượt trả lời và đăng lại sẽ bị mất."
addToList:"Thêm vào danh sách"
addToAntenna:"Thêm vào Ăngten"
@ -60,6 +65,7 @@ copyFileId: "Sao chép ID tập tin"
copyFolderId:"Sao chép ID thư mục"
copyProfileUrl:"Sao chép URL hồ sơ"
searchUser:"Tìm kiếm người dùng"
searchThisUsersNotes:"Tìm kiếm ghi chú của người dùng"
reply:"Trả lời"
loadMore:"Tải thêm"
showMore:"Xem thêm"
@ -108,11 +114,14 @@ enterEmoji: "Chèn emoji"
renote:"Đăng lại"
unrenote:"Hủy đăng lại"
renoted:"Đã đăng lại."
renotedToX:"Đã cho thuê lại {name}."
cantRenote:"Không thể đăng lại tút này."
cantReRenote:"Không thể đăng lại một tút đăng lại."
quote:"Trích dẫn"
inChannelRenote:"Chia sẻ trong kênh này"
inChannelQuote:"Trích dẫn trong kênh này"
renoteToChannel:"Đăng lại tới kênh"
renoteToOtherChannel:"Đăng lại tới kênh khác"
pinnedNote:"Bài viết đã ghim"
pinned:"Ghim"
you:"Bạn"
@ -122,6 +131,11 @@ add: "Thêm"
reaction:"Biểu cảm"
reactions:"Biểu cảm"
emojiPicker:"Bộ chọn biểu tượng cảm xúc"
pinnedEmojisForReactionSettingDescription:"Ghim các biểu tượng cảm xúc sẽ hiển thị khi phản hồi"
pinnedEmojisSettingDescription:"Ghim các biểu tượng cảm xúc sẽ hiển thị trong bảng chọn emoji"
emojiPickerDisplay:"Hiển thị bộ chọn"
overwriteFromPinnedEmojisForReaction:"Ghi đè thiết lập phản hồi"
overwriteFromPinnedEmojis:"Ghi đè thiết lập chung"
reactionSettingDescription2:"Kéo để sắp xếp, nhấn để xóa, nhấn \"+\" để thêm."
chooseServerOnMisskeyHub:"Chọn một máy chủ từ Misskey Hub"
specifyServerHost:"Thiết lập một máy chủ"
inputHostName:"Nhập địa chỉ máy chủ"
general:"Tổng quan"
wallpaper:"Ảnh bìa"
setWallpaper:"Đặt ảnh bìa"
@ -182,6 +201,7 @@ followConfirm: "Bạn theo dõi {name}?"
proxyAccount:"Tài khoản proxy"
proxyAccountDescription:"Tài khoản proxy là tài khoản hoạt động như một người theo dõi từ xa cho người dùng trong những điều kiện nhất định. Ví dụ: khi người dùng thêm người dùng từ xa vào danh sách, hoạt động của người dùng từ xa sẽ không được chuyển đến phiên bản nếu không có người dùng cục bộ nào theo dõi người dùng đó, vì vậy tài khoản proxy sẽ theo dõi."
host:"Host"
selectSelf:"Chọn chính bạn"
selectUser:"Chọn người dùng"
recipient:"Người nhận"
annotation:"Bình luận"
@ -196,6 +216,8 @@ perHour: "Mỗi Giờ"
perDay:"Mỗi Ngày"
stopActivityDelivery:"Ngưng gửi hoạt động"
blockThisInstance:"Chặn máy chủ này"
silenceThisInstance:"Máy chủ im lặng"
mediaSilenceThisInstance:"Tắt nội dung đa phương tiện từ máy chủ này"
operations:"Vận hành"
software:"Phần mềm"
version:"Phiên bản"
@ -215,6 +237,12 @@ clearCachedFiles: "Xóa bộ nhớ đệm"
clearCachedFilesConfirm:"Bạn có chắc muốn xóa sạch bộ nhớ đệm?"
blockedInstances:"Máy chủ đã chặn"
blockedInstancesDescription:"Danh sách những máy chủ bạn muốn chặn. Chúng sẽ không thể giao tiếp với máy chủy này nữa."
silencedInstances:"Máy chủ im lặng"
silencedInstancesDescription:"Đặt máy chủ mà bạn muốn tắt tiếng, phân tách bằng dấu xuống dòng. Tất cả tài khoản trên máy chủ bị tắt tiếng sẽ được coi là \"bị tắt tiếng\" và mọi hành động theo dõi sẽ được coi là yêu cầu. Không có tác dụng với những trường hợp bị chặn."
mediaSilencedInstances:"Các máy chủ đã tắt nội dung đa phương tiện "
mediaSilencedInstancesDescription:"Đặt máy chủ mà bạn muốn tắt nội dung đa phương tiện, phân tách bằng dấu xuống dòng. Tất cả tài khoản trên máy chủ bị tắt tiếng sẽ được coi là \"nhạy cảm\" và biểu tượng cảm xúc tùy chỉnh sẽ không thể được sử dụng. Không có tác dụng với những trường hợp bị chặn."
federationAllowedHosts:"Các máy chủ được phép liên kết"
federationAllowedHostsDescription:"Điền tên các máy chủ mà bạn muốn cho phép liên kết, cách nhau bởi dấu xuống dòng"
showNoteActionsOnlyHover:"Chỉ hiển thị các hành động ghi chú khi di chuột"
showReactionsCount:"Hiển thị số reaction trong bài đăng"
noHistory:"Không có dữ liệu"
signinHistory:"Lịch sử đăng nhập"
enableAdvancedMfm:"Xem bài MFM chất lượng cao."
@ -499,6 +533,7 @@ createAccount: "Tạo tài khoản"
existingAccount:"Tài khoản hiện có"
regenerate:"Tạo lại"
fontSize:"Cỡ chữ"
mediaListWithOneImageAppearance:"Chiều cao của danh sách nội dung đã phương tiện mà chỉ có một hình ảnh"
limitTo:"Giới hạn tỷ lệ {x}"
noFollowRequests:"Bạn không có yêu cầu theo dõi nào"
openImageInNewTab:"Mở ảnh trong tab mới"
@ -533,10 +568,12 @@ objectStorageUseSSLDesc: "Tắt nếu bạn không dùng HTTPS để kết nối
objectStorageUseProxy:"Kết nối thông qua Proxy"
objectStorageUseProxyDesc:"Tắt nếu bạn không dùng Proxy để kết nối API"
objectStorageSetPublicRead:"Đặt \"public-read\" khi tải lên"
s3ForcePathStyleDesc:"Nếu s3ForcePathStyle được bật, tên bucket phải được thêm vào địa chỉ URL thay vì chỉ có tên miền. Bạn có thể phải sử dụng thiết lập này nếu bạn sử dụng các dịch vụ như Minio mà bạn tự cung cấp."
serverLogs:"Nhật ký máy chủ"
deleteAll:"Xóa tất cả"
showFixedPostForm:"Hiện khung soạn tút ở phía trên bảng tin"
showFixedPostFormInChannel:"Hiển thị mẫu bài đăng ở phía trên bản tin"
withRepliesByDefaultForNewlyFollowed:"Mặc định hiển thị trả lời từ những người dùng mới theo dõi trong dòng thời gian"
newNoteRecived:"Đã nhận tút mới"
sounds:"Âm thanh"
sound:"Âm thanh"
@ -547,7 +584,9 @@ popout: "Pop-out"
volume:"Âm lượng"
masterVolume:"Âm thanh chung"
notUseSound:"Tắt tiếng"
useSoundOnlyWhenActive:"Chỉ phát âm thanh khi Misskey đang được hiển thị"
details:"Chi tiết"
renoteDetails:"Tìm hiểu thêm về đăng lại "
chooseEmoji:"Chọn emoji"
unableToProcess:"Không thể hoàn tất hành động"
recentUsed:"Sử dụng gần đây"
@ -563,6 +602,7 @@ ascendingOrder: "Tăng dần"
descendingOrder:"Giảm dần"
scratchpad:"Scratchpad"
scratchpadDescription:"Scratchpad cung cấp môi trường cho các thử nghiệm AiScript. Bạn có thể viết, thực thi và kiểm tra kết quả tương tác với Misskey trong đó."
uiInspector:"Trình kiểm tra UI"
output:"Nguồn ra"
script:"Kịch bản"
disablePagesScript:"Tắt AiScript trên Trang"
@ -621,6 +661,7 @@ medium: "Vừa"
small:"Nhỏ"
generateAccessToken:"Tạo mã truy cập"
permission:"Cho phép "
adminPermission:"Quyền quản trị viên"
enableAll:"Bật toàn bộ"
disableAll:"Tắt toàn bộ"
tokenRequested:"Cấp quyền truy cập vào tài khoản"
@ -642,13 +683,19 @@ smtpSecure: "Dùng SSL/TLS ngầm định cho các kết nối SMTP"
smtpSecureInfo:"Tắt cái này nếu dùng STARTTLS"
testEmail:"Kiểm tra vận chuyển email"
wordMute:"Ẩn chữ"
wordMuteDescription:"Thu nhỏ các bài đăng chứa các từ hoặc cụm từ nhất định. Các bài đăng này có thể được hiển thị khi click vào."
hardWordMute:"Ẩn cụm từ hoàn toàn"
showMutedWord:"Hiển thị từ đã ẩn"
hardWordMuteDescription:"Ẩn hoàn toàn các bài đăng chứa từ hoặc cụm từ. Khác với mute, bài đăng sẽ bị ẩn hoàn toàn."
regexpError:"Lỗi biểu thức"
regexpErrorDescription:"Xảy ra lỗi biểu thức ở dòng {line} của {tab} chữ ẩn:"
instanceMute:"Những máy chủ ẩn"
userSaysSomething:"{name} nói gì đó"
userSaysSomethingAbout:"{name} đã nói gì đó về \"{word}\""
makeActive:"Kích hoạt"
display:"Hiển thị"
copy:"Sao chép"
copiedToClipboard:"Đã sao chép vào clipboard"
metrics:"Số liệu"
overview:"Tổng quan"
logs:"Nhật ký"
@ -663,12 +710,14 @@ useGlobalSettingDesc: "Nếu được bật, cài đặt thông báo của bạn
other:"Khác"
regenerateLoginToken:"Tạo lại mã đăng nhập"
regenerateLoginTokenDescription:"Tạo lại mã nội bộ có thể dùng để đăng nhập. Thông thường hành động này là không cần thiết. Nếu được tạo lại, tất cả các thiết bị sẽ bị đăng xuất."
theKeywordWhenSearchingForCustomEmoji:"Đây là từ khoá được sử dụng để tìm kiếm emoji"
setMultipleBySeparatingWithSpace:"Tách nhiều mục nhập bằng dấu cách."
fileIdOrUrl:"ID tập tin hoặc URL"
behavior:"Thao tác"
sample:"Ví dụ"
abuseReports:"Lượt báo cáo"
reportAbuse:"Báo cáo"
reportAbuseRenote:"Báo cáo bài đăng lại"
reportAbuseOf:"Báo cáo {name}"
fillAbuseReportDescription:"Vui lòng điền thông tin chi tiết về báo cáo này. Nếu đó là về một tút cụ thể, hãy kèm theo URL của tút."
abuseReported:"Báo cáo đã được gửi. Cảm ơn bạn nhiều."
@ -718,6 +767,7 @@ lockedAccountInfo: "Ghi chú của bạn sẽ hiển thị với bất kỳ ai,
alwaysMarkSensitive:"Luôn đánh dấu NSFW"
loadRawImages:"Tải ảnh gốc thay vì ảnh thu nhỏ"
disableShowingAnimatedImages:"Không phát ảnh động"
verificationEmailSent:"Một email xác minh đã được gửi. Vui lòng nhấn vào liên kết đính kèm để hoàn tất xác minh."
notSet:"Chưa đặt"
emailVerified:"Email đã được xác minh"
@ -811,6 +861,7 @@ administration: "Quản lý"
accounts:"Tài khoản của bạn"
switch:"Chuyển đổi"
noMaintainerInformationWarning:"Chưa thiết lập thông tin vận hành."
noInquiryUrlWarning:"Địa chỉ hỏi đáp chưa được đặt"
noBotProtectionWarning:"Bảo vệ Bot chưa thiết lập."
configure:"Thiết lập"
postToGallery:"Tạo tút có ảnh"
@ -875,6 +926,7 @@ followersVisibility: "Hiển thị người theo dõi"
continueThread:"Tiếp tục xem chuỗi tút"
deleteAccountConfirm:"Điều này sẽ khiến tài khoản bị xóa vĩnh viễn. Vẫn tiếp tục?"
incorrectPassword:"Sai mật khẩu."
incorrectTotp:"Mã OTP không đúng hoặc đã quá hạn"
voteConfirm:"Xác nhận bình chọn \"{choice}\"?"
hide:"Ẩn"
useDrawerReactionPickerForMobile:"Hiện bộ chọn biểu cảm dạng xổ ra trên điện thoại"
@ -899,6 +951,9 @@ oneHour: "1 giờ"
oneDay:"1 ngày"
oneWeek:"1 tuần"
oneMonth:"1 tháng"
threeMonths:"3 tháng"
oneYear:"1 năm"
threeDays:"3 ngày "
reflectMayTakeTime:"Có thể mất một thời gian để điều này được áp dụng."
failedToFetchAccountInformation:"Không thể lấy thông tin tài khoản"
rateLimitExceeded:"Giới hạn quá mức"
@ -923,6 +978,7 @@ document: "Tài liệu"
numberOfPageCache:"Số lượng trang bộ nhớ đệm"
numberOfPageCacheDescription:"Việc tăng con số này sẽ cải thiện sự thuận tiện cho người dùng nhưng gây ra nhiều áp lực hơn cho máy chủ cũng như sử dụng nhiều bộ nhớ hơn."
logoutConfirm:"Bạn có chắc muốn đăng xuất?"
logoutWillClearClientData:"Đăng xuất sẽ xoá các thiết lập của bạn khỏi trình duyệt. Để có thể khôi phục thiết lập khi đăng nhập lại, bạn phải bật tự động sao lưu cài đặt."
lastActiveDate:"Lần cuối vào"
statusbar:"Thanh trạng thái"
pleaseSelect:"Chọn một lựa chọn"
@ -972,6 +1028,7 @@ neverShow: "Không hiển thị nữa"
remindMeLater:"Để sau"
didYouLikeMisskey:"Bạn có ưa thích Mískey không?"
pleaseDonate:"Misskey là phần mềm miễn phí mà {host} đang sử dụng. Xin mong bạn quyên góp cho chúng tôi để chúng tôi có thể tiếp tục phát triển dịch vụ này. Xin cảm ơn!!"
correspondingSourceIsAvailable:"Mã nguồn có thể được xem tại {anchor}"
roles:"Vai trò"
role:"Vai trò"
noRole:"Bạn chưa được cấp quyền."
@ -999,23 +1056,41 @@ thisPostMayBeAnnoyingHome: "Đăng trên trang chính"
thisPostMayBeAnnoyingCancel:"Từ chối"
thisPostMayBeAnnoyingIgnore:"Đăng bài để nguyên"
collapseRenotes:"Không hiển thị bài viết đã từng xem"
collapseRenotesDescription:"Các bài đăng bị thu gọn mà bạn đã phản hồi hoặc đăng lại trước đây."
internalServerError:"Lỗi trong chủ máy"
internalServerErrorDescription:"Trong chủ máy lỗi bất ngờ xảy ra"
copyErrorInfo:"Sao chép thông tin lỗi"
joinThisServer:"Đăng ký trên chủ máy này"
exploreOtherServers:"Tìm chủ máy khác"
letsLookAtTimeline:"Thử xem Timeline"
disableFederationConfirm:"Bạn có muốn làm điều đó mà không cần liên minh không?"
disableFederationConfirmWarn:"Ngay cả khi bị trì hoãn, bài đăng vẫn sẽ tiếp tục là công khai trừ khi được thiết lập khác. Bạn thường không cần phải làm điều này."
disableFederationOk:"Vô hiệu hoá"
invitationRequiredToRegister:"Phiên bản này chỉ dành cho người được mời. Bạn phải nhập mã mời hợp lệ để đăng ký."
emailNotSupported:"Máy chủ này không hỗ trợ gửi email"
postToTheChannel:"Đăng lên kênh"
cannotBeChangedLater:"Không thể thay đổi sau này."
reactionAcceptance:"Phản ứng chấp nhận"
likeOnly:"Chỉ lượt thích"
likeOnlyForRemote:"Tất cả (chỉ bao gồm lượt thích trên các máy chủ khác)"
nonSensitiveOnly:"Chỉ nội dung không nhạy cảm"
nonSensitiveOnlyForLocalLikeOnlyForRemote:"Chỉ nội dung không nhạy cảm (chỉ bao gồm lượt thích từ máy chủ khác)"
rolesAssignedToMe:"Vai trò được giao cho tôi"
resetPasswordConfirm:"Bạn thực sự muốn đặt lại mật khẩu?"
sensitiveWords:"Các từ nhạy cảm"
sensitiveWordsDescription:"Phạm vi của tất cả bài đăng chứa các từ được cấu hình sẽ tự động được đặt về \"Home\". Ban có thể thêm nhiều từ trên mỗi dòng."
sensitiveWordsDescription2:"Sử dụng dấu cách sẽ tạo cấu trúc AND và thêm dấu gạch xuôi để sử dụng như một regex."
prohibitedWords:"Các từ bị cấm"
prohibitedWordsDescription:"Hiển thị lỗi khi đăng một bài đăng chứa các từ sau. Nhiều từ có thể được thêm bằng cách viết một từ trên mỗi dòng."
prohibitedWordsDescription2:"Sử dụng dấu cách sẽ tạo cấu trúc AND và thêm dấu gạch xuôi để sử dụng như một regex."
hiddenTags:"Hashtag ẩn"
hiddenTagsDescription:"Các hashtag này sẽ không được hiển thị trên danh sách Trending. Nhiều tag có thể được thêm bằng cách viết một tag trên mỗi dòng."
notesSearchNotAvailable:"Tìm kiếm bài đăng hiện không khả dụng."
license:"Giấy phép"
unfavoriteConfirm:"Bạn thực sự muốn xoá khỏi mục yêu thích?"
myClips:"Các clip của tôi"
drivecleaner:"Trình dọn đĩa"
retryAllQueuesNow:"Thử lại cho tất cả hàng chờ"
retryAllQueuesConfirmTitle:"Bạn có muốn thử lại?"
retryAllQueuesConfirmText:"Điều này sẽ tạm thời làm tăng mức độ tải của máy chủ."
enableChartsForRemoteUser:"Tạo biểu đồ người dùng từ xa"
@ -1051,6 +1126,8 @@ options: "Tùy chọn"
specifyUser:"Người dùng chỉ định"
failedToPreviewUrl:"Không thể xem trước"
update:"Cập nhật"
cancelReactionConfirm:"Bạn có muốn hủy phản ứng của mình không?"
changeReactionConfirm:"Bạn có muốn thay đổi phản ứng của mình không?"
followingOrFollower:"Đang theo dõi hoặc người theo dõi"
externalServices:"Các dịch vụ bên ngoài"
sourceCode:"Mã nguồn"
repositoryUrlDescription:"Nếu bạn có kho lưu trữ mã nguồn có thể truy cập công khai, hãy nhập URL. Nếu bạn đang sử dụng Misskey theo mặc định (không thực hiện bất kỳ thay đổi nào đối với mã nguồn), hãy nhập https://github.com/misskey-dev/misskey."
feedback:"Phản hồi"
feedbackUrl:"URL phản hồi"
privacyPolicy:"Chính sách bảo mật"
@ -1115,8 +1193,29 @@ releaseToRefresh: "Thả để làm mới"
refreshing:"Đang làm mới"
pullDownToRefresh:"Kéo xuống để làm mới"
cwNotationRequired:"Nếu \"Ẩn nội dung\" được bật thì cần phải có chú thích."
decorate:"Trang trí"
lastNDays:"{n} ngày trước"
userSaysSomethingSensitive:"Bài đăng có chứa các tập tin nhạy cảm từ {name}"
surrender:"Từ chối"
signinWithPasskey:"Đăng nhập bằng mật khẩu của bạn"
passkeyVerificationFailed:"Xác minh mật khẩu không thành công."
messageToFollower:"Tin nhắn cho người theo dõi"
yourNameContainsProhibitedWords:"Tên bạn đang cố gắng đổi có chứa chuỗi ký tự bị cấm."
yourNameContainsProhibitedWordsDescription:"Tên có chứa chuỗi ký tự bị cấm. Nếu bạn muốn sử dụng tên này, hãy liên hệ với quản trị viên máy chủ của bạn."
federationDisabled:"Liên kết bị vô hiệu hóa trên máy chủ này. Bạn không thể tương tác với người dùng trên các máy chủ khác."
reactAreYouSure:"Bạn có muốn phản hồi với \" {emoji} \" không?"
paste:"dán"
postForm:"Mẫu đăng"
information:"Giới thiệu"
_chat:
invitations:"Mời"
noHistory:"Không có dữ liệu"
members:"Thành viên"
home:"Trang chính"
send:"Gửi"
_accountSettings:
requireSigninToViewContents:"Yêu cầu đăng nhập để xem nội dung"
requireSigninToViewContentsDescription1:"Yêu cầu đăng nhập để xem tất cả ghi chú và nội dung khác mà bạn tạo. Điều này được kỳ vọng sẽ có hiệu quả trong việc ngăn chặn thông tin bị thu thập bởi các trình thu thập thông tin."
_delivery:
stop:"Đã vô hiệu hóa"
_type:
@ -1140,8 +1239,33 @@ _initialAccountSetting:
pushNotificationDescription:"Bật thông báo đẩy sẽ cho phép bạn nhận thông báo từ {name} trực tiếp từ thiết bị của bạn."
initialAccountSettingCompleted:"Thiết lập tài khoản thành công!"
haveFun:"Hãy tận hưởng {name} nhé!"
youCanContinueTutorial:"Bạn có thể tiếp tục xem hướng dẫn về cách sử dụng {name} (Misskey) hoặc bạn có thể thoát khỏi phần thiết lập tại đây và bắt đầu sử dụng ngay lập tức."
startTutorial:"Bắt đầu hướng dẫn"
skipAreYouSure:"Bạn thực sự muốn bỏ qua mục thiết lập tài khoản?"
laterAreYouSure:"Bạn thực sự muốn thiết lập tài khoản vào lúc khác?"
_initialTutorial:
launchTutorial:"Bắt đầu hướng dẫn"
title:"Hướng dẫn"
wellDone:"Làm tốt!"
skipAreYouSure:"Thoát khỏi hướng dẫn?"
_landing:
title:"Chào mừng đến với Hướng dẫn"
description:"Tại đây, bạn có thể tìm hiểu những điều cơ bản về cách sử dụng Misskey và các tính năng của nó."
_note:
title:"Bài Viết là gì?"
description:"Các bài đăng trên Misskey được gọi là 'Bài Viết'. Ghi chú được sắp xếp theo thứ tự thời gian trên dòng thời gian và được cập nhật theo thời gian thực."
_timeline:
home:"Bạn có thể xem ghi chú từ những tài khoản bạn theo dõi."
local:"Bạn có thể xem ghi chú từ tất cả người dùng trên máy chủ này."
social:"Ghi chú từ dòng thời gian Trang chủ và Địa phương sẽ được hiển thị."
global:"Bạn có thể xem ghi chú từ tất cả các máy chủ được kết nối."
_postNote:
_visibility:
home:"Chỉ công khai trên dòng thời gian Trang chủ. Những người truy cập trang cá nhân của bạn, thông qua người theo dõi và thông qua ghi chú lại có thể thấy thông tin đó."
_timelineDescription:
home:"Trong dòng thời gian Trang chính, bạn có thể xem ghi chú từ các tài khoản bạn theo dõi."
local:"Trong dòng thời gian cục bộ, bạn có thể xem ghi chú từ tất cả người dùng trên máy chủ này."
social:"Dòng thời gian Xã hội hiển thị các ghi chú từ cả dòng thời gian Trang chủ và Địa phương."
_serverSettings:
iconUrl:"Biểu tượng URL"
appIconResolutionMustBe:"Độ phân giải tối thiểu là {resolution}."
@ -1302,7 +1426,7 @@ _achievements:
_postedAt0min0sec:
title:"Tín hiệu báo giờ"
description:"Đăng bài vào 0 phút 0 giây"
flavor:"Piiiiiii ĐÂY LÀ TIẾNG NÓI VIỆT NAM"
flavor:"Pin pop pop pop"
_selfQuote:
title:"Nói đến bản thân"
description:"Trích dẫn bài viết của mình"
@ -1524,7 +1648,6 @@ _theme:
header:"Ảnh bìa"
navBg:"Nền thanh bên"
navFg:"Chữ thanh bên"
navHoverFg:"Chữ thanh bên (Khi chạm)"
navActive:"Chữ thanh bên (Khi chọn)"
navIndicator:"Chỉ báo thanh bên"
link:"Đường dẫn"
@ -1547,11 +1670,8 @@ _theme:
buttonHoverBg:"Nền nút (Chạm)"
inputBorder:"Đường viền khung soạn thảo"
driveFolderBg:"Nền thư mục Ổ đĩa"
wallpaperOverlay:"Lớp phủ hình nền"
badge:"Huy hiệu"
messageBg:"Nền chat"
accentDarken:"Màu phụ (Tối)"
accentLighten:"Màu phụ (Sáng)"
fgHighlighted:"Chữ nổi bật"
_sfx:
note:"Tút"
@ -1626,6 +1746,7 @@ _permissions:
"write:gallery": "Sửa kho ảnh của tôi"
"read:gallery-likes": "Xem danh sách các tút đã thích trong thư viện của tôi"
"write:gallery-likes": "Sửa danh sách các tút đã thích trong thư viện của tôi"
"write:chat": "Soạn hoặc xóa tin nhắn"
_auth:
shareAccessTitle:"Cho phép truy cập app"
shareAccess:"Bạn có muốn cho phép \"{name}\" truy cập vào tài khoản này không?"
@ -1800,9 +1921,6 @@ _pages:
newPage:"Tạo Trang mới"
editPage:"Sửa Trang này"
readPage:"Xem mã nguồn Trang này"
created:"Trang đã được tạo thành công"
updated:"Trang đã được cập nhật thành công"
deleted:"Trang đã được xóa thành công"
pageSetting:"Cài đặt trang"
nameAlreadyExists:"URL Trang đã tồn tại"
invalidNameTitle:"URL Trang không hợp lệ"
@ -1923,8 +2041,25 @@ _abuseReport:
_recipientType:
mail:"Email"
_moderationLogTypes:
createRole:"Tạo một vai trò"
deleteRole:"Xóa vai trò"
updateRole:"Cập nhật vai trò"
assignRole:"Chỉ định cho vai trò"
unassignRole:"Bỏ gán vai trò"
suspend:"Vô hiệu hóa"
unsuspend:"Rã đông"
resetPassword:"Đặt lại mật khẩu"
createInvitation:"Tạo lời mời"
_reversi:
total:"Tổng cộng"
_customEmojisManager:
_local:
_list:
confirmDeleteEmojisDescription:"Xóa các biểu tượng cảm xúc {count} đã chọn. Bạn có muốn chạy nó không?"
awaitqueryRunner.query(`CREATE TABLE "note_schedule" ("id" character varying(32) NOT NULL, "note" jsonb NOT NULL, "userId" character varying(260) NOT NULL, "scheduledAt" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_3a1ae2db41988f4994268218436" PRIMARY KEY ("id"))`);
awaitqueryRunner.query(`CREATE INDEX "IDX_e798958c40009bf0cdef4f28b5" ON "note_schedule" ("userId") `);
awaitqueryRunner.query(`CREATE TABLE "activity_context" ("md5" text NOT NULL, "json" jsonb NOT NULL, CONSTRAINT "PK_activity_context" PRIMARY KEY ("md5"))`);
awaitqueryRunner.query(`CREATE INDEX "IDK_activity_context_md5" ON "activity_context" ("md5") `);
awaitqueryRunner.query(`CREATE TABLE "activity_log" ("id" character varying(32) NOT NULL, "at" TIMESTAMP WITH TIME ZONE NOT NULL, "key_id" text NOT NULL, "host" text NOT NULL, "verified" boolean NOT NULL, "accepted" boolean NOT NULL, "result" text NOT NULL, "activity" jsonb NOT NULL, "context_hash" text, "auth_user_id" character varying(32), CONSTRAINT "PK_activity_log" PRIMARY KEY ("id"))`);
awaitqueryRunner.query(`CREATE INDEX "IDX_activity_log_at" ON "activity_log" ("at") `);
awaitqueryRunner.query(`CREATE INDEX "IDX_activity_log_host" ON "activity_log" ("host") `);
awaitqueryRunner.query(`ALTER TABLE "activity_log" ADD CONSTRAINT "FK_activity_log_context_hash" FOREIGN KEY ("context_hash") REFERENCES "activity_context"("md5") ON DELETE CASCADE ON UPDATE NO ACTION`);
awaitqueryRunner.query(`ALTER TABLE "activity_log" ADD CONSTRAINT "FK_activity_log_auth_user_id" FOREIGN KEY ("auth_user_id") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
}
asyncdown(queryRunner){
awaitqueryRunner.query(`ALTER TABLE "activity_log" DROP CONSTRAINT "FK_activity_log_auth_user_id"`);
awaitqueryRunner.query(`ALTER TABLE "activity_log" DROP CONSTRAINT "FK_activity_log_context_hash"`);
awaitqueryRunner.query(`DROP INDEX "public"."IDX_activity_log_host"`);
awaitqueryRunner.query(`DROP INDEX "public"."IDX_activity_log_at"`);
awaitqueryRunner.query(`CREATE TABLE "ap_fetch_log" ("id" character varying(32) NOT NULL, "at" TIMESTAMP WITH TIME ZONE NOT NULL, "duration" double precision, "host" text NOT NULL, "request_uri" text NOT NULL, "object_uri" text, "accepted" boolean, "result" text, "object" jsonb, "context_hash" text, CONSTRAINT "PK_ap_fetch_log" PRIMARY KEY ("id"))`);
awaitqueryRunner.query(`CREATE INDEX "IDX_ap_fetch_log_at" ON "ap_fetch_log" ("at") `);
awaitqueryRunner.query(`CREATE INDEX "IDX_ap_fetch_log_host" ON "ap_fetch_log" ("host") `);
awaitqueryRunner.query(`CREATE INDEX "IDX_ap_fetch_log_object_uri" ON "ap_fetch_log" ("object_uri") `);
awaitqueryRunner.query(`ALTER TABLE "ap_fetch_log" ADD CONSTRAINT "FK_ap_fetch_log_context_hash" FOREIGN KEY ("context_hash") REFERENCES "ap_context"("md5") ON DELETE CASCADE ON UPDATE NO ACTION`);
}
asyncdown(queryRunner){
awaitqueryRunner.query(`ALTER TABLE "ap_fetch_log" DROP CONSTRAINT "FK_ap_fetch_log_context_hash"`);
awaitqueryRunner.query(`DROP INDEX "public"."IDX_ap_fetch_log_object_uri"`);
awaitqueryRunner.query(`DROP INDEX "public"."IDX_ap_fetch_log_host"`);
awaitqueryRunner.query(`DROP INDEX "public"."IDX_ap_fetch_log_at"`);
awaitqueryRunner.query(`CREATE TYPE "public"."user_profile_default_cw_priority_enum" AS ENUM ('default', 'parent', 'defaultParent', 'parentDefault')`);
awaitqueryRunner.query(`ALTER TABLE "user_profile" ADD "default_cw_priority" "public"."user_profile_default_cw_priority_enum" NOT NULL DEFAULT 'parent'`);
}
asyncdown(queryRunner){
awaitqueryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "default_cw_priority"`);
awaitqueryRunner.query(`DROP TYPE "public"."user_profile_default_cw_priority_enum"`);
}
}
Some files were not shown because too many files have changed in this diff
Show more