Compare commits

...

132 commits

Author SHA1 Message Date
Floatingghost
2914eaf1ca Revert "reduce gallery size"
This reverts commit 06ba190e2e.
2025-03-01 16:14:55 +00:00
floatingghost
0bf9cb0660 Merge pull request 'Optional widened main column' (#402) from Riedler/akkoma-fe:wide-columns-for-upstream into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/402
2025-03-01 12:00:33 +00:00
floatingghost
65cb3b95e0 Merge pull request 'Use FEP-c16b: Formatting MFM functions' (#410) from ilja/akkoma-fe:use_fep-c16b_formatting_mfm_functions into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/410
2025-02-27 12:04:41 +00:00
Riedler
f15b94d566 made widenTimeline false by default 2025-02-07 03:50:44 +01:00
Riedler
06ba190e2e reduce gallery size 2025-02-07 03:49:57 +01:00
floatingghost
2086522d64 Merge pull request '(arguably) improved layouting of user profile page' (#403) from Riedler/akkoma-fe:user-profile-changes into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/403
2025-01-15 21:47:55 +00:00
Weblate
fa294e0003 Merge branch 'origin/develop' into Weblate. 2025-01-05 15:52:29 +00:00
floatingghost
d3fa5cfad0 Merge pull request 'post_status_form: enable sync flush for watcher' (#414) from novenary/akkoma-fe:sticky-drafts into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/414
2025-01-05 15:52:26 +00:00
Weblate
9552287442 Merge branch 'origin/develop' into Weblate. 2025-01-05 15:52:19 +00:00
floatingghost
6b7c8f0def Merge pull request 'Allow using custom source URLs' (#421) from Oneric/akkoma-fe:custom-source into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/421
2025-01-05 15:52:15 +00:00
Weblate
3386692e26 Merge branch 'origin/develop' into Weblate. 2025-01-05 15:51:50 +00:00
floatingghost
ad6bb47003 Merge pull request 'Add visual feedback when clicking translate' (#423) from ilja/akkoma-fe:provide_visual_feedback_when_clicking_translate_button into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/423
2025-01-05 15:51:47 +00:00
ilja
9838545904 Add visual feedback when clicking translate
In a status, we can choose to translate the status (assuming there's a translator enabled on the backend)

It will translate, in practice generally according to detected language, and also provide an option to override the source language.

Translating can take a while, and there wasn't really a visual feedback when it was translating.
Now the translate button will be dissabled while translating.
2024-12-01 14:04:49 +01:00
ilja space
868c6e41ac Improve readability for MFM styles code
The code to turn mdm-data-* attributes into a value for the style attribute is complex.
I wrapped it in it's own function now for better code readability.
A comment was already provided with what the code intents to do and why, this information has also been moved
to this function.
2024-12-01 12:24:23 +01:00
Weblate
b3f25e5d84 Translated using Weblate (Polish)
Currently translated at 99.7% (1046 of 1049 strings)

Translated using Weblate (Polish)

Currently translated at 99.7% (1046 of 1049 strings)

Co-authored-by: ? <akkoma@mkljczk.pl>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: subtype <subtype@hollow.capital>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/pl/
Translation: Pleroma fe/pleroma-fe
2024-11-22 04:56:24 +00:00
Weblate
248509073e Translated using Weblate (Italian)
Currently translated at 93.8% (985 of 1049 strings)

Co-authored-by: Steffo <akkoma@steffo.eu>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/it/
Translation: Pleroma fe/pleroma-fe
2024-11-22 04:56:24 +00:00
Weblate
a7d6235131 Translated using Weblate (Lithuanian)
Currently translated at 8.1% (86 of 1049 strings)

Translated using Weblate (Lithuanian)

Currently translated at 5.5% (58 of 1049 strings)

Translated using Weblate (Lithuanian)

Currently translated at 1.9% (20 of 1049 strings)

Added translation using Weblate (Lithuanian)

Co-authored-by: Vaclovas Intas <Gateway_31@protonmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/lt/
Translation: Pleroma fe/pleroma-fe
2024-11-22 04:56:24 +00:00
ilja space
177d96f977 Improve how scaling is done
During code review a much better way was pointed out to do the emoji scaling, by using `em`.

*key uses 2em for emoji, which is smaller than Akkoma has. I now kept the 38px for Akkoma,
but when "zoom" (ie x2, x3, x4, tada) happens, we set to 2em and zoom from there.
2024-11-01 14:25:22 +01:00
Oneric
42ba77ebf4 Allow using custom source URLs 2024-10-26 16:32:14 +02:00
floatingghost
4a50b1273d Merge pull request 'fix panel z-index conflicting with heading popover' (#422) from tea/akkoma-fe:fix/panel-z-index into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/422
2024-10-26 03:42:48 +00:00
floatingghost
c76dc6d79e Merge pull request 'Fix redirect on logout' (#420) from Oneric/akkoma-fe:logout-redirect into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/420
2024-10-26 03:42:23 +00:00
floatingghost
cb4c581cde Merge pull request 'Add proper autocomplete prop for TOTP login field' (#424) from tudbut/akkoma-fe:develop into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/424
2024-10-26 03:41:15 +00:00
TudbuT
8231c8f0b6
add proper autocomplete prop for TOTP login field 2024-10-19 19:19:15 +02:00
novenary
ef242a1ddd post_status_form: enable sync flush for watcher
This fixes drafts not clearing after posting a reply.

Vue 3.3.11 changed watchers to stop firing after component unmount.
After posting a reply, the post form is removed, now causing the queued
event to be discarded.
Synchronous flush causes the handler to be called immediately when
changes happen, solving the problem.

The performance impact of this change seems non-existent. Even before,
typing would generate an event for each keystroke. Pasting is atomic.

See: https://github.com/vuejs/core/pull/7181
See: 80e2128d52
Fixes: a7dea2f70f
Fixes: #413
2024-10-15 00:16:45 +03:00
tea
35cf3327c8 fix panel z-index conflicting with heading popover
resolves #342
2024-10-05 10:59:46 +02:00
Oneric
1ae09458c6 Fix redirect on logout
An instance may restrict access to the public timeline (among others)
to authenticated users and there already is a setting to decide which page
to show authenticated and unauthenticated viewers by default each.
However, the logout redirect didn't honour this setting
leading to potentially broken pages and errors on logout
2024-09-28 17:47:28 +02:00
floatingghost
f391cf70a4 Merge pull request 'README: Add line to install Node.js' (#409) from ilja/akkoma-fe:README_add_to_install_node into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/409
2024-08-25 09:09:35 +00:00
floatingghost
fa8fde2ab1 Merge pull request 'Upgrade vue packages' (#411) from Oneric/akkoma-fe:vue-mathml into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/411
2024-08-25 09:08:04 +00:00
floatingghost
1f2c96a485 Merge pull request 'Fix setting restore from file' (#406) from Oneric/akkoma-fe:fix-file-restore into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/406
2024-08-25 09:07:18 +00:00
ilja
25681cf5f6 Don't require # in the data-mfm-color attribute
For colour in MFM attributes, we expected a `#`, but that's apparently wrong. The BE
translates the `color` attribute in `$[fg.color=000 text]` into `data-mfm-color=000`.
But for the SCSS to work, we need to put it in the style attribute as `--mfm-color: #000`.

Generally we just add the attribute value as-is in the `style` attribute, but now we
have a special exception for color so we add a `#` before the value.
2024-08-18 15:48:22 +02:00
Oneric
6c178aa257 Upgrade vue packages
Bumping past vue 3.4.0 guarantees MathML support for FEP-dc88.

Related to: https://akkoma.dev/AkkomaGang/akkoma/pulls/642
2024-08-17 18:01:59 +02:00
ilja
6666a273a4 MFM only use sanitised data-* attribute values
We take the value from a data-* attribute and then add this to the style attribute.
This will probably be OK in most cases, but just to be sure, we check for "weird" characters first.
For now we only allow letters, numbers, dot, hash, and plus and minus sign, because those are the ones I currently know of who are used in MFM.
The data-* attribute remains because it was already considered proper HTML as-is.
2024-08-11 18:11:03 +02:00
ilja
3210873d7f MFM make all supported tags suggested
When typing MFM, a sugestor drop-down appears so you can see and/or choose what MFM function to use
The new MFM functions we support have now also been added
2024-08-10 13:55:52 +02:00
ilja
f5f9949253 Fix mfm-position and mfm-scale
The `span`'s needed an inline-block for the transform to wrok
I also added an `overflow: hidden;` because these functions can make the text go beyond the borders of the StatusBody
With `overflow: hidden;`, it won't show outside of the borders
2024-08-10 13:13:47 +02:00
ilja
ba4ae5badb Fix MFM functions x2, x3, and x4
These now work for the new, FEP-c16b compliant, representation
Nesting also works

It already worked for text and "normal" emoji, but now it also works for custom emoji
2024-08-10 12:45:37 +02:00
ilja
56a59e1b55 fill in data-mfm- variables
Things like `speed=0.1s` now work

I also noticed a class was set on StatusBody, but we don't use it, we use StatusContent.
Therefor I removed it now.

We do still pass the setting through StatusBody to RichContent bc it's used there to decide to not show greentext for arrows when MFM was used.
Note that while this setting still works
* You have to refresh the page to see it working (was already like this, so I didn't touch it here)
* It explicitly checks for content type. If womeone provides MFM-like HTML, then it will still show as greentext if that option is enabled
  I think it's a bit inconsistent, but otoh, the inconsistency to me seems more that we ignore the greentext option for one input type specifically

I do still notice generall bugs with MFM.
* Position doesn't seem to work, neither does scale.
* There also seems to be a regression where custom emojis don't become larger any more with e.g. `$[x2 :hehe: ]`

I don't assume the regression is made in this commit, so I add this already. The rest needs to be fixed before merging.
2024-08-05 17:23:15 +02:00
ilja
3065416c93 Make new SCSS work for non-variables
The SCSS that we took from Foundkey in a previous commit, is now working
The settings for disabling MFM or only show animation on hover are working
The previous representation also works and it's clearly marked in the code what is legacy
All the MFM SCSS is now located in one file specifically for MFM, ./src/components/status_content/mfm.scss

This is only SCSS:
* The variables who are provided as data-attributes are not working yet
* `sparkle` also doesn't work
2024-08-04 19:10:25 +02:00
Johann150
94141dcb3c Message from commiter: Add Foundkey MFM stylesheet
This is part of a bigger work to fix MFM in Akkoma
See <https://akkoma.dev/AkkomaGang/akkoma/issues/381>

Here we add the MFM stylesheet as it is used by Foundkey
See <b22e627089>

Foundkey uses MFM and both the Founkey and Akkoma projects and communities, have historically been closely related
As such it makes sense to start with feature-parity with Foundkey

This commit only adds the stylesheet so that correct attribution is given
Properly integrating and making it work will happen in later commits
2024-08-04 17:55:32 +02:00
ilja
92e278d406 Move MFM SCSS to separate SCSS
MFM was defined in three places.
There was ./src/components/status_body/status_body.scss => I moved this to ./src/components/status_content/mfm.scss
There was ./src/components/status_content/status_content.vue => I moved this to ./src/components/status_content/mfm.scss
There's ./static/mfm.css => I kept this as-is

./src/components/status_content/mfm.scss is now being loaded in ./src/components/status_content/status_content.vue

I added a comment in both ./src/components/status_content/mfm.scss and ./static/mfm.css referencing each other

Note that this is just a first step in an overhoal of how MFM is handled. It seemed easier to do this as a first step and then build further on that.
2024-08-04 17:44:21 +02:00
ilja
3349fe6ff2 Add line to install Node.js
For someone who isn't used to building fe things like this, it's
not always clear to install Node.js or what version.

A line has been added to the installation instructions pointing to
resources where to get it and what version to use. For version I
point to the woodpecker config because that is what the CI uses and
therefor always "tested".

There was a file .node-version who contained a node version, but
this was seriously outdated and removing it didn't seem to break
anything. Assuming it indeed doesn't do anything any more, it seems
better to remove to avoid confusion.
2024-08-03 09:54:14 +02:00
RiedleroD
94ed0991bc reverted 2e83ccefdc and clarified that compact user info is only used with enough room 2024-07-06 14:54:24 +02:00
Oneric
e274adf47d Fix setting restore from file
Previously restoring from file would also restore the old version value
breaking upload of the new settings to the server.

Additionallly it didn’t even attempt to sync settings after restore and
was insufferably slow due to individually updating every single setting
with a dispatch. Instead only update changed settings like on server
syncs which usually speeds the process up considerably.

Fixes: https://akkoma.dev/AkkomaGang/akkoma-fe/issues/405
2024-07-06 01:59:42 +02:00
RiedleroD
e955eb4503 oops, unfucked username placement 2024-07-03 18:58:50 +02:00
RiedleroD
c39d9fa64b fixed stuff overflowing in user popup e.g. in notifs 2024-07-03 18:30:51 +02:00
RiedleroD
a74a631793 stopped user handle from overflowing from its boundaries in user card 2024-07-03 17:45:40 +02:00
RiedleroD
2e83ccefdc disabled "compact user info" setting in mobile layout 2024-07-03 17:35:13 +02:00
RiedleroD
cf11b2523e disabled compact user card in mobile layout 2024-07-03 17:26:09 +02:00
Floatingghost
8765491399 Do not try to destructure when we don't need to 2024-06-27 02:58:52 +01:00
RiedleroD
85001814a2 added setting for user info compactness 2024-06-26 18:09:13 +02:00
RiedleroD
c902219997 added setting to switch between center and left-aligned user bio 2024-06-26 17:20:50 +02:00
RiedleroD
2e2e87db75 expand underlay to screen edges when TL is widened 2024-06-26 16:43:32 +02:00
RiedleroD
b2af067fd3 reverted visual changes to underlay 2024-06-26 16:39:04 +02:00
floatingghost
4211e05a75 Merge pull request 'status component: Fix repeater name overflowing' (#383) from yukijoou/akkoma-fe:fix-status-usernames into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/383
2024-06-25 21:34:15 +00:00
Floatingghost
a3251a1ba6 Merge remote-tracking branch 'origin/translations' into develop 2024-06-23 03:03:40 +01:00
Floatingghost
e5608f4009 remove ora as a dep 2024-06-23 03:03:11 +01:00
Floatingghost
1092d43802 remove nonsense dep 2024-06-23 03:02:45 +01:00
Weblate
98a3622172 Merge branch 'origin/develop' into Weblate. 2024-06-17 21:40:59 +00:00
floatingghost
24b9e350e2 Merge pull request 'added minimum space to empty timeline' (#400) from Riedler/akkoma-fe:empty-tl-minspace into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/400
2024-06-17 21:40:56 +00:00
Weblate
7ab4d22a4c Merge branch 'origin/develop' into Weblate. 2024-06-17 21:40:29 +00:00
floatingghost
8489f6d5ae Merge pull request 'visually fuse CW line and post body textarea' (#401) from Riedler/akkoma-fe:fuse-cw-to-post-body into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/401
2024-06-17 21:40:26 +00:00
RiedleroD
754cd2fa57 slightly adjusted edit button spacing 2024-06-16 17:15:04 +02:00
RiedleroD
31055fb4f2 removed min-width statements that were messing up my layouts 2024-06-16 17:14:59 +02:00
RiedleroD
918b0e3770 stopped username from wrapping… 2024-06-16 17:14:14 +02:00
RiedleroD
88aae1706a oops, removed unneeded spacing 2024-06-16 17:14:08 +02:00
RiedleroD
3d2a8a3ca2 left-aligned bio text
why the fuck was it centered in the first place?!?
2024-06-16 17:14:03 +02:00
RiedleroD
a24fff5d5b moved user stats to between user info and user actions 2024-06-16 17:14:00 +02:00
RiedleroD
4abddf5e6a made wide column layout optional 2024-06-16 16:37:33 +02:00
RiedleroD
1b4df9e79d reverted audio attachments to 4:1 aspect ratio 2024-06-16 16:37:30 +02:00
RiedleroD
45fe334cd7 fixed sizing issues with attachments in some non-status containers 2024-06-16 16:37:26 +02:00
RiedleroD
dd32a33d59 fixed media attachment heights 2024-06-16 16:37:22 +02:00
RiedleroD
74b651a3a2 made attached images max size scale with font size
meta-comment: eliminated corner-case weirdness by replaced cursed CSS with slightly less cursed CSS
2024-06-16 16:37:07 +02:00
RiedleroD
21fe7d76d3 made columns use more space, fixed minor bug 2024-06-16 16:35:46 +02:00
RiedleroD
b2cab6d088 only flatten top of post body textarea if subject line is visible 2024-06-16 16:26:44 +02:00
RiedleroD
3ebaba6fa7 smushed subject line and post body together, kinda 2024-06-16 16:14:16 +02:00
RiedleroD
f1058567b9 also set min height for other lists (e.g. follow requests), not just the timeline 2024-06-16 16:12:15 +02:00
RiedleroD
49a850a1e9 added minimum space to empty timeline 2024-06-16 15:49:52 +02:00
Weblate
b2de68239f Merge branch 'origin/develop' into Weblate. 2024-06-15 12:41:26 +00:00
floatingghost
c68595345f Merge pull request 'ANNOYING dependency update' (#397) from dep-update into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/397
2024-06-15 12:41:23 +00:00
Floatingghost
a5d4b0a68c Merge branch 'develop' into dep-update 2024-06-15 13:38:40 +01:00
Floatingghost
bd263587b2 Merge branch 'develop' into dep-update 2024-06-15 13:36:24 +01:00
Weblate
c19fb198ca Merge branch 'origin/develop' into Weblate. 2024-06-15 12:33:42 +00:00
floatingghost
97966045cb Merge pull request 'make status form selectors justified properly' (#398) from rat/akkoma-fe:status-form-selector into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/398
2024-06-15 12:33:38 +00:00
rat
aad023c8a0 make status form selectors justified properly 2024-06-10 17:20:51 -07:00
Floatingghost
c952b2335c correct eslint plugin 2024-05-29 04:04:56 +01:00
Floatingghost
0baf31f498 correct package.json lint task 2024-05-29 04:01:29 +01:00
Floatingghost
8fa24d0c40 migrate to eslint 9 syntax 2024-05-29 03:59:37 +01:00
Floatingghost
5848c18ec8 remove unused CI file 2024-05-29 03:43:41 +01:00
Weblate
54dbead22c Merge branch 'origin/develop' into Weblate. 2024-05-28 21:33:19 +00:00
floatingghost
3e86db24d3 Update .woodpecker.yml 2024-05-28 21:33:15 +00:00
Weblate
d8f3f5002f Merge branch 'origin/develop' into Weblate. 2024-05-28 21:31:51 +00:00
floatingghost
7789c5def6 Update .woodpecker.yml 2024-05-28 21:31:46 +00:00
Floatingghost
a45f482c79 remove a useless log 2024-05-28 04:18:32 +01:00
Weblate
ed22c480f9 Merge branch 'origin/develop' into Weblate. 2024-05-28 03:17:19 +00:00
Floatingghost
f3934afbd8 make sure we normalise interfaceLanguage 2024-05-28 04:17:04 +01:00
Weblate
3797495e53 Merge branch 'origin/develop' into Weblate. 2024-05-28 03:15:47 +00:00
Floatingghost
0b437ab6fd remove line left over in conflict 2024-05-28 04:15:35 +01:00
Floatingghost
a7dea2f70f ANNOYING dependency update 2024-05-28 04:02:17 +01:00
Weblate
2c9da4a58c Merge branch 'origin/develop' into Weblate. 2024-05-28 02:25:05 +00:00
floatingghost
8964dce609 Merge pull request 'Make animated emojis in reactions pause' (#378) from sarayalth/akkoma-fe:pause-animated-reaction into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/378
2024-05-28 02:25:02 +00:00
Weblate
156b036caa Merge branch 'origin/develop' into Weblate. 2024-05-28 02:24:09 +00:00
floatingghost
1a49a1b3ac Merge pull request 'Expand Unicode emoji map' (#385) from Oneric/akkoma-fe:emoji_update into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/385
2024-05-28 02:24:06 +00:00
Weblate
61d82a2a07 Merge branch 'origin/develop' into Weblate. 2024-05-28 02:22:11 +00:00
Floatingghost
1adef56603 Merge remote-tracking branch 'partizan/386-default-post-lang' into develop 2024-05-28 03:22:03 +01:00
Weblate
b9bf0f0002 Merge branch 'origin/develop' into Weblate. 2024-05-28 02:14:58 +00:00
Floatingghost
5aaa605df0 add asdf tool file 2024-05-28 03:14:50 +01:00
Weblate
7136ea80b9 Merge branch 'origin/develop' into Weblate. 2024-05-28 02:14:48 +00:00
Floatingghost
71e287d56c update CI to v2 2024-05-28 03:14:37 +01:00
Weblate
a64cdda725 Merge branch 'origin/develop' into Weblate. 2024-05-28 02:10:18 +00:00
floatingghost
70275684bf Merge pull request 'Fix posting for "special" interface languages' (#377) from Oneric/akkoma-fe:post-language-specialcodes into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/377
2024-05-28 02:10:15 +00:00
Weblate
7e7f03aece Merge branch 'origin/develop' into Weblate. 2024-05-28 02:07:18 +00:00
floatingghost
29ff2ef455 Merge pull request 'Fix ordering of favourites timeline' (#392) from Oneric/akkoma-fe:favourite-ordering into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/392
2024-05-28 02:07:15 +00:00
Yuki Joou
8c49474dea status component: Fix repeater name overflowing
If someone repeating a post had a long username, their username would
overflow beyond the bounds of the post.

This fixes this isse by turning the bar displaying the username and
repeat icon into a flexbox.
2024-05-18 01:25:15 +02:00
Oneric
62e0dd858c Fix ordering of favourites timeline
The backend returns them order by when the post was favourited;
reordering them by post date jumbles everything up each addition
and serves no purpose.

Fixes: https://akkoma.dev/AkkomaGang/akkoma-fe/issues/391
2024-05-15 18:47:47 +02:00
sarah
cc709394c5 remove unused classes on notifications 2024-05-14 18:09:21 +02:00
Serhii Tereshchenko
57beea6a0d fix: Use label and key for options 2024-05-13 16:13:58 +03:00
Weblate
45524552a0 Translated using Weblate (Vietnamese)
Currently translated at 91.9% (964 of 1048 strings)

Translated using Weblate (Vietnamese)

Currently translated at 92.2% (965 of 1046 strings)

Translated using Weblate (Vietnamese)

Currently translated at 92.2% (965 of 1046 strings)

Translated using Weblate (Vietnamese)

Currently translated at 84.3% (882 of 1046 strings)

Translated using Weblate (Vietnamese)

Currently translated at 84.3% (882 of 1046 strings)

Translated using Weblate (Vietnamese)

Currently translated at 79.8% (835 of 1046 strings)

Translated using Weblate (Vietnamese)

Currently translated at 79.8% (835 of 1046 strings)

Co-authored-by: Nguyễn Gia Phong <cnx@loang.net>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: xarvos <huyngo@disroot.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/vi/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
ee66b69ab5 Translated using Weblate (Japanese)
Currently translated at 0.2% (3 of 1046 strings)

Added translation using Weblate (Japanese)

Co-authored-by: Nakaya <s_fpfb_sub-second@yahoo.co.jp>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/ja/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
d42e374704 Translated using Weblate (Greek)
Currently translated at 15.9% (167 of 1046 strings)

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: getimiskon <getimiskon@disroot.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/el/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
ce8a9d2b4a Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1048 of 1048 strings)

Merge branch 'origin/develop' into Weblate.

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (1046 of 1046 strings)

Co-authored-by: Poesty Li <poesty7450@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/zh_Hans/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
d2b7ac6d8c Translated using Weblate (Polish)
Currently translated at 99.7% (1045 of 1048 strings)

Translated using Weblate (Polish)

Currently translated at 99.7% (1045 of 1048 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (1046 of 1046 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (1046 of 1046 strings)

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: subtype <subtype@hollow.capital>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/pl/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
754c72cb24 Translated using Weblate (Portuguese)
Currently translated at 100.0% (1048 of 1048 strings)

Co-authored-by: Jammer Lammer <akHarINlMYExpSmVPDRT@proton.me>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/pt/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
f5bd195422 Translated using Weblate (Russian)
Currently translated at 68.7% (719 of 1046 strings)

Co-authored-by: Mel <hi@mel.gg>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/ru/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
d49fd46554 Translated using Weblate (Japanese (ja_EASY))
Currently translated at 72.3% (757 of 1046 strings)

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: kazari <6c577a54-aac9-482a-955e-745c858445e3@simplelogin.com>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/ja_EASY/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
9982373853 Translated using Weblate (Italian)
Currently translated at 80.4% (841 of 1045 strings)

Translated using Weblate (Italian)

Currently translated at 65.3% (683 of 1045 strings)

Co-authored-by: Cuche <cuche@mailbox.org>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/it/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
5206b5cf9c Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1048 of 1048 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 99.2% (1040 of 1048 strings)

Co-authored-by: Toot <toothpicker@users.noreply.translate.akkoma.dev>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/zh_Hant/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
a65a06ca04 Translated using Weblate (Catalan)
Currently translated at 100.0% (1048 of 1048 strings)

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: fadelkon <fadelkon@posteo.net>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/ca/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
c10b38afbc Translated using Weblate (Indonesian)
Currently translated at 71.9% (753 of 1046 strings)

Co-authored-by: Aldiantoro Nugroho <kriwil@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/id/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Weblate
009941ea2c Translated using Weblate (Spanish)
Currently translated at 93.7% (983 of 1048 strings)

Translated using Weblate (Spanish)

Currently translated at 93.9% (983 of 1046 strings)

Translated using Weblate (Spanish)

Currently translated at 92.5% (967 of 1045 strings)

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: taretka <info@tarteka.net>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/es/
Translation: Pleroma fe/pleroma-fe
2024-04-29 14:09:37 +00:00
Serhii Tereshchenko
042e8c78dc feat: Add "Default post language" option
Refs #386
2024-04-20 16:07:03 +03:00
Oneric
0e07d88afa Expand Unicode emoji map
This pulls in 267 new emoji:
  - all 258 non-deprecated country or macro region
    flags (composed by two regional indicators)
  - all 3 regional flags currently recommended for general use
    (Wales, Scotland, England)
  - a few random ones i picked out
    - goose
    - heart on fire
    - heart mending
    - transgender flag
    - rainbow flag
    - pirate flag

The new names are derived from official Unicode names
with minor modifications to fit into the usual shortcode scheme
and dropping the flag_ prefix from country indicators.
Due to a naming conflict the old "japan" emoji
U+1F5FE SILHOUETTE OF JAPAN was renamed to "japan_silhouette".
2024-04-04 21:52:33 +02:00
sarah
1f5f8665c8 make animated reactions pause unless hovered on notifications 2024-03-01 20:02:19 +01:00
Oneric
428ed70b0d Fix posting for special interface languages
Easy Japanses (ja_easy) and traditional Chinses (zh_Hant) use
(custom) non-ISO codes in the interface. Because MastoAPI only accepts
ISO 639 codes, the backend will return an error rendering users
unable to do anything unless the post’s language was explicitly set.
2024-02-26 08:05:55 +01:00
144 changed files with 9206 additions and 6343 deletions

View file

@ -1,2 +0,0 @@
build/*.js
config/*.js

View file

@ -1,30 +0,0 @@
module.exports = {
root: true,
parserOptions: {
parser: '@babel/eslint-parser',
sourceType: 'module'
},
// https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
extends: [
'plugin:vue/recommended'
],
// required to lint *.vue files
plugins: [
'vue',
'import'
],
// add your custom rules here
rules: {
// allow paren-less arrow functions
'arrow-parens': 0,
// allow async-await
'generator-star-spacing': 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
'vue/require-prop-types': 0,
'vue/no-unused-vars': 0,
'no-tabs': 0,
'vue/multi-word-component-names': 0,
'vue/no-reserved-component-names': 0
}
}

View file

@ -1 +0,0 @@
7.2.1

1
.tool-versions Normal file
View file

@ -0,0 +1 @@
nodejs 20.12.2

View file

@ -1,20 +1,21 @@
labels:
platform: linux/amd64
pipeline:
steps:
lint:
when:
event:
- pull_request
image: node:18
image: node:20
commands:
- yarn
- yarn lint
#- yarn stylelint
test:
when:
event:
- pull_request
image: node:18
image: node:20
commands:
- apt update
- apt install firefox-esr -y --no-install-recommends
@ -28,7 +29,7 @@ pipeline:
branch:
- develop
- stable
image: node:18
image: node:20
commands:
- yarn
- yarn build
@ -40,15 +41,15 @@ pipeline:
branch:
- develop
- stable
image: node:18
image: node:20
secrets:
- SCW_ACCESS_KEY
- SCW_SECRET_KEY
- SCW_DEFAULT_ORGANIZATION_ID
commands:
- apt-get update && apt-get install -y rclone wget zip
- wget https://github.com/scaleway/scaleway-cli/releases/download/v2.5.1/scaleway-cli_2.5.1_linux_amd64
- mv scaleway-cli_2.5.1_linux_amd64 scaleway-cli
- wget https://github.com/scaleway/scaleway-cli/releases/download/v2.30.0/scaleway-cli_2.30.0_linux_amd64
- mv scaleway-cli_2.30.0_linux_amd64 scaleway-cli
- chmod +x scaleway-cli
- ./scaleway-cli object config install type=rclone
- zip akkoma-fe.zip -r dist
@ -70,8 +71,8 @@ pipeline:
- SCW_DEFAULT_ORGANIZATION_ID
commands:
- apt-get update && apt-get install -y rclone wget git zip
- wget https://github.com/scaleway/scaleway-cli/releases/download/v2.5.1/scaleway-cli_2.5.1_linux_amd64
- mv scaleway-cli_2.5.1_linux_amd64 scaleway-cli
- wget https://github.com/scaleway/scaleway-cli/releases/download/v2.30.0/scaleway-cli_2.30.0_linux_amd64
- mv scaleway-cli_2.30.0_linux_amd64 scaleway-cli
- chmod +x scaleway-cli
- ./scaleway-cli object config install type=rclone
- cd docs

View file

@ -20,6 +20,8 @@ To use Akkoma-FE in Akkoma, use the [frontend](https://docs.akkoma.dev/stable/ad
## Build Setup
Make sure you have [Node.js](https://nodejs.org/) installed. You can check `/.woodpecker.yml` for which node version the Akkoma CI currently uses.
``` bash
# install dependencies
corepack enable

View file

@ -1,36 +1,36 @@
// https://github.com/shelljs/shelljs
require('./check-versions')()
require('shelljs/global')
env.NODE_ENV = 'production'
require("./check-versions")();
require("shelljs/global");
env.NODE_ENV = "production";
var path = require('path')
var config = require('../config')
var ora = require('ora')
var webpack = require('webpack')
var webpackConfig = require('./webpack.prod.conf')
var path = require("path");
var config = require("../config");
var webpack = require("webpack");
var webpackConfig = require("./webpack.prod.conf");
console.log(
' Tip:\n' +
' Built files are meant to be served over an HTTP server.\n' +
' Opening index.html over file:// won\'t work.\n'
)
" Tip:\n" +
" Built files are meant to be served over an HTTP server.\n" +
" Opening index.html over file:// won't work.\n",
);
var spinner = ora('building for production...')
spinner.start()
var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory)
rm('-rf', assetsPath)
mkdir('-p', assetsPath)
cp('-R', 'static/*', assetsPath)
var assetsPath = path.join(
config.build.assetsRoot,
config.build.assetsSubDirectory,
);
rm("-rf", assetsPath);
mkdir("-p", assetsPath);
cp("-R", "static/*", assetsPath);
webpack(webpackConfig, function (err, stats) {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
if (err) throw err;
process.stdout.write(
stats.toString({
colors: true,
modules: false,
children: false,
chunks: false,
chunkModules: false
}) + '\n')
})
chunkModules: false,
}) + "\n",
);
});

View file

@ -5,7 +5,7 @@ var path = require('path')
var express = require('express')
var webpack = require('webpack')
var opn = require('opn')
var proxyMiddleware = require('http-proxy-middleware')
const { createProxyMiddleware } = require('http-proxy-middleware');
var webpackConfig = process.env.NODE_ENV === 'testing'
? require('./webpack.prod.conf')
: require('./webpack.dev.conf')
@ -36,7 +36,13 @@ Object.keys(proxyTable).forEach(function (context) {
if (typeof options === 'string') {
options = { target: options }
}
app.use(proxyMiddleware(context, options))
const targetUrl = new URL(options.target);
// add path
targetUrl.pathname = context;
options.target = targetUrl.toString();
console.log("Proxying", context, "to", options.target);
app.use(context, createProxyMiddleware(options))
})
// handle fallback for HTML5 history API

View file

@ -3,6 +3,7 @@ var config = require('../config')
var utils = require('./utils')
var projectRoot = path.resolve(__dirname, '../')
var { VueLoaderPlugin } = require('vue-loader')
const ESLintPlugin = require('eslint-webpack-plugin');
var env = process.env.NODE_ENV
// check env & config/index.js to decide weither to enable CSS Sourcemaps for the
@ -35,6 +36,7 @@ module.exports = {
],
fallback: {
"url": require.resolve("url/"),
querystring: require.resolve("querystring-es3")
},
alias: {
'static': path.resolve(__dirname, '../static'),
@ -47,20 +49,6 @@ module.exports = {
module: {
noParse: /node_modules\/localforage\/dist\/localforage.js/,
rules: [
{
enforce: 'pre',
test: /\.(js|vue)$/,
include: projectRoot,
exclude: /node_modules/,
use: {
loader: 'eslint-loader',
options: {
formatter: require('eslint-friendly-formatter'),
sourceMap: config.build.productionSourceMap,
extract: true
}
}
},
{
enforce: 'post',
test: /\.(json5?|ya?ml)$/, // target json, json5, yaml and yml files
@ -118,6 +106,9 @@ module.exports = {
]
},
plugins: [
new VueLoaderPlugin()
new VueLoaderPlugin(),
new ESLintPlugin({
configType: 'flat'
})
]
}

View file

@ -2,5 +2,4 @@ var { merge } = require('webpack-merge')
var devEnv = require('./dev.env')
module.exports = merge(devEnv, {
NODE_ENV: '"testing"'
})

31
eslint.config.js Normal file
View file

@ -0,0 +1,31 @@
const pluginVue = require('eslint-plugin-vue')
const pluginImport = require('eslint-plugin-import')
module.exports = [
...pluginVue.configs['flat/recommended'],
{
languageOptions: {
parserOptions: {
parser: '@babel/eslint-parser',
sourceType: 'module'
}
},
rules: {
// allow paren-less arrow functions
'arrow-parens': 0,
// allow async-await
'generator-star-spacing': 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
'vue/require-prop-types': 0,
'vue/no-unused-vars': 0,
'no-tabs': 0,
'vue/multi-word-component-names': 0,
'vue/no-reserved-component-names': 0
},
ignores: [
'build/*.js',
'config/*.js'
]
}
]

View file

@ -6,7 +6,6 @@
<title>Akkoma</title>
<link rel="stylesheet" href="/static/font/tiresias.css">
<link rel="stylesheet" href="/static/font/css/lato.css">
<link rel="stylesheet" href="/static/mfm.css">
<link rel="stylesheet" href="/static/custom.css">
<link rel="stylesheet" href="/static/theme-holder.css" id="theme-holder">
<!--server-generated-meta-->

View file

@ -12,120 +12,118 @@
"e2e": "node test/e2e/runner.js",
"test": "npm run unit && npm run e2e",
"stylelint": "stylelint src/**/*.scss",
"lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs",
"lint-fix": "eslint --fix --ext .js,.vue src test/unit/specs test/e2e/specs"
"lint": "eslint src test/unit/specs test/e2e/specs",
"lint-fix": "eslint --fix src test/unit/specs test/e2e/specs"
},
"dependencies": {
"@babel/runtime": "7.17.8",
"@chenfengyuan/vue-qrcode": "2.0.0",
"@chenfengyuan/vue-qrcode": "^2.0.0",
"@floatingghost/pinch-zoom-element": "^1.3.1",
"@fortawesome/fontawesome-svg-core": "1.3.0",
"@fortawesome/free-regular-svg-icons": "^6.1.2",
"@fortawesome/free-solid-svg-icons": "^6.2.0",
"@fortawesome/vue-fontawesome": "3.0.1",
"@vuelidate/core": "^2.0.0",
"@vuelidate/validators": "^2.0.0",
"blurhash": "^2.0.4",
"body-scroll-lock": "2.7.1",
"chromatism": "3.0.0",
"click-outside-vue3": "4.0.1",
"cropperjs": "1.5.12",
"diff": "3.5.0",
"escape-html": "1.0.3",
"@fortawesome/fontawesome-svg-core": "^6.5.2",
"@fortawesome/free-regular-svg-icons": "^6.5.2",
"@fortawesome/free-solid-svg-icons": "^6.5.2",
"@fortawesome/vue-fontawesome": "^3.0.8",
"@vuelidate/core": "^2.0.3",
"@vuelidate/validators": "^2.0.4",
"blurhash": "^2.0.5",
"body-scroll-lock": "^3.1.5",
"chromatism": "^3.0.0",
"click-outside-vue3": "^4.0.1",
"cropperjs": "^1.6.2",
"diff": "^5.2.0",
"escape-html": "^1.0.3",
"iso-639-1": "^2.1.15",
"js-cookie": "^3.0.1",
"localforage": "1.10.0",
"localforage": "^1.10.0",
"parse-link-header": "^2.0.0",
"phoenix": "1.6.2",
"punycode.js": "2.1.0",
"qrcode": "1",
"url": "^0.11.0",
"vue": "^3.2.31",
"vue-i18n": "^9.2.2",
"vue-router": "4.0.14",
"vue-template-compiler": "2.6.11",
"vuex": "4.0.2"
"phoenix": "^1.7.12",
"punycode.js": "^2.3.1",
"qrcode": "^1.5.3",
"querystring-es3": "^0.2.1",
"url": "^0.11.3",
"vue": "^3.4.38",
"vue-i18n": "^9.14.0",
"vue-router": "^4.4.3",
"vue-template-compiler": "^2.7.16",
"vuex": "^4.1.0"
},
"devDependencies": {
"@babel/core": "7.17.8",
"@babel/core": "^7.24.6",
"@babel/eslint-parser": "^7.19.1",
"@babel/plugin-transform-runtime": "7.17.0",
"@babel/preset-env": "7.16.11",
"@babel/register": "7.17.7",
"@babel/plugin-transform-runtime": "^7.24.6",
"@babel/preset-env": "^7.24.6",
"@babel/register": "^7.24.6",
"@intlify/vue-i18n-loader": "^5.0.0",
"@ungap/event-target": "0.2.3",
"@vue/babel-helper-vue-jsx-merge-props": "1.2.1",
"@vue/babel-plugin-jsx": "1.1.1",
"@ungap/event-target": "^0.2.4",
"@vue/babel-helper-vue-jsx-merge-props": "^1.4.0",
"@vue/babel-plugin-jsx": "^1.2.2",
"@vue/compiler-sfc": "^3.1.0",
"@vue/test-utils": "^2.0.2",
"autoprefixer": "6.7.7",
"autoprefixer": "^10.4.19",
"babel-loader": "^9.1.0",
"babel-plugin-lodash": "3.3.4",
"babel-plugin-lodash": "^3.3.4",
"chai": "^4.3.7",
"chalk": "1.1.3",
"chromedriver": "^107.0.3",
"chalk": "^1.1.3",
"chromedriver": "^119.0.1",
"connect-history-api-fallback": "^2.0.0",
"cross-spawn": "^7.0.3",
"css-loader": "^6.7.2",
"css-loader": "^7.1.2",
"custom-event-polyfill": "^1.0.7",
"eslint": "^7.32.0",
"eslint-config-standard": "^17.0.0",
"eslint": "^9.3.0",
"eslint-config-standard": "^17.1.0",
"eslint-friendly-formatter": "^4.0.1",
"eslint-loader": "^4.0.2",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-promise": "^6.2.0",
"eslint-plugin-standard": "^5.0.0",
"eslint-plugin-vue": "^9.7.0",
"eventsource-polyfill": "0.9.6",
"express": "4.17.3",
"eslint-plugin-vue": "^9.26.0",
"eslint-webpack-plugin": "^4.2.0",
"eventsource-polyfill": "^0.9.6",
"express": "^4.19.2",
"file-loader": "^6.2.0",
"function-bind": "1.1.1",
"function-bind": "^1.1.2",
"html-webpack-plugin": "^5.5.0",
"http-proxy-middleware": "0.21.0",
"inject-loader": "2.0.1",
"isparta-loader": "2.0.0",
"json-loader": "0.5.7",
"karma": "6.3.17",
"karma-coverage": "1.1.2",
"karma-firefox-launcher": "1.3.0",
"karma-mocha": "2.0.1",
"karma-mocha-reporter": "2.2.5",
"karma-sinon-chai": "2.0.2",
"karma-sourcemap-loader": "0.3.8",
"karma-spec-reporter": "0.0.33",
"http-proxy-middleware": "^3.0.0",
"json-loader": "^0.5.7",
"karma": "^6.4.3",
"karma-coverage": "^2.2.1",
"karma-firefox-launcher": "^2.1.3",
"karma-mocha": "^2.0.1",
"karma-mocha-reporter": "^2.2.5",
"karma-sinon-chai": "^2.0.2",
"karma-sourcemap-loader": "^0.4.0",
"karma-spec-reporter": "^0.0.36",
"karma-webpack": "^5.0.0",
"lodash": "4.17.21",
"lolex": "1.6.0",
"mini-css-extract-plugin": "0.12.0",
"mocha": "3.5.3",
"nightwatch": "0.9.21",
"opn": "4.0.2",
"ora": "0.4.1",
"lodash": "^4.17.21",
"lolex": "^6.0.0",
"mini-css-extract-plugin": "^2.9.0",
"mocha": "^10.4.0",
"nightwatch": "^3.6.3",
"opn": "^6.0.0",
"postcss-html": "^1.5.0",
"postcss-loader": "3.0.0",
"postcss-loader": "^8.1.1",
"postcss-sass": "^0.5.0",
"raw-loader": "0.5.1",
"sass": "^1.56.0",
"sass-loader": "^13.2.0",
"selenium-server": "2.53.1",
"semver": "5.7.1",
"shelljs": "0.8.5",
"sinon": "2.4.1",
"sinon-chai": "2.14.0",
"raw-loader": "^4.0.2",
"sass": "^1.77.2",
"sass-loader": "^14.2.1",
"selenium-server": "^3.141.59",
"semver": "^7.6.2",
"shelljs": "^0.8.5",
"sinon": "^18.0.0",
"sinon-chai": "^3.7.0",
"stylelint": "^14.15.0",
"stylelint-config-recommended-vue": "^1.4.0",
"stylelint-config-standard": "^29.0.0",
"stylelint-config-standard-scss": "^6.1.0",
"stylelint-rscss": "^0.4.0",
"url-loader": "^4.1.1",
"vue-loader": "^17.0.0",
"vue-style-loader": "^4.1.2",
"webpack": "^5.75.0",
"webpack-dev-middleware": "^5.3.3",
"webpack-hot-middleware": "^2.25.1",
"webpack-merge": "^5.8.0",
"workbox-webpack-plugin": "^6.5.4"
"vue-loader": "^17.4.2",
"vue-style-loader": "^4.1.3",
"webpack": "^5.91.0",
"webpack-dev-middleware": "^7.2.1",
"webpack-hot-middleware": "^2.26.1",
"webpack-merge": "^5.10.0",
"workbox-webpack-plugin": "^7.1.0"
},
"engines": {
"node": ">= 16.0.0",

View file

@ -59,7 +59,8 @@ export default {
{
'-reverse': this.reverseLayout,
'-no-sticky-headers': this.noSticky,
'-has-new-post-button': this.newPostButtonShown
'-has-new-post-button': this.newPostButtonShown,
'-wide-timeline': this.widenTimeline
},
'-' + this.layoutType
]
@ -93,6 +94,9 @@ export default {
newPostButtonShown () {
return this.$store.getters.mergedConfig.alwaysShowNewPostButton || this.layoutType === 'mobile'
},
widenTimeline () {
return this.$store.getters.mergedConfig.widenTimeline
},
showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },
editingAvailable () { return this.$store.state.instance.editingAvailable },
layoutType () { return this.$store.state.interface.layoutType },

View file

@ -172,6 +172,10 @@ nav {
background-color: rgba(0, 0, 0, 0.15);
background-color: var(--underlay, rgba(0, 0, 0, 0.15));
z-index: -1000;
.-wide-timeline & {
margin:0 calc(var(--columnGap) / -2);
}
}
.app-layout {
@ -187,12 +191,17 @@ nav {
grid-template-rows: 1fr;
box-sizing: border-box;
margin: 0 auto;
padding: 0 calc(var(--columnGap) / 2);
align-content: flex-start;
flex-wrap: wrap;
justify-content: center;
min-height: 100vh;
overflow-x: clip;
&.-wide-timeline {
--maxiColumn: minmax(var(--miniColumn), 1fr);
}
.column {
--___columnMargin: var(--columnGap);

View file

@ -183,6 +183,12 @@ const setSettings = async ({ apiConfig, staticConfig, store }) => {
copyInstanceOption('renderMisskeyMarkdown')
copyInstanceOption('sidebarRight')
if (config.backendCommitUrl)
copyInstanceOption('backendCommitUrl')
if (config.frontendCommitUrl)
copyInstanceOption('frontendCommitUrl')
return store.dispatch('setTheme', config['theme'])
}

View file

@ -6,7 +6,7 @@
:bound-to="{ x: 'container' }"
remove-padding
>
<template v-slot:content>
<template #content>
<div class="dropdown-menu">
<template v-if="relationship.following">
<button
@ -71,7 +71,7 @@
</button>
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button class="button-unstyled ellipsis-button">
<FAIcon
class="icon"
@ -93,7 +93,7 @@
keypath="user_card.block_confirm"
tag="span"
>
<template v-slot:user>
<template #user>
<span
v-text="user.screen_name_ui"
/>

View file

@ -246,8 +246,8 @@
ref="flash"
class="flash"
:src="attachment.large_thumb_url || attachment.url"
@playerOpened="setFlashLoaded(true)"
@playerClosed="setFlashLoaded(false)"
@player-opened="setFlashLoaded(true)"
@player-closed="setFlashLoaded(false)"
/>
</span>
</div>

View file

@ -22,12 +22,12 @@
<script>
export default {
emits: ['update:modelValue'],
props: [
'modelValue',
'indeterminate',
'disabled'
]
],
emits: ['update:modelValue']
}
</script>

View file

@ -14,7 +14,7 @@
:model-value="present"
:disabled="disabled"
class="opt"
@update:modelValue="$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)"
@update:model-value="$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)"
/>
<div class="input color-input-field">
<input
@ -46,7 +46,6 @@
</div>
</div>
</template>
<style lang="scss" src="./color_input.scss"></style>
<script>
import Checkbox from '../checkbox/checkbox.vue'
import { hex2rgb } from '../../services/color_convert/color_convert.js'
@ -108,6 +107,7 @@ export default {
}
}
</script>
<style lang="scss" src="./color_input.scss"></style>
<style lang="scss">
.color-control {

View file

@ -25,6 +25,8 @@
</dialog-modal>
</template>
<script src="./confirm_modal.js"></script>
<style lang="scss" scoped>
@import '../../_variables';
@ -35,5 +37,3 @@
}
}
</style>
<script src="./confirm_modal.js"></script>

View file

@ -267,11 +267,11 @@ const conversation = {
},
replies () {
let i = 1
// eslint-disable-next-line camelcase
return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {
/* eslint-disable camelcase */
const irid = in_reply_to_status_id
/* eslint-enable camelcase */
if (irid) {
result[irid] = result[irid] || []
result[irid].push({

View file

@ -91,7 +91,7 @@
:controlled-set-media-playing="(newVal) => toggleStatusContentProperty(status.id, 'mediaPlaying', newVal)"
@goto="setHighlight"
@toggleExpanded="toggleExpanded"
@toggle-expanded="toggleExpanded"
/>
<div
v-if="showOtherRepliesButtonBelowStatus && getReplies(status.id).length > 1"
@ -184,7 +184,7 @@
:toggle-status-content-property="toggleStatusContentProperty"
@goto="setHighlight"
@toggleExpanded="toggleExpanded"
@toggle-expanded="toggleExpanded"
/>
</div>
</div>

View file

@ -44,9 +44,9 @@
/>
</router-link>
<router-link
v-if="publicTimelineVisible"
:to="{ name: 'public-timeline' }"
class="nav-icon"
v-if="publicTimelineVisible"
>
<FAIcon
fixed-width
@ -68,9 +68,9 @@
/>
</router-link>
<router-link
v-if="federatedTimelineVisible"
:to="{ name: 'public-external-timeline' }"
class="nav-icon"
v-if="federatedTimelineVisible"
>
<FAIcon
fixed-width

View file

@ -9,7 +9,7 @@
class="btn button-default"
>
{{ $t('domain_mute_card.unmute') }}
<template v-slot:progress>
<template #progress>
{{ $t('domain_mute_card.unmute_progress') }}
</template>
</ProgressButton>
@ -19,7 +19,7 @@
class="btn button-default"
>
{{ $t('domain_mute_card.mute') }}
<template v-slot:progress>
<template #progress>
{{ $t('domain_mute_card.mute_progress') }}
</template>
</ProgressButton>

View file

@ -2,7 +2,7 @@
<Modal
v-if="isFormVisible"
class="edit-form-modal-view"
@backdropClicked="closeModal"
@backdrop-clicked="closeModal"
>
<div class="edit-form-modal-panel panel">
<div class="panel-heading">
@ -11,10 +11,10 @@
<PostStatusForm
class="panel-body"
v-bind="params"
@posted="closeModal"
:disablePolls="true"
:disableVisibilitySelector="true"
:disable-polls="true"
:disable-visibility-selector="true"
:post-handler="doEditStatus"
@posted="closeModal"
/>
</div>
</Modal>

View file

@ -43,7 +43,10 @@
:class="{ highlighted: index === highlighted }"
@click.stop.prevent="onClick($event, suggestion)"
>
<span v-if="!suggestion.mfm" class="image">
<span
v-if="!suggestion.mfm"
class="image"
>
<img
v-if="suggestion.img"
:src="suggestion.img"

View file

@ -1,4 +1,4 @@
const MFM_TAGS = ['blur', 'bounce', 'flip', 'font', 'jelly', 'jump', 'rainbow', 'rotate', 'shake', 'sparkle', 'spin', 'tada', 'twitch', 'x2', 'x3', 'x4']
const MFM_TAGS = ['bg', 'blur', 'bounce', 'center', 'fg', 'flip', 'font', 'jelly', 'jump', 'position', 'rainbow', 'rotate', 'scale', 'shake', 'sparkle', 'spin', 'tada', 'twitch', 'x2', 'x3', 'x4']
.map(tag => ({ displayText: tag, detailText: '$[' + tag + ' ]', replacement: '$[' + tag + ' ]', mfm: true }))
/**
@ -122,14 +122,14 @@ export const suggestUsers = ({ dispatch, state }) => {
const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1
return diff + nameAlphabetically + screenNameAlphabetically
/* eslint-disable camelcase */
}).map(({ screen_name, screen_name_ui, name, profile_image_url_original }) => ({
displayText: screen_name_ui,
detailText: name,
imageUrl: profile_image_url_original,
replacement: '@' + screen_name + ' '
}))
/* eslint-enable camelcase */
suggestions = newSuggestions || []
return suggestions

View file

@ -7,7 +7,7 @@
:bound-to="{ x: 'container' }"
remove-padding
>
<template v-slot:content="{close}">
<template #content="{close}">
<div class="dropdown-menu">
<button
v-if="canMute && !status.thread_muted"
@ -172,7 +172,7 @@
</button>
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button class="button-unstyled popover-trigger">
<FAIcon
class="fa-scale-110 fa-old-padding"

View file

@ -1,5 +1,8 @@
<template>
<basic-user-card :user="user" v-if="show">
<basic-user-card
v-if="show"
:user="user"
>
<div class="follow-request-card-content-container">
<button
class="btn button-default"

View file

@ -88,10 +88,8 @@ const Gallery = {
set(this.sizes, id, { width, height })
},
rowStyle (row) {
if (row.audio) {
return { 'padding-bottom': '25%' } // fixed reduced height for audio
} else if (!row.minimal && !row.grid) {
return { 'padding-bottom': `${(100 / (row.items.length + 0.6))}%` }
if (!row.audio && !row.minimal && !row.grid) {
return { 'aspect-ratio': `1/${(1 / (row.items.length + 0.6))}` }
}
},
itemStyle (id, row) {

View file

@ -31,8 +31,8 @@
:description="descriptions && descriptions[attachment.id]"
:hide-description="size === 'small' || tooManyAttachments && hidingLong"
:style="itemStyle(attachment.id, row.items)"
@setMedia="onMedia"
@naturalSizeLoad="onNaturalSizeLoad"
@set-media="onMedia"
@natural-size-load="onNaturalSizeLoad"
/>
</div>
</div>
@ -96,9 +96,15 @@
.gallery-row {
position: relative;
height: 0;
width: 100%;
flex-grow: 1;
.Status & {
max-height: 30em;
}
&.-audio {
aspect-ratio: 4/1; // this is terrible, but it's how it was before so I'm not changing it >:(
}
&:not(:first-child) {
margin-top: 0.5em;

View file

@ -42,6 +42,7 @@ export default {
@import '../../_variables.scss';
.list {
min-height: 1em;
&-item:not(:last-child) {
border-bottom: 1px solid;
border-bottom-color: $fallback--border;

View file

@ -2,7 +2,7 @@
<Modal
v-if="showing"
class="media-modal-view"
@backdropClicked="hideIfNotSwiped"
@backdrop-clicked="hideIfNotSwiped"
>
<SwipeClick
v-if="type === 'image'"

View file

@ -42,7 +42,7 @@ const mediaUpload = {
.then((fileData) => {
self.$emit('uploaded', fileData)
self.decreaseUploadCount()
}, (error) => { // eslint-disable-line handle-callback-err
}, (error) => {
self.$emit('upload-failed', 'default')
self.decreaseUploadCount()
})

View file

@ -18,6 +18,7 @@
<input
id="code"
v-model="code"
autocomplete="one-time-code"
class="form-control"
>
</div>

View file

@ -4,7 +4,7 @@
class="panel-heading"
@click="toggleHidden"
>
<h4>{{ $t('moderation.reports.report') + ' ' + this.account.screen_name }}</h4>
<h4>{{ $t('moderation.reports.report') + ' ' + account.screen_name }}</h4>
<button
v-if="isOpen"
class="button-default"
@ -35,7 +35,10 @@
<div v-if="content">
{{ decode(content) }}
</div>
<i v-else class="faint">
<i
v-else
class="faint"
>
{{ $t('moderation.reports.no_content') }}
</i>
<div class="report-author">
@ -43,12 +46,12 @@
class="small-avatar"
:user="actor"
/>
{{ this.actor.screen_name }}
{{ actor.screen_name }}
</div>
</div>
<div
v-if="!hidden && statuses.length > 0"
class="dropdown"
v-if="!hidden && this.statuses.length > 0"
>
<button
class="button button-unstyled dropdown-header"
@ -74,8 +77,8 @@
</div>
</div>
<div
v-if="!hidden && notes.length > 0"
class="dropdown"
v-if="!hidden && this.notes.length > 0"
>
<button
class="button button-unstyled dropdown-header"
@ -99,9 +102,9 @@
</div>
<div class="report-add-note">
<textarea
v-model.trim="note"
rows="1"
cols="1"
v-model.trim="note"
:placeholder="$t('moderation.reports.note_placeholder')"
/>
<button
@ -134,7 +137,7 @@
:offset="{ y: 5 }"
remove-padding
>
<template v-slot:trigger>
<template #trigger>
<button
class="btn button-default"
:disabled="!tagPolicyEnabled"
@ -147,7 +150,7 @@
/>
</button>
</template>
<template v-slot:content="{close}">
<template #content="{close}">
<div
class="dropdown-menu"
:disabled="!tagPolicyEnabled"

View file

@ -6,7 +6,7 @@
class="small-avatar"
:user="user"
/>
{{ this.user.screen_name }}
{{ user.screen_name }}
</div>
<div class="header-right">
<Timeago

View file

@ -22,6 +22,9 @@ export default {
default: false
}
},
emits: [
'backdropClicked',
],
computed: {
classes () {
return {

View file

@ -8,7 +8,7 @@
@show="setToggled(true)"
@close="setToggled(false)"
>
<template v-slot:content>
<template #content>
<div class="dropdown-menu">
<span v-if="user.is_local">
<button
@ -122,7 +122,7 @@
</span>
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button
class="btn button-default btn-block moderation-tools-button"
:class="{ toggled }"
@ -137,11 +137,11 @@
v-if="showDeleteUserDialog"
:on-cancel="deleteUserDialog.bind(this, false)"
>
<template v-slot:header>
<template #header>
{{ $t('user_card.admin_menu.delete_user') }}
</template>
<p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>
<template v-slot:footer>
<template #footer>
<button
class="btn button-default"
@click="deleteUserDialog(false)"

View file

@ -6,6 +6,7 @@ import UserCard from '../user_card/user_card.vue'
import Timeago from '../timeago/timeago.vue'
import RichContent from 'src/components/rich_content/rich_content.jsx'
import ConfirmModal from '../confirm_modal/confirm_modal.vue'
import StillImage from '../still-image/still-image.vue'
import { isStatusNotification } from '../../services/notification_utils/notification_utils.js'
import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'
import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'
@ -50,7 +51,8 @@ const Notification = {
Timeago,
Status,
RichContent,
ConfirmModal
ConfirmModal,
StillImage
},
methods: {
toggleUserExpanded () {

View file

@ -116,12 +116,13 @@
scope="global"
keypath="notifications.reacted_with"
>
<img
<still-image
v-if="notification.emoji_url !== null"
class="notification-reaction-emoji"
:src="notification.emoji_url"
:name="notification.emoji"
>
:title="notification.emoji"
:alt="notification.emoji"
/>
<span
v-else
class="emoji-reaction-emoji"

View file

@ -5,7 +5,7 @@
placement="bottom"
:bound-to="{ x: 'container' }"
>
<template v-slot:content>
<template #content>
<div class="dropdown-menu">
<button
class="button-default dropdown-item"
@ -72,7 +72,7 @@
</button>
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button class="filter-trigger-button button-unstyled">
<FAIcon icon="filter" />
</button>

View file

@ -14,7 +14,7 @@
:model-value="present"
:disabled="disabled"
class="opt"
@update:modelValue="$emit('update:modelValue', !present ? fallback : undefined)"
@update:model-value="$emit('update:modelValue', !present ? fallback : undefined)"
/>
<input
:id="name"

View file

@ -2,7 +2,6 @@
<pinch-zoom
class="pinch-zoom-parent"
v-bind="$attrs"
v-on="$listeners"
>
<slot />
</pinch-zoom>

View file

@ -9,11 +9,12 @@ import StatusContent from '../status_content/status_content.vue'
import fileTypeService from '../../services/file_type/file_type.service.js'
import { findOffset } from '../../services/offset_finder/offset_finder.service.js'
import { reject, map, uniqBy, debounce } from 'lodash'
import { usePostLanguageOptions } from 'src/lib/post_language'
import suggestor from '../emoji_input/suggestor.js'
import { mapGetters, mapState } from 'vuex'
import Checkbox from '../checkbox/checkbox.vue'
import Select from '../select/select.vue'
import iso6391 from 'iso-639-1'
import { library } from '@fortawesome/fontawesome-svg-core'
import {
@ -62,6 +63,13 @@ const deleteDraft = (draftKey) => {
localStorage.setItem('drafts', JSON.stringify(draftData));
}
const interfaceToISOLanguage = (ilang) => {
const sep = ilang.indexOf("_");
return sep < 0 ?
ilang :
ilang.substr(0, sep);
}
const PostStatusForm = {
props: [
'statusId',
@ -129,6 +137,13 @@ const PostStatusForm = {
this.$refs.textarea.focus()
}
},
setup() {
const {postLanguageOptions} = usePostLanguageOptions()
return {
postLanguageOptions,
}
},
data () {
const preset = this.$route.query.message
let statusText = preset || ''
@ -138,7 +153,8 @@ const PostStatusForm = {
statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)
}
const { postContentType: contentType, sensitiveByDefault, sensitiveIfSubject, interfaceLanguage, alwaysShowSubjectInput } = this.$store.getters.mergedConfig
const { postContentType: contentType, postLanguage: defaultPostLanguage, sensitiveByDefault, sensitiveIfSubject, interfaceLanguage, alwaysShowSubjectInput } = this.$store.getters.mergedConfig
const postLanguage = defaultPostLanguage || interfaceToISOLanguage(interfaceLanguage)
let statusParams = {
spoilerText: this.subject || '',
@ -149,7 +165,7 @@ const PostStatusForm = {
poll: {},
mediaDescriptions: {},
visibility: this.suggestedVisibility(),
language: interfaceLanguage,
language: postLanguage,
contentType
}
@ -164,7 +180,7 @@ const PostStatusForm = {
poll: this.statusPoll || {},
mediaDescriptions: this.statusMediaDescriptions || {},
visibility: this.statusScope || this.suggestedVisibility(),
language: this.statusLanguage || interfaceLanguage,
language: this.statusLanguage || postLanguage,
contentType: statusContentType
}
}
@ -309,13 +325,11 @@ const PostStatusForm = {
...mapState({
mobileLayout: state => state.interface.mobileLayout
}),
isoLanguages () {
return iso6391.getAllCodes();
}
},
watch: {
'newStatus': {
deep: true,
flush: 'sync',
handler () {
this.statusChanged()
}

View file

@ -118,8 +118,8 @@
/>
</div>
<EmojiInput
ref="subject-emoji-input"
v-if="subjectVisible"
ref="subject-emoji-input"
v-model="newStatus.spoilerText"
enable-emoji-picker
hide-emoji-button
@ -170,7 +170,7 @@
cols="1"
:disabled="posting && !optimisticPosting"
class="form-post-body"
:class="{ 'scrollable-form': !!maxHeight }"
:class="{ 'scrollable-form': !!maxHeight, '-has-subject': subjectVisible }"
@keydown.exact.enter="submitOnEnter && postStatus($event, newStatus)"
@keydown.meta.enter="postStatus($event, newStatus)"
@keydown.ctrl.enter="!submitOnEnter && postStatus($event, newStatus)"
@ -190,6 +190,7 @@
<div
v-if="!disableScopeSelector"
class="visibility-tray"
:class="{ 'visibility-tray-edit': isEdit }"
>
<scope-selector
v-if="!disableVisibilitySelector"
@ -200,7 +201,9 @@
/>
<div
class="language-selector"
class="format-selector-container">
<div
class="format-selector"
>
<Select
id="post-language"
@ -208,17 +211,17 @@
class="form-control"
>
<option
v-for="language in isoLanguages"
:key="language"
:value="language"
v-for="language in postLanguageOptions"
:key="language.key"
:value="language.value"
>
{{ language }}
{{ language.label }}
</option>
</Select>
</div>
<div
v-if="postFormats.length > 1"
class="text-format"
class="text-format format-selector"
>
<Select
id="post-content-type"
@ -236,7 +239,7 @@
</div>
<div
v-if="postFormats.length === 1 && postFormats[0] !== 'text/plain'"
class="text-format"
class="text-format format-selector"
>
<span class="only-format">
{{ $t(`post_status.content_type["${postFormats[0]}"]`) }}
@ -244,6 +247,7 @@
</div>
</div>
</div>
</div>
<poll-form
v-if="pollsAvailable"
ref="pollForm"
@ -460,6 +464,10 @@
align-items: baseline;
}
.visibility-tray-edit {
justify-content: right;
}
.visibility-notice.edit-warning {
> :first-child {
margin-top: 0;
@ -470,6 +478,12 @@
}
}
.format-selector-container {
.format-selector {
display: inline-block;
}
}
.media-upload-icon, .poll-icon, .emoji-icon, .spoiler-icon {
font-size: 1.85em;
line-height: 1.1;
@ -570,6 +584,11 @@
line-height: 1.85;
}
.form-post-subject {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.form-post-body {
// TODO: make a resizable textarea component?
box-sizing: content-box; // needed for easier computation of dynamic size
@ -582,6 +601,11 @@
min-height: calc(var(--post-line-height) * 1em);
resize: none;
&.-has-subject {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
&.scrollable-form {
overflow-y: auto;
}

View file

@ -3,7 +3,7 @@
v-if="isLoggedIn && !resettingForm"
:is-open="modalActivated"
class="post-form-modal-view"
@backdropClicked="closeModal"
@backdrop-clicked="closeModal"
>
<div class="post-form-modal-panel panel">
<div class="panel-heading">

View file

@ -8,13 +8,13 @@
remove-padding
@show="focusInput"
>
<template v-slot:content="{close}">
<template #content="{close}">
<EmojiPicker
:enable-sticker-picker="false"
@emoji="addReaction($event, close)"
/>
</template>
<template v-slot:trigger>
<template #trigger>
<button
class="button-unstyled popover-trigger"
:title="$t('tool_tip.add_reaction')"

View file

@ -2,7 +2,7 @@ export default {
props: [ 'user' ],
computed: {
subscribeUrl () {
// eslint-disable-next-line no-undef
const serverUrl = new URL(this.user.statusnet_profile_url)
return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`
}

View file

@ -121,6 +121,19 @@ export default {
}
}
const mfmStyleFromDataAttributes = (attributes) => {
// CSS selectors can check if a data-* attribute is true, but can't use other values, so we want to add them to the style attribute
// Here we turn e.g. `{'data-mfm-some': '1deg', 'data-mfm-thing': '5s'}` to "--mfm-some: 1deg;--mfm-thing: 5s;"
// Note that we only add the value to `style` when they contain only letters, numbers, dot, or minus signs
// At the moment of writing, this should be enough for legitimate purposes and reduces the chance of injection by using special characters
// There is a special case for the `color` value, who is provided without `#`, but requires this in the `style` attribute
return Object.keys(attributes).filter(
(key) => key.startsWith('data-mfm-') && attributes[key] !== true && /^[a-zA-Z0-9.\-]*$/.test(attributes[key])
).map(
(key) => '--mfm-' + key.substr(9) + (key === 'data-mfm-color' ? ': #' : ': ') + attributes[key] + ';'
).reduce((a,v) => a+v, '')
}
// Processor to use with html_tree_converter
const processItem = (item, index, array, what) => {
// Handle text nodes - just add emoji
@ -191,6 +204,15 @@ export default {
if (this.handleLinks && attrs?.['class']?.includes?.('h-card')) {
return ['', children.map(processItem), '']
}
let mfm_style = mfmStyleFromDataAttributes(attrs)
if (mfm_style !== '') {
return [
opener.slice(0,-1) + ' style="' + mfm_style + '">',
children.map(processItem),
closer
]
}
}
if (children !== undefined) {

View file

@ -24,7 +24,7 @@
:items="items"
:get-key="getKey"
>
<template v-slot:item="{item}">
<template #item="{item}">
<div
class="selectable-list-item-inner"
:class="{ 'selectable-list-item-selected-inner': isSelected(item) }"
@ -41,7 +41,7 @@
/>
</div>
</template>
<template v-slot:empty>
<template #empty>
<slot name="empty" />
</template>
</List>

View file

@ -6,7 +6,7 @@
<Checkbox
:model-value="state"
:disabled="disabled"
@update:modelValue="update"
@update:model-value="update"
>
<span
v-if="!!$slots.default"

View file

@ -8,7 +8,7 @@
<Select
:model-value="state"
:disabled="disabled"
@update:modelValue="update"
@update:model-value="update"
>
<option
v-for="option in options"

View file

@ -6,14 +6,14 @@
<Popover
trigger="hover"
>
<template v-slot:trigger>
<template #trigger>
&nbsp;
<FAIcon
icon="wrench"
:aria-label="$t('settings.setting_changed')"
/>
</template>
<template v-slot:content>
<template #content>
<div class="modified-tooltip">
{{ $t('settings.setting_changed') }}
</div>

View file

@ -6,14 +6,14 @@
<Popover
trigger="hover"
>
<template v-slot:trigger>
<template #trigger>
&nbsp;
<FAIcon
icon="server"
:aria-label="$t('settings.setting_server_side')"
/>
</template>
<template v-slot:content>
<template #content>
<div class="serverside-tooltip">
{{ $t('settings.setting_server_side') }}
</div>

View file

@ -69,7 +69,7 @@ const SettingsModal = {
this.$store.dispatch('closeSettingsModal')
},
logout () {
this.$router.replace('/main/public')
this.$router.replace(this.$store.state.instance.redirectRootNoLogin || '/main/all')
this.$store.dispatch('closeSettingsModal')
this.$store.dispatch('logout')
},

View file

@ -108,7 +108,7 @@
<Checkbox
:model-value="!!expertLevel"
class="expertMode"
@update:modelValue="expertLevel = Number($event)"
@update:model-value="expertLevel = Number($event)"
>
{{ $t("settings.expert_mode") }}
</Checkbox>

View file

@ -72,7 +72,7 @@ const DataImportExportTab = {
// check is it's a local user
if (user && user.is_local) {
// append the instance address
// eslint-disable-next-line no-undef
return user.screen_name + '@' + location.hostname
}
return user.screen_name

View file

@ -4,6 +4,7 @@ import ScopeSelector from 'src/components/scope_selector/scope_selector.vue'
import IntegerSetting from '../helpers/integer_setting.vue'
import InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'
import { usePostLanguageOptions } from 'src/lib/post_language'
import SharedComputedObject from '../helpers/shared_computed_object.js'
import ServerSideIndicator from '../helpers/server_side_indicator.vue'
import { library } from '@fortawesome/fontawesome-svg-core'
@ -17,6 +18,11 @@ library.add(
)
const GeneralTab = {
setup() {
const {postLanguageOptions} = usePostLanguageOptions()
return {postLanguageOptions}
},
data () {
return {
subjectLineOptions: ['email', 'noop', 'masto'].map(mode => ({
@ -118,6 +124,12 @@ const GeneralTab = {
this.$store.dispatch('setOption', { name: 'translationLanguage', value: val })
}
},
postLanguage: {
get: function () { return this.$store.getters.mergedConfig.postLanguage },
set: function (val) {
this.$store.dispatch('setOption', { name: 'postLanguage', value: val })
}
},
...SharedComputedObject()
},
methods: {

View file

@ -44,7 +44,6 @@
<template
v-if="profilesExpanded"
>
<div
v-for="profile in settingsProfiles"
:key="profile.id"
@ -73,15 +72,24 @@
</button>
</template>
</div>
<button class="btn button-default" @click="refreshProfiles()">
<button
class="btn button-default"
@click="refreshProfiles()"
>
{{ $t('settings.settings_profiles_refresh') }}
<FAIcon icon="sync" @click="refreshProfiles()" />
<FAIcon
icon="sync"
@click="refreshProfiles()"
/>
</button>
<h3>{{ $t('settings.settings_profile_creation') }}</h3>
<label for="settings-profile-new-name">
{{ $t('settings.settings_profile_creation_new_name_label') }}
</label>
<input v-model="newProfileName" id="settings-profile-new-name">
<input
id="settings-profile-new-name"
v-model="newProfileName"
>
<button
class="btn button-default"
@click="createSettingsProfile"
@ -151,6 +159,16 @@
{{ $t('settings.show_page_backgrounds') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="centerAlignBio">
{{ $t('settings.center_align_bio') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="compactUserInfo">
{{ $t('settings.compact_user_info') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="stopGifs">
{{ $t('settings.stop_gifs') }}
@ -261,6 +279,11 @@
{{ $t('settings.right_sidebar') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="widenTimeline">
{{ $t('settings.widen_timeline') }}
</BooleanSetting>
</li>
<li>
<ChoiceSetting
v-if="user"
@ -585,6 +608,15 @@
{{ $t('settings.post_status_content_type') }}
</ChoiceSetting>
</li>
<li>
<ChoiceSetting
id="postLanguage"
path="postLanguage"
:options="postLanguageOptions"
>
{{ $t('settings.post_language') }}
</ChoiceSetting>
</li>
<li>
<BooleanSetting
path="alwaysShowNewPostButton"

View file

@ -85,7 +85,7 @@ const MutesAndBlocks = {
// check is it's a local user
if (user && user.is_local) {
// append the instance address
// eslint-disable-next-line no-undef
return user.screen_name + '@' + location.hostname
}
return user.screen_name

View file

@ -10,7 +10,7 @@
:query="queryUserIds"
:placeholder="$t('settings.search_user_to_block')"
>
<template v-slot="row">
<template #default="row">
<BlockCard
:user-id="row.item"
/>
@ -21,7 +21,7 @@
:refresh="true"
:get-key="i => i"
>
<template v-slot:header="{selected}">
<template #header="{selected}">
<div class="bulk-actions">
<ProgressButton
v-if="selected.length > 0"
@ -29,7 +29,7 @@
:click="() => blockUsers(selected)"
>
{{ $t('user_card.block') }}
<template v-slot:progress>
<template #progress>
{{ $t('user_card.block_progress') }}
</template>
</ProgressButton>
@ -39,16 +39,16 @@
:click="() => unblockUsers(selected)"
>
{{ $t('user_card.unblock') }}
<template v-slot:progress>
<template #progress>
{{ $t('user_card.unblock_progress') }}
</template>
</ProgressButton>
</div>
</template>
<template v-slot:item="{item}">
<template #item="{item}">
<BlockCard :user-id="item" />
</template>
<template v-slot:empty>
<template #empty>
{{ $t('settings.no_blocks') }}
</template>
</BlockList>
@ -63,7 +63,7 @@
:query="queryUserIds"
:placeholder="$t('settings.search_user_to_mute')"
>
<template v-slot="row">
<template #default="row">
<MuteCard
:user-id="row.item"
/>
@ -74,7 +74,7 @@
:refresh="true"
:get-key="i => i"
>
<template v-slot:header="{selected}">
<template #header="{selected}">
<div class="bulk-actions">
<ProgressButton
v-if="selected.length > 0"
@ -82,7 +82,7 @@
:click="() => muteUsers(selected)"
>
{{ $t('user_card.mute') }}
<template v-slot:progress>
<template #progress>
{{ $t('user_card.mute_progress') }}
</template>
</ProgressButton>
@ -92,16 +92,16 @@
:click="() => unmuteUsers(selected)"
>
{{ $t('user_card.unmute') }}
<template v-slot:progress>
<template #progress>
{{ $t('user_card.unmute_progress') }}
</template>
</ProgressButton>
</div>
</template>
<template v-slot:item="{item}">
<template #item="{item}">
<MuteCard :user-id="item" />
</template>
<template v-slot:empty>
<template #empty>
{{ $t('settings.no_mutes') }}
</template>
</MuteList>
@ -114,7 +114,7 @@
:query="queryKnownDomains"
:placeholder="$t('settings.type_domains_to_mute')"
>
<template v-slot="row">
<template #default="row">
<DomainMuteCard
:domain="row.item"
/>
@ -125,7 +125,7 @@
:refresh="true"
:get-key="i => i"
>
<template v-slot:header="{selected}">
<template #header="{selected}">
<div class="bulk-actions">
<ProgressButton
v-if="selected.length > 0"
@ -133,16 +133,16 @@
:click="() => unmuteDomains(selected)"
>
{{ $t('domain_mute_card.unmute') }}
<template v-slot:progress>
<template #progress>
{{ $t('domain_mute_card.unmute_progress') }}
</template>
</ProgressButton>
</div>
</template>
<template v-slot:item="{item}">
<template #item="{item}">
<DomainMuteCard :domain="item" />
</template>
<template v-slot:empty>
<template #empty>
{{ $t('settings.no_mutes') }}
</template>
</DomainMuteList>

View file

@ -130,7 +130,7 @@ const ProfileTab = {
note: this.newBio,
locked: this.newLocked,
// Backend notation.
/* eslint-disable camelcase */
display_name: this.newName,
fields_attributes: this.newFields.filter(el => el != null),
bot: this.bot,
@ -138,7 +138,7 @@ const ProfileTab = {
status_ttl_days: this.expirePosts ? this.newPostTTLDays : -1,
permit_followback: this.permit_followback,
accepts_direct_messages_from: this.userAcceptsDirectMessagesFrom
/* eslint-enable camelcase */
}
if (this.emailLanguage) {
@ -187,7 +187,7 @@ const ProfileTab = {
})
return
}
// eslint-disable-next-line no-undef
const reader = new FileReader()
reader.onload = ({ target }) => {
const img = target.result

View file

@ -110,11 +110,9 @@
max="730"
class="expire-posts-days"
:placeholder="$t('settings.expire_posts_input_placeholder')"
/>
</p>
<p>
>
</p>
<p />
<p>
<interface-language-switcher
:prompt-text="$t('settings.email_language')"

View file

@ -1,22 +1,25 @@
import { extractCommit } from 'src/services/version/version.service'
const pleromaFeCommitUrl = 'https://akkoma.dev/AkkomaGang/pleroma-fe/commit/'
const pleromaBeCommitUrl = 'https://akkoma.dev/AkkomaGang/akkoma/commit/'
function joinURL(base, subpath) {
return URL.parse(subpath, base)?.href || "invalid base URL"
}
const VersionTab = {
data () {
const instance = this.$store.state.instance
return {
backendCommitUrl: instance.backendCommitUrl,
backendVersion: instance.backendVersion,
frontendCommitUrl: instance.frontendCommitUrl,
frontendVersion: instance.frontendVersion
}
},
computed: {
frontendVersionLink () {
return pleromaFeCommitUrl + this.frontendVersion
return joinURL(this.frontendCommitUrl, this.frontendVersion)
},
backendVersionLink () {
return pleromaBeCommitUrl + extractCommit(this.backendVersion)
return joinURL(this.backendCommitUrl, extractCommit(this.backendVersion))
}
}
}

View file

@ -266,6 +266,16 @@
color: $fallback--cGreen;
color: var(--cGreen, $fallback--cGreen);
}
.right-side {
display: flex;
align-items: center;
gap: 0.3em;
}
.repeat-tooltip {
flex-shrink: 0;
}
}
.repeater-avatar {

View file

@ -83,7 +83,7 @@
:user="statusoid.user"
/>
<div class="right-side faint">
<span
<div
class="status-username repeater-name"
:title="retweeter"
>
@ -100,8 +100,12 @@
v-else
:to="retweeterProfileLink"
>{{ retweeter }}</router-link>
</span>
</div>
{{ ' ' }}
<div
class="repeat-tooltip"
>
<FAIcon
icon="retweet"
class="repeat-icon"
@ -110,6 +114,7 @@
{{ $t('timeline.repeated') }}
</div>
</div>
</div>
<div
v-if="!deleted"
@ -368,7 +373,7 @@
:controlled-toggle-showing-long-subject="controlledToggleShowingLongSubject"
@mediaplay="addMediaPlaying($event)"
@mediapause="removeMediaPlaying($event)"
@parseReady="setHeadTailLinks"
@parse-ready="setHeadTailLinks"
/>
</div>
@ -476,8 +481,8 @@
/>
<extra-buttons
:status="status"
@onError="showError"
@onSuccess="clearError"
@on-error="showError"
@on-success="clearError"
/>
</div>
</div>

View file

@ -41,7 +41,8 @@ const StatusContent = {
postLength: this.status.text.length,
parseReadyDone: false,
renderMisskeyMarkdown,
translateFrom: null
translateFrom: null,
translating: false
}
},
computed: {
@ -135,7 +136,10 @@ const StatusContent = {
},
translateStatus () {
const translateTo = this.$store.getters.mergedConfig.translationLanguage || this.$store.state.instance.interfaceLanguage
this.$store.dispatch('translateStatus', { id: this.status.id, language: translateTo, from: this.translateFrom })
this.translating = true
this.$store.dispatch(
'translateStatus', { id: this.status.id, language: translateTo, from: this.translateFrom }
).finally(() => { this.translating = false })
}
}
}

View file

@ -3,6 +3,7 @@
.StatusBody {
display: flex;
flex-direction: column;
overflow: hidden;
.translation {
border: 1px solid var(--accent, $fallback--link);
@ -23,24 +24,6 @@
transition: 0.05s;
}
._mfm_x2_ {
.emoji {
height: 100px;
}
}
._mfm_x3_ {
.emoji {
height: 150px;
}
}
._mfm_x4_ {
.emoji {
height: 200px;
}
}
.attachments {
margin-top: 0.5em;
}

View file

@ -1,7 +1,7 @@
<template>
<div
class="StatusBody"
:class="{ '-compact': compact, 'mfm-disabled': !renderMisskeyMarkdown }"
:class="{ '-compact': compact }"
>
<div class="body">
<div
@ -54,7 +54,7 @@
:mfm="renderMisskeyMarkdown && (status.media_type === 'text/x.misskeymarkdown')"
:greentext="mergedConfig.greentext"
:attentions="status.attentions"
@parseReady="onParseReady"
@parse-ready="onParseReady"
/>
<div
v-if="status.translation"
@ -70,7 +70,7 @@
:mfm="renderMisskeyMarkdown && (status.media_type === 'text/x.misskeymarkdown')"
:greentext="mergedConfig.greentext"
:attentions="status.attentions"
@parseReady="onParseReady"
@parse-ready="onParseReady"
/>
<div>
<label class="label">{{ $t('status.override_translation_source_language') }}</label>
@ -89,7 +89,11 @@
</option>
</Select>
{{ ' ' }}
<button @click="translateStatus" class="btn button-default">
<button
class="btn button-default"
:disabled="translating"
@click="translateStatus"
>
{{ $t('status.translate') }}
</button>
</div>

View file

@ -0,0 +1,423 @@
/**
* "FEP-c16b: Formatting MFM functions" attributes that Akkoma supports
*/
.StatusContent:not(.mfm-disabled) {
/* The following are the non-animated MFM */
.mfm-center {
display: block;
text-align: center;
}
.mfm-flip {
display: inline-block;
transform: scaleX(-1);
}
.mfm-flip[data-mfm-v] {
transform: scaleY(-1);
}
.mfm-flip[data-mfm-v][data-mfm-h] {
transform: scale(-1, -1);
}
.mfm-font[data-mfm-serif] {
font-family: serif;
}
.mfm-font[data-mfm-monospace] {
font-family: monospace;
}
.mfm-font[data-mfm-cursive] {
font-family: cursive;
}
.mfm-font[data-mfm-fantasy] {
font-family: fantasy;
}
.mfm-font[data-mfm-emoji] {
font-family: emoji;
}
.mfm-font[data-mfm-math] {
font-family: math;
}
.mfm-blur {
filter: blur(6px);
transition: filter 0.3s;
&:hover {
filter: blur(0);
}
}
.mfm-rotate {
display: inline-block;
transform: rotate(calc(var(--mfm-deg, 90) * 1deg));
transform-origin: center center;
}
.mfm-x2 {
--mfm-zoom-size: 200%;
}
.mfm-x3 {
--mfm-zoom-size: 400%;
}
.mfm-x4 {
--mfm-zoom-size: 600%;
}
.mfm-x2,
.mfm-x3,
.mfm-x4,
.mfm-tada {
.emoji {
--emoji-size: 2em;
}
font-size: var(--mfm-zoom-size);
.mfm-x2,
.mfm-x3,
.mfm-x4,
.mfm-tada {
/* only half effective */
font-size: calc(var(--mfm-zoom-size) / 2 + 50%);
.mfm-x2,
.mfm-x3,
.mfm-x4,
.mfm-tada {
/* disabled */
font-size: 100%;
}
}
}
.mfm-position {
display: inline-block;
transform: translate(calc(var(--mfm-x, 0) * 1em), calc(var(--mfm-y, 0) * 1em));
}
.mfm-scale {
display: inline-block;
transform: scale(var(--mfm-x, 1), var(--mfm-y, 1));
}
.mfm-fg {
color: var(--mfm-color, #f00);
}
.mfm-bg {
background-color: var(--mfm-color, #0f0);
}
/* The following are the animated MFM */
/* .mfm-hover means that we should only play animation when hovering over the StatusContent
* So either StatusContent does not have this class,
* or it has the class and we are hovering over StatusContent
*/
&:not(.mfm-hover:not(:hover)) {
.mfm-jelly {
display: inline-block;
animation: mfm-rubberBand var(--mfm-speed, 1s) linear infinite both;
}
.mfm-twitch {
display: inline-block;
animation: mfm-twitch var(--mfm-speed, 0.5s) ease infinite;
}
.mfm-shake {
display: inline-block;
animation: mfm-shake var(--mfm-speed, 0.5s) ease infinite;
}
.mfm-spin {
display: inline-block;
animation: mfm-spin var(--mfm-speed, 1.5s) linear infinite;
}
.mfm-spin[data-mfm-y] {
animation-name: mfm-spinY;
}
.mfm-spin[data-mfm-x] {
animation-name: mfm-spinX;
}
.mfm-spin[data-mfm-alternate] {
animation-direction: alternate;
}
.mfm-spin[data-mfm-left] {
animation-direction: reverse;
}
.mfm-jump {
display: inline-block;
animation: mfm-jump var(--mfm-speed, 0.75s) linear infinite;
}
.mfm-bounce {
display: inline-block;
animation: mfm-bounce var(--mfm-speed, 0.75s) linear infinite;
transform-origin: center bottom;
}
.mfm-rainbow {
animation: mfm-rainbow var(--mfm-speed, 1s) linear infinite;
}
.mfm-tada {
display: inline-block;
animation: mfm-tada var(--mfm-speed, 1s) linear infinite both;
--mfm-zoom-size: 150%;
}
}
/* animation keyframes */
@keyframes mfm-spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
@keyframes mfm-spinX {
0% { transform: perspective(128px) rotateX(0deg); }
100% { transform: perspective(128px) rotateX(360deg); }
}
@keyframes mfm-spinY {
0% { transform: perspective(128px) rotateY(0deg); }
100% { transform: perspective(128px) rotateY(360deg); }
}
@keyframes mfm-jump {
0% { transform: translateY(0); }
25% { transform: translateY(-16px); }
50% { transform: translateY(0); }
75% { transform: translateY(-8px); }
100% { transform: translateY(0); }
}
@keyframes mfm-bounce {
0% { transform: translateY(0) scale(1, 1); }
25% { transform: translateY(-16px) scale(1, 1); }
50% { transform: translateY(0) scale(1, 1); }
75% { transform: translateY(0) scale(1.5, 0.75); }
100% { transform: translateY(0) scale(1, 1); }
}
@keyframes mfm-twitch {
0% { transform: translate(7px, -2px); }
5% { transform: translate(-3px, 1px); }
10% { transform: translate(-7px, -1px); }
15% { transform: translate(0, -1px); }
20% { transform: translate(-8px, 6px); }
25% { transform: translate(-4px, -3px); }
30% { transform: translate(-4px, -6px); }
35% { transform: translate(-8px, -8px); }
40% { transform: translate(4px, 6px); }
45% { transform: translate(-3px, 1px); }
50% { transform: translate(2px, -10px); }
55% { transform: translate(-7px, 0); }
60% { transform: translate(-2px, 4px); }
65% { transform: translate(3px, -8px); }
70% { transform: translate(6px, 7px); }
75% { transform: translate(-7px, -2px); }
80% { transform: translate(-7px, -8px); }
85% { transform: translate(9px, 3px); }
90% { transform: translate(-3px, -2px); }
95% { transform: translate(-10px, 2px); }
100% { transform: translate(-2px, -6px); }
}
@keyframes mfm-shake {
0% { transform: translate(-3px, -1px) rotate(-8deg); }
5% { transform: translate(0, -1px) rotate(-10deg); }
10% { transform: translate(1px, -3px) rotate(0deg); }
15% { transform: translate(1px, 1px) rotate(11deg); }
20% { transform: translate(-2px, 1px) rotate(1deg); }
25% { transform: translate(-1px, -2px) rotate(-2deg); }
30% { transform: translate(-1px, 2px) rotate(-3deg); }
35% { transform: translate(2px, 1px) rotate(6deg); }
40% { transform: translate(-2px, -3px) rotate(-9deg); }
45% { transform: translate(0, -1px) rotate(-12deg); }
50% { transform: translate(1px, 2px) rotate(10deg); }
55% { transform: translate(0, -3px) rotate(8deg); }
60% { transform: translate(1px, -1px) rotate(8deg); }
65% { transform: translate(0, -1px) rotate(-7deg); }
70% { transform: translate(-1px, -3px) rotate(6deg); }
75% { transform: translate(0, -2px) rotate(4deg); }
80% { transform: translate(-2px, -1px) rotate(3deg); }
85% { transform: translate(1px, -3px) rotate(-10deg); }
90% { transform: translate(1px, 0) rotate(3deg); }
95% { transform: translate(-2px, 0) rotate(-3deg); }
100% { transform: translate(2px, 1px) rotate(2deg); }
}
@keyframes mfm-rubberBand {
0% { transform: scale3d(1, 1, 1); }
30% { transform: scale3d(1.25, 0.75, 1); }
40% { transform: scale3d(0.75, 1.25, 1); }
50% { transform: scale3d(1.15, 0.85, 1); }
65% { transform: scale3d(0.95, 1.05, 1); }
75% { transform: scale3d(1.05, 0.95, 1); }
100% { transform: scale3d(1, 1, 1); }
}
@keyframes mfm-rainbow {
0% { filter: hue-rotate(0deg) contrast(150%) saturate(150%); }
100% { filter: hue-rotate(360deg) contrast(150%) saturate(150%); }
}
@keyframes mfm-tada {
0%,
100% { transform: scale3d(1, 1, 1); }
10%,
20% { transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); }
30%,
50%,
70%,
90% { transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); }
40%,
60%,
80% { transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); }
}
/**
* Legacy MFM
* This is for backwards compatibility with posts formatted on Akkoma before support for FEP-c16b
* Note that it uses the keyframes as defined above for the FEP-c16b compatible MFM representation
*/
.mfm {
display: inline-block;
}
/* The following are the legacy non-animated MFM */
._mfm_flip_[data-h][data-v] {
transform: scale(-1, -1);
}
._mfm_flip_[data-v] {
transform: scaleY(-1);
}
._mfm_flip_:not([data-v]) {
transform: scaleX(-1);
}
._mfm_x2_ {
font-size: 200%;
}
._mfm_x3_ {
font-size: 400%;
}
._mfm_x4_ {
font-size: 600%;
}
._mfm_x2_ {
.emoji {
height: 100px;
}
}
._mfm_x3_ {
.emoji {
height: 150px;
}
}
._mfm_x4_ {
.emoji {
height: 200px;
}
}
._mfm_blur_ {
filter: blur(6px);
transition: filter 0.3s;
}
._mfm_blur_:hover {
filter: blur(0);
}
._mfm_rotate_ {
transform: rotate(90deg);
transform-origin: center center;
}
/* The following are the legacy animated MFM */
/* .mfm-hover means that we should only play animation when hovering over the StatusContent
* So either StatusContent does not have this class,
* or it has the class and we are hovering over StatusContent
*/
&:not(.mfm-hover:not(:hover)) {
._mfm_tada_ {
font-size: 150%;
animation: mfm-tada 1s linear infinite both;
}
._mfm_jelly_ {
animation: mfm-rubberBand 1s linear infinite both;
}
._mfm_twitch_ {
animation: mfm-twitch 0.5s ease infinite;
}
._mfm_shake_ {
animation: mfm-shake 0.5s ease infinite;
}
._mfm_spin_ {
animation: mfm-spin 0.5s linear infinite;
}
._mfm_spin_[data-x] {
animation-name: mfm-spinX;
}
._mfm_spin_[data-y] {
animation-name: mfm-spinY;
}
._mfm_spin_[left] {
animation-direction: reverse;
}
._mfm_spin_[alternate] {
animation-direction: alternate;
}
._mfm_jump_ {
animation: mfm-jump 0.75s linear infinite;
}
._mfm_bounce_ {
animation: mfm-bounce 0.75s linear infinite;
transform-origin: center bottom;
}
._mfm_rainbow_ {
animation: mfm-rainbow 1s linear infinite;
}
}
}

View file

@ -14,7 +14,7 @@
:toggle-showing-tall="toggleShowingTall"
:toggle-expanding-subject="toggleExpandingSubject"
:toggle-showing-long-subject="toggleShowingLongSubject"
@parseReady="$emit('parseReady', $event)"
@parse-ready="$emit('parseReady', $event)"
>
<div v-if="status.poll && status.poll.options && !compact">
<Poll
@ -64,6 +64,7 @@
</template>
<script src="./status_content.js"></script>
<style lang="scss" src="./mfm.scss" />
<style lang="scss">
.StatusContent {
flex: 1;
@ -75,23 +76,6 @@
height: 50px;
}
}
&.mfm-hover:not(:hover) {
.mfm {
animation: none !important;
}
}
&.mfm-disabled {
span {
font-size: 100% !important;
}
.mfm {
animation: none !important;
}
.emoji {
height: 32px !important;
}
}
}
.quote-inline,

View file

@ -2,7 +2,7 @@
<Modal
v-if="modalActivated"
class="status-history-modal-view"
@backdropClicked="closeModal"
@backdrop-clicked="closeModal"
>
<div class="status-history-modal-panel panel">
<div class="panel-heading">
@ -17,7 +17,7 @@
v-for="status in history"
:key="status.id"
:statusoid="status"
:isPreview="true"
:is-preview="true"
class="conversation-status status-fadein panel-body"
/>
</div>

View file

@ -5,10 +5,10 @@
:bound-to="{ x: 'container' }"
@show="enter"
>
<template v-slot:trigger>
<template #trigger>
<slot />
</template>
<template v-slot:content>
<template #content>
<Status
v-if="status"
:is-preview="true"

View file

@ -7,7 +7,8 @@
>
<div
v-if="animated && imageTypeLabel"
class="image-type-label">
class="image-type-label"
>
{{ imageTypeLabel }}
</div>
<canvas

View file

@ -32,7 +32,7 @@
:dive="dive ? () => dive(status.id) : undefined"
@goto="setHighlight"
@toggleExpanded="toggleExpanded"
@toggle-expanded="toggleExpanded"
/>
<div
v-if="currentReplies.length && threadShowing"

View file

@ -28,4 +28,7 @@
}
}
}
.timeline {
min-height: 1em;
}
}

View file

@ -4,7 +4,7 @@
class="TimelineQuickSettings"
:bound-to="{ x: 'container' }"
>
<template v-slot:content>
<template #content>
<div class="dropdown-menu">
<div v-if="loggedIn">
<button
@ -80,7 +80,7 @@
</button>
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button class="button-unstyled">
<FAIcon icon="filter" />
</button>

View file

@ -9,12 +9,12 @@
@show="openMenu"
@close="() => isOpen = false"
>
<template v-slot:content>
<template #content>
<div class="timeline-menu-popover popover-default">
<TimelineMenuContent />
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button class="button-unstyled title timeline-menu-title">
<span class="timeline-title">{{ timelineName() }}</span>
<span>

View file

@ -62,7 +62,6 @@
:title="$t('nav.twkn_timeline_description')"
:aria-label="$t('nav.twkn_timeline_description')"
>{{ $t("nav.twkn") }}</span>
</router-link>
</li>
<li v-if="currentUser">

View file

@ -16,9 +16,9 @@
/>
</router-link>
<router-link
v-if="publicTimelineVisible"
:to="{ name: 'public-timeline' }"
class="nav-icon"
v-if="publicTimelineVisible"
>
<FAIcon
fixed-width
@ -40,9 +40,9 @@
/>
</router-link>
<router-link
v-if="federatedTimelineVisible"
:to="{ name: 'public-external-timeline' }"
class="nav-icon"
v-if="federatedTimelineVisible"
>
<FAIcon
fixed-width

View file

@ -66,7 +66,7 @@ export default {
return this.user.id !== this.$store.state.users.currentUser.id
},
subscribeUrl () {
// eslint-disable-next-line no-undef
const serverUrl = new URL(this.user.statusnet_profile_url)
return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`
},
@ -117,6 +117,11 @@ export default {
shouldConfirmMute () {
return this.mergedConfig.modalOnMute
},
compactUserInfo () {
return this.$store.getters.mergedConfig.compactUserInfo
&& (this.$store.state.interface.layoutType !== 'mobile')
&& this.switcher
},
...mapGetters(['mergedConfig'])
},
components: {

View file

@ -21,6 +21,13 @@
position: relative;
}
.user-buttons {
grid-area: edit;
display: flex;
padding: .5em 0 .5em 0;
justify-self: end;
}
.panel-body {
word-wrap: break-word;
border-bottom-right-radius: inherit;
@ -53,7 +60,6 @@
}
&-bio {
text-align: center;
display: block;
line-height: 1.3;
padding: 1em;
@ -100,15 +106,14 @@
padding: 0 26px;
.container {
min-width: 0;
padding: 16px 0 6px;
display: flex;
align-items: flex-start;
max-height: 56px;
> * {
min-width: 0;
}
display: grid;
grid-template-areas:
"pfp name edit"
"pfp summary summary"
"stats stats stats";
grid-template-columns: auto 1fr auto;
align-items: start;
.Avatar {
--_avatarShadowBox: var(--avatarShadow);
@ -123,6 +128,7 @@
}
&-avatar-link {
grid-area: pfp;
position: relative;
cursor: pointer;
@ -153,8 +159,8 @@
.external-link-button, .edit-profile-button {
cursor: pointer;
width: 2.5em;
text-align: center;
width: 2.3em;
text-align: right;
margin: -0.5em 0;
padding: 0.5em 0;
@ -165,12 +171,16 @@
}
.user-summary {
display: block;
grid-area: summary;
display: grid;
grid-template-areas:
"name name name name name"
"hand role lock avg _";
grid-template-columns:
auto auto auto auto 1fr;
justify-items: start;
margin-left: 0.6em;
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1 1 0;
// This is so that text doesn't get overlapped by avatar's shadow if it has
// big one
z-index: 1;
@ -178,55 +188,81 @@
--emoji-size: 1.7em;
.top-line,
.bottom-line {
display: flex;
}
}
.user-name {
text-overflow: ellipsis;
overflow: hidden;
flex: 1 1 auto;
margin-right: 1em;
font-size: 1.1em;
}
.bottom-line {
font-weight: light;
font-size: 1.1em;
align-items: baseline;
.lock-icon {
.user-locked {
margin-left: 0.5em;
grid-area: lock;
}
.user-screen-name {
min-width: 1px;
flex: 0 1 auto;
max-width: 100%;
text-overflow: ellipsis;
overflow: hidden;
color: $fallback--lightText;
color: var(--lightText, $fallback--lightText);
grid-area: hand;
}
.dailyAvg {
min-width: 1px;
flex: 0 0 auto;
margin-left: 1em;
font-size: 0.7em;
color: $fallback--text;
color: var(--text, $fallback--text);
grid-area: avg;
}
.user-roles {
display: flex;
grid-area: role;
.user-role {
flex: none;
color: $fallback--text;
color: var(--alertNeutralText, $fallback--text);
background-color: $fallback--fg;
background-color: var(--alertNeutral, $fallback--fg);
}
}
}
.user-counts {
grid-area: stats;
display: flex;
line-height:16px;
padding-top: 0.5em;
text-align: center;
justify-content: space-around;
color: $fallback--lightText;
color: var(--lightText, $fallback--lightText);
align-self: center;
.user-count {
padding: .5em 0 .5em 0;
margin: 0 .5em;
h5 {
font-size:1em;
font-weight: bolder;
margin: 0 0 0.25em;
}
a {
text-decoration: none;
}
}
}
.user-name {
text-align: start;
text-overflow: ellipsis;
overflow: hidden;
margin-left: 0.6em;
font-size: 1.1em;
grid-area: name;
align-self: center;
white-space: nowrap;
max-width: 100%;
z-index: 1; // so shadow from user avatar doesn't overlap it
}
.user-meta {
margin-bottom: .15em;
@ -290,34 +326,21 @@
margin: 0;
}
}
&.-compact {
.container {
grid-template-areas:
"pfp name stats edit"
"pfp summary stats edit";
grid-template-columns: auto auto 1fr auto;
}
.user-counts {
padding-top: 0;
justify-content: space-evenly;
}
}
}
.sidebar .edit-profile-button {
display: none;
}
.user-counts {
display: flex;
line-height:16px;
padding: .5em 1.5em 0em 1.5em;
text-align: center;
justify-content: space-between;
color: $fallback--lightText;
color: var(--lightText, $fallback--lightText);
flex-wrap: wrap;
}
.user-count {
flex: 1 0 auto;
padding: .5em 0 .5em 0;
margin: 0 .5em;
h5 {
font-size:1em;
font-weight: bolder;
margin: 0 0 0.25em;
}
a {
text-decoration: none;
}
}

View file

@ -9,7 +9,10 @@
class="background-image"
/>
<div class="panel-heading -flexible-height">
<div class="user-info">
<div
class="user-info"
:class="{ '-compact': this.compactUserInfo }"
>
<div class="container">
<a
v-if="allowZoomingAvatar"
@ -29,6 +32,7 @@
</a>
<router-link
v-else
class="user-info-avatar-link"
:to="userProfileLink(user)"
>
<UserAvatar
@ -36,14 +40,79 @@
:user="user"
/>
</router-link>
<div class="user-summary">
<div class="top-line">
<RichContent
:title="user.name"
class="user-name"
:html="user.name"
:emoji="user.emoji"
/>
<div class="user-summary">
<router-link
class="user-screen-name"
:title="user.screen_name_ui"
:to="userProfileLink(user)"
>
@{{ user.screen_name_ui }}
</router-link>
<span class="user-roles" v-if="!hideBio && (user.deactivated || !!visibleRole || user.bot)">
<span
v-if="user.deactivated"
class="alert user-role"
>
{{ $t('user_card.deactivated') }}
</span>
<span
v-if="!!visibleRole"
class="alert user-role"
>
{{ $t(`general.role.${visibleRole}`) }}
</span>
<span
v-if="user.bot"
class="alert user-role"
>
{{ $t('user_card.bot') }}
</span>
</span>
<span class="user-locked" v-if="user.locked">
<FAIcon
class="lock-icon"
icon="lock"
size="sm"
/>
</span>
<span
v-if="!mergedConfig.hideUserStats && !hideBio"
class="dailyAvg"
>{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>
</div>
<div
v-if="!mergedConfig.hideUserStats && switcher"
class="user-counts"
>
<div
class="user-count"
@click.prevent="setProfileView('statuses')"
>
<h5>{{ $t('user_card.statuses') }}</h5>
<span>{{ user.statuses_count }} <br></span>
</div>
<div
class="user-count"
@click.prevent="setProfileView('friends')"
>
<h5>{{ $t('user_card.followees') }}</h5>
<span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>
</div>
<div
class="user-count"
@click.prevent="setProfileView('followers')"
>
<h5>{{ $t('user_card.followers') }}</h5>
<span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>
</div>
</div>
<div class="user-buttons">
<button
v-if="!isOtherUser && user.is_local"
class="button-unstyled edit-profile-button"
@ -84,47 +153,6 @@
:relationship="relationship"
/>
</div>
<div class="bottom-line">
<router-link
class="user-screen-name"
:title="user.screen_name_ui"
:to="userProfileLink(user)"
>
@{{ user.screen_name_ui }}
</router-link>
<template v-if="!hideBio">
<span
v-if="user.deactivated"
class="alert user-role"
>
{{ $t('user_card.deactivated') }}
</span>
<span
v-if="!!visibleRole"
class="alert user-role"
>
{{ $t(`general.role.${visibleRole}`) }}
</span>
<span
v-if="user.bot"
class="alert user-role"
>
{{ $t('user_card.bot') }}
</span>
</template>
<span v-if="user.locked">
<FAIcon
class="lock-icon"
icon="lock"
size="sm"
/>
</span>
<span
v-if="!mergedConfig.hideUserStats && !hideBio"
class="dailyAvg"
>{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>
</div>
</div>
</div>
<div class="user-meta">
<div
@ -269,38 +297,13 @@
v-if="!hideBio"
class="panel-body"
>
<div
v-if="!mergedConfig.hideUserStats && switcher"
class="user-counts"
>
<div
class="user-count"
@click.prevent="setProfileView('statuses')"
>
<h5>{{ $t('user_card.statuses') }}</h5>
<span>{{ user.statuses_count }} <br></span>
</div>
<div
class="user-count"
@click.prevent="setProfileView('friends')"
>
<h5>{{ $t('user_card.followees') }}</h5>
<span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>
</div>
<div
class="user-count"
@click.prevent="setProfileView('followers')"
>
<h5>{{ $t('user_card.followers') }}</h5>
<span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>
</div>
</div>
<RichContent
v-if="!hideBio"
class="user-card-bio"
:html="user.description_html"
:emoji="user.emoji"
:handle-links="true"
:style='{"text-align": this.$store.getters.mergedConfig.centerAlignBio ? "center" : "start"}'
/>
</div>
<teleport to="#modal">

View file

@ -4,10 +4,10 @@
placement="top"
:offset="{ y: 5 }"
>
<template v-slot:trigger>
<template #trigger>
<slot />
</template>
<template v-slot:content>
<template #content>
<div class="user-list-popover">
<template v-if="users.length">
<div

View file

@ -121,8 +121,8 @@
</FriendList>
</div>
<div
key="tags"
v-if="isUs"
key="tags"
:label="$t('user_card.followed_tags')"
>
<FollowedTagList

View file

@ -1,7 +1,7 @@
<template>
<Modal
v-if="isOpen"
@backdropClicked="closeModal"
@backdrop-clicked="closeModal"
>
<div class="user-reporting-panel panel">
<div class="panel-heading">
@ -45,7 +45,7 @@
</div>
<div class="user-reporting-panel-right">
<List :items="statuses">
<template v-slot:item="{item}">
<template #item="{item}">
<div class="status-fadein user-reporting-panel-sitem">
<Status
:in-conversation="false"

View file

@ -84,6 +84,7 @@
"keep_open": "Mantindre el selector obert",
"load_all": "Carregant tots els {emojiAmount} emoji",
"load_all_hint": "Carregat el primer {saneAmount} emoji, carregar tots els emoji pot causar problemes de rendiment.",
"recent": "Recents",
"search_emoji": "Buscar un emoji",
"stickers": "Adhesius",
"unicode": "Emojis unicode"
@ -254,6 +255,10 @@
"hint": "Entra per a participar en la conversa",
"login": "Inicia sessió",
"logout": "Tanca la sessió",
"logout_confirm": "Segur que vols tancar la sessió?",
"logout_confirm_accept_button": "Surt",
"logout_confirm_cancel_button": "Canceŀla",
"logout_confirm_title": "Tanca la sessió",
"password": "Contrasenya",
"placeholder": "el meu nom d'usuari",
"recovery_code": "Codi de recuperació",
@ -266,6 +271,32 @@
"next": "Següent",
"previous": "Anterior"
},
"moderation": {
"moderation": "Moderació",
"reports": {
"add_note": "Afegeix una nota",
"close": "Tanca",
"delete_note": "Esborra la nota",
"delete_note_accept": "Sí, esborra-la",
"delete_note_cancel": "No, conserva-la",
"delete_note_confirm": "Segur que vols esborrar aquesta nota?",
"delete_note_title": "Cal confirmació",
"no_content": "Sense descripció",
"no_reports": "No hi ha informes per mostrar",
"note_placeholder": "Deixa una nota",
"notes": "{ count } nota | { count } notes",
"reopen": "Reobre",
"report": "Denuncia-ho",
"reports": "Denúncies",
"resolve": "Resol",
"show_closed": "Mostra les tancades",
"statuses": "{ count } post| { count } posts",
"tag_policy_notice": "Activa la restricció de publicacions segons la TagPolicy MRF",
"tags": "Estableix restriccions a les publicacions"
},
"statuses": "Publicacions",
"users": "Usuàries"
},
"nav": {
"about": "Quant a",
"administration": "Administració",
@ -282,6 +313,7 @@
"interactions": "Interaccions",
"lists": "Llistes",
"mentions": "Mencions",
"moderation": "Moderació",
"preferences": "Preferències",
"public_timeline_description": "Apunts públics des d'aquesta instància",
"public_tl": "Línia de temps Pública",
@ -375,9 +407,12 @@
"private": "Aquest apunt serà visible només per els teus seguidors",
"public": "Aquest apunt serà visible per a tothom",
"unlisted": "Aquest apunt no es veurà ni a la Línia de temps Pública ni a Tota la Xarxa Coneguda"
}
},
"toggle_content_warning": "Des/activa l'avís de contingut"
},
"registration": {
"awaiting_email_confirmation": "S'ha registrat el teu compte i s'ha enviat un correu a la teva adreça. Consulta el correu per completar el registre.",
"awaiting_email_confirmation_title": "Pendent de confirmar l'adreça de correu",
"bio": "Bio",
"bio_placeholder": "p.e.\nHola! Benvingut a la meva bio.\nM'encanta veure anime i jugar a jocs. Espero que podrem ser amics!",
"captcha": "CAPTCHA",
@ -391,6 +426,8 @@
"reason_placeholder": "Aquesta instància aprova els registres manualment.\nExplica a l'administració per què vols registrar-te.",
"register": "Registre",
"registration": "Registre",
"request_sent": "La teva soŀlicitud de registre s'ha enviat. Rebràs un correu quan sigui aprovada.",
"request_sent_title": "Soŀlicitud de registre",
"token": "Codi d'invitació",
"username_placeholder": "p. ex. akko",
"validations": {
@ -500,6 +537,8 @@
"enable_web_push_notifications": "Habilitar notificacions del navegador",
"enter_current_password_to_confirm": "Posa la teva contrasenya actual per a confirmar la teva identitat",
"expert_mode": "Mostra avançat",
"expire_posts_enabled": "Esborra les publicacions després d'un cert nombre de dies",
"expire_posts_input_placeholder": "Nombre de dies",
"export_theme": "Desa el tema",
"file_export_import": {
"backup_restore": "Còpia de seguretat de la configuració",
@ -641,6 +680,7 @@
"pad_emoji": "Acompanya els emojis amb espais al afegir-los des del selector",
"panelRadius": "Panells",
"pause_on_unfocused": "Pausa quan la pestanya perdi el focus",
"permit_followback_description": "Aprova automàticament les soŀlicituds de seguiment que vinguin d'usuàries que ja segueixes",
"play_videos_in_modal": "Reproduir vídeos en un marc emergent",
"post_look_feel": "Aspecte i Sensació dels apunts",
"post_status_content_type": "Tipus de contingut d'apunt predeterminat",
@ -709,6 +749,7 @@
"show_admin_badge": "Mostra l'insígnia \"Administrador\" en el meu perfil",
"show_moderator_badge": "Mostra l'insígnia \"Moderador\" en el meu perfil",
"show_nav_shortcuts": "Mostra els accessos directes addicionals en el panell superior",
"show_page_backgrounds": "Mostra fons de pantalla específics de pàgines, com en les pàgines de perfil d'usuari",
"show_panel_nav_shortcuts": "Mostra els accessos directes de navegació de la línia de temps en el panell superior",
"show_scrollbars": "Mostra les barres de desplaçament de la columna lateral",
"show_wider_shortcuts": "Mostra més separats els accessos directes del panell superior",
@ -884,8 +925,13 @@
"upload_a_photo": "Pujar una foto",
"useStreamingApi": "Rebre apunts i notificacions en temps real",
"useStreamingApiWarning": "És genial emprar-lo. Si es trenca, refresca, suposo?",
"use_blurhash": "Fes borroses les miniatures d'imatges NSFW",
"use_contain_fit": "No retallar els adjunts en miniatures",
"use_one_click_nsfw": "Obre els adjunts NSFW amb només un clic",
"user_accepts_direct_messages_from": "Accepta missatges directes de",
"user_accepts_direct_messages_from_everybody": "Qualsevol",
"user_accepts_direct_messages_from_nobody": "Ningú",
"user_accepts_direct_messages_from_people_i_follow": "Comptes que segueixo",
"user_mutes": "Usuaris",
"user_profile_default_tab": "Pestanya per defecte en el Perfil d'Usuari",
"user_profiles": "Perfils d'usuari",
@ -1008,6 +1054,7 @@
"collapse": "Replega",
"conversation": "Conversa",
"error": "Error carregant la línia de temps: {0}",
"follow_tag": "Segueix l'etiqueta",
"load_older": "Carrega apunts anteriors",
"no_more_statuses": "No hi ha més apunts",
"no_retweet_hint": "L'apunt és només per a seguidors o és \"directe\" i no es pot repetir o citar",
@ -1017,6 +1064,7 @@
"show_new": "Mostra els nous",
"socket_broke": "Connexió a temps real perduda: codi CloseEvent {0}",
"socket_reconnected": "Connexió a temps real establerta",
"unfollow_tag": "Deixa de seguir l'etiqueta",
"up_to_date": "Actualitzat"
},
"toast": {
@ -1081,6 +1129,7 @@
"block_confirm_title": "Bloqueja l'usuari",
"block_progress": "Bloquejant…",
"blocked": "Bloquejat!",
"blocks_you": "Et té bloquejadi!",
"bot": "Bot",
"deactivated": "Desactivat",
"deny": "Denega",
@ -1095,7 +1144,10 @@
"follow_cancel": "Cancel·la la sol·licitud",
"follow_progress": "Sol·licitant…",
"follow_sent": "Petició enviada!",
"follow_tag": "Segueix l'etiqueta",
"follow_unfollow": "Deixa de seguir",
"followed_tags": "Etiquetes que segueixes",
"followed_users": "Usuaris que segueixes",
"followees": "Seguint",
"followers": "Seguidors",
"following": "Seguint!",
@ -1120,12 +1172,14 @@
"mute_domain": "Bloqueja el domini",
"mute_progress": "Silenciant…",
"muted": "Silenciat",
"not_following_any_hashtags": "No estàs seguint cap etiqueta",
"note": "Nota privada",
"per_day": "per dia",
"remote_follow": "Seguiment remot",
"remove_follower": "Esborra seguidor",
"replies": "Amb respostes",
"report": "Informa",
"requested_by": "Et vol seguir",
"show_repeats": "Mostra les repeticions",
"statuses": "Apunts",
"subscribe": "Subscriu-te",
@ -1135,11 +1189,13 @@
"unfollow_confirm_accept_button": "Sí, deixa'l de seguir",
"unfollow_confirm_cancel_button": "No, no el deixis de seguir",
"unfollow_confirm_title": "Deixa de seguir l'usuari",
"unfollow_tag": "Deixa de seguir l'etiqueta",
"unmute": "Deixa de silenciar",
"unmute_progress": "Deixant de silenciar…",
"unsubscribe": "Anul·la la subscripció"
},
"user_profile": {
"field_validated": "Enllaç verificat",
"profile_does_not_exist": "Disculpes, aquest perfil no existeix.",
"profile_loading_error": "Disculpes, hi ha hagut un error carregant aquest perfil.",
"timeline_title": "Línia de temps del usuari"

View file

@ -482,6 +482,7 @@
"blocks_tab": "Blocks",
"bot": "Dies ist ein Bot Account",
"btnRadius": "Knöpfe",
"center_align_bio": "Zentrale Textausrichtung in der Bio",
"cBlue": "Blau (Antworten, folgt dir)",
"cGreen": "Grün (Retweet)",
"cOrange": "Orange (Favorisieren)",
@ -496,6 +497,7 @@
"checkboxRadius": "Auswahlfelder",
"collapse_subject": "Beiträge mit Inhaltswarnungen einklappen",
"columns": "Spalten",
"compact_user_info": "Kompakte Benutzerinfos wenn genug Platz",
"composing": "Verfassen",
"confirm_dialogs": "Bestätigung erforderlich für:",
"confirm_dialogs_approve_follow": "Annehmen einer Followanfrage",
@ -934,6 +936,7 @@
"title": "Version"
},
"virtual_scrolling": "Anzeige der Zeitleiste optimieren",
"widen_timeline": "Zeitleiste verbreitern, um horizontalen Platz zu füllen",
"word_filter": "Wortfilter",
"wordfilter": "Wortfilter"
},

View file

@ -18,7 +18,8 @@
"reason": "Λόγος",
"simple_policies": "Πολιτικές του instance"
}
}
},
"staff": "Προσωπικό"
},
"announcements": {
"all_day_prompt": "Αυτό είναι ένα ολοήμερο συμβάν",
@ -27,10 +28,14 @@
"delete_action": "Διαγραφή",
"edit_action": "Επεξεργασία",
"end_time_display": "Λήγει στις {time}",
"end_time_prompt": "Λήξη: ",
"inactive_message": "Αυτή η ανακοίνωση είναι ανενεργή",
"page_header": "Ανακοινώσεις",
"post_action": "Ανάρτηση",
"title": "Ανακοίνωση"
},
"chats": {
"delete_confirm": "Θέλετε σίγουρα να διαγράψετε αυτό το μήνυμα;",
"empty_message_error": "Δε μπορεί να σταλεί κενό μήνυμα",
"error_sending_message": "Κάτι πήγε λάθος κατά την αποστολή του μηνύματος.",
"message_user": "Στείλε μήνυμα στον/στην {nickname}",

View file

@ -488,6 +488,7 @@
"blocks_tab": "Blocks",
"bot": "This is a bot account",
"btnRadius": "Buttons",
"center_align_bio": "Center text in user bio",
"cBlue": "Blue (Reply, follow)",
"cGreen": "Green (Retweet)",
"cOrange": "Orange (Favorite)",
@ -502,6 +503,7 @@
"checkboxRadius": "Checkboxes",
"collapse_subject": "Collapse posts with content warnings",
"columns": "Columns",
"compact_user_info": "Compact user info when enough space",
"composing": "Composing",
"confirm_dialogs": "Require confirmation for:",
"confirm_dialogs_approve_follow": "Accepting a follow request",
@ -684,6 +686,7 @@
"play_videos_in_modal": "Play videos in a popup frame",
"post_look_feel": "Posts Look & Feel",
"post_status_content_type": "Default post content type",
"post_language": "Default post language",
"posts": "Posts",
"preload_images": "Preload images",
"presets": "Presets",
@ -947,6 +950,7 @@
},
"virtual_scrolling": "Optimize timeline rendering",
"use_blurhash": "Use blurhashes for NSFW thumbnails",
"widen_timeline": "Widen the Timeline to fill horizontal space",
"word_filter": "Word filter",
"wordfilter": "Wordfilter"
},

View file

@ -84,6 +84,7 @@
"keep_open": "Mantener el selector abierto",
"load_all": "Cargando todos los {emojiAmount} emoji",
"load_all_hint": "Cargado el primer emoji {saneAmount}, cargar todos los emoji puede causar problemas de rendimiento.",
"recent": "Recientemente usado",
"search_emoji": "Buscar un emoji",
"stickers": "Pegatinas",
"unicode": "Emojis unicode"
@ -302,7 +303,7 @@
"announcements": "Anuncios",
"back": "Volver",
"bookmarks": "Marcadores",
"bubble_timeline": "Linea temporal burbuja",
"bubble_timeline": "Línea temporal burbuja",
"bubble_timeline_description": "Publicaciones de instancias cercanas a la tuya, recomendadas por los/las administradores/as",
"chats": "Chats",
"dms": "Mensajes directos",
@ -915,13 +916,20 @@
"token": "Token",
"tooltipRadius": "Información/alertas",
"translation_language": "Idioma de traducción automática",
"tree_advanced": "Mostrar botones extras para abrir y cerrar la cadena de réplicas en los hilos",
"type_domains_to_mute": "Buscar dominios para silenciar",
"upload_a_photo": "Subir una foto",
"useStreamingApi": "Recibir publicaciones y notificaciones en tiempo real",
"useStreamingApiWarning": "(no recomendado, experimental, puede omitir publicaciones)",
"use_blurhash": "Usar miniaturas borrosas para las imágenes sensibles",
"use_contain_fit": "No recortar los adjuntos en miniaturas",
"use_one_click_nsfw": "Abrir los adjuntos NSFW con un solo click",
"user_accepts_direct_messages_from": "Aceptar mensajes directos de",
"user_accepts_direct_messages_from_everybody": "Todos",
"user_accepts_direct_messages_from_nobody": "Nadie",
"user_accepts_direct_messages_from_people_i_follow": "Personas que sigo",
"user_mutes": "Usuarios",
"user_profiles": "Perfiles de usuario",
"user_settings": "Ajustes del Usuario",
"valid_until": "Válido hasta",
"values": {
@ -934,26 +942,61 @@
"title": "Versión"
},
"virtual_scrolling": "Optimizar la representación de la linea temporal",
"word_filter": "Filtro de palabras"
"word_filter": "Filtro de palabras",
"wordfilter": "Filtro de palabras"
},
"settings_profile": {
"creating": "Creando un nuevo perfil de configuración \"{profile}\"...",
"synchronization_error": "No se pudo sincronizar la configuración: {err}",
"synchronized": "¡Ajustes sincronizados!",
"synchronizing": "Sincronizando los ajustes de perfil \"{profile}\"..."
},
"status": {
"ancestor_follow": "Vea {numReplies} respuesta en esta publicación | Ver otras {numReplies} respuestas en esta publicación",
"ancestor_follow_with_icon": "{icon} {text}",
"attachment_stop_flash": "Parar el reproductor Flash",
"bookmark": "Marcar",
"copy_link": "Copiar el enlace al estado",
"delete": "Eliminar publicación",
"delete_confirm": "¿Realmente quieres borrar la publicación?",
"collapse_attachments": "Minimizar adjuntos",
"copy_link": "Copiar el enlace al mensaje",
"delete": "Eliminar mensaje",
"delete_confirm": "¿Realmente quieres borrar el mensaje?",
"delete_confirm_accept_button": "Sí, elimínelo",
"delete_confirm_cancel_button": "No, mantenerlo",
"delete_confirm_title": "Confirmar la eliminación",
"edit": "Editar",
"edit_history": "Editar el historial",
"edit_history_modal_title": "Editado {historyCount} vez | Editado {historyCount} veces",
"edited_at": "Editado {time}",
"expand": "Expandir",
"external_source": "Fuente externa",
"favorites": "Favoritos",
"hide_attachment": "Ocultar adjuntos",
"hide_content": "Ocultar el contenido",
"hide_full_subject": "Ocultar el tema completo",
"hide_full_subject": "Ocultar la advertencia de contenido",
"many_attachments": "El mensaje tiene {number} adjunto | El mensaje tiene {number} adjuntos",
"mentions": "Menciones",
"move_down": "Desplazar adjunto a la derecha",
"move_up": "Desplazar adjunto a la izquierda",
"mute_conversation": "Silenciar la conversación",
"nsfw": "NSFW (No apropiado para el trabajo)",
"open_gallery": "Abrir la galería",
"override_translation_source_language": "Anular el idioma de origen",
"pin": "Fijar en tu perfil",
"pinned": "Fijado",
"plus_more": "+{number} más",
"redraft": "Eliminar y volver a redactar",
"redraft_confirm": "¿Realmente deseas eliminar y volver a redactar esta publicación? Las interacciones con la publicación original no se conservarán.",
"redraft_confirm_accept_button": "Sí, eliminar y volver a redactar",
"redraft_confirm_cancel_button": "No, conserva el original",
"redraft_confirm_title": "Confirmar eliminación y volver a redactar",
"remove_attachment": "Quitar archivo adjunto",
"repeat_confirm": "¿De verdad quieres repetir esta entrada?",
"repeat_confirm_accept_button": "Si, repítela",
"repeat_confirm_cancel_button": "No, no repitas",
"repeat_confirm_title": "Confirmar repetir",
"repeats": "Repetidos",
"replies_list": "Respuestas:",
"replies_list_with_others": "Ver {numReplies} respuesta | Ver {numReplies} respuestas más",
"reply_to": "Respondiendo a",
"show_content": "Mostrar el contenido",
"show_full_subject": "Mostrar el tema completo",

View file

@ -1,7 +1,7 @@
{
"about": {
"bubble_instances": "Instance Bubble Lokal",
"bubble_instances_description": "Instansi yang dipilih oleh admin untuk mewakili instance ini",
"bubble_instances_description": "Instansi yang dipilih oleh admin untuk mewakili daerah lokal instansi ini",
"mrf": {
"federation": "Federasi",
"keyword": {
@ -456,8 +456,10 @@
"settings": {
"accent": "Aksen",
"account_alias": "Akun alias",
"account_alias_table_head": "Alias",
"account_backup": "Pencadangan akun",
"account_backup_description": "Ini memungkinkan kamu untuk mengunduh arsip yang berisi informasi tentang akun dan postingan kamu, namun belum bisa diimpor ke akun Pleroma.",
"account_backup_table_head": "Cadangan",
"account_privacy": "Privasi",
"add_alias_error": "Gagal menambahkan alias: {error}",
"add_backup": "Buat cadangan baru",
@ -555,7 +557,8 @@
"follow_export_button": "Export yang kamu ikuti ke dalam file csv",
"follow_import": "Import pengikut",
"follow_import_error": "Terjadi kesalahan ketika mengimpor pengikut",
"follows_imported": "Pengguna yang diikuti telak diimpor! Proses mungkin membutuhkan beberapa saat.",
"follows_imported": "Daftar mengikuti telah diimpor! Proses mungkin membutuhkan beberapa saat.",
"foreground": "Latar depan",
"fun": "Seru",
"general": "Umum",
"greentext": "Panah meme",
@ -563,17 +566,30 @@
"hide_attachments_in_convo": "Sembunyikan lampiran pada percakapan",
"hide_attachments_in_tl": "Sembunyikan lampiran di linimasa",
"hide_bot_indication": "Sembunyikan tanda bot pada postingan",
"hide_favorites_description": "Jangan tunjukkan daftar kesukaan saya (orang masih mendapatkan notifikasi)",
"hide_filtered_statuses": "Sembunyikan semua postingan yang tersaring",
"hide_followers_count_description": "Jangan tampilkan jumlah pengikut",
"hide_followers_description": "Jangan tampilkan siapa yang mengikutiku",
"hide_follows_count_description": "Jangan tampilkan jumlah mengikuti",
"hide_follows_description": "Jangan tampilkan siapa yang aku ikuti",
"hide_isp": "Sembunyikan panel spesifik instansi",
"hide_list_aliases_error_action": "Tutup",
"hide_media_previews": "Sembunyikan pratinjau media",
"hide_muted_posts": "Sembunyikan postingan-postingan dari pengguna yang dibisukan",
"hide_muted_threads": "Sembunyikan thread yang dibisukan",
"hide_post_stats": "Sembunyikan statistik postingan (seperti jumlah favorit)",
"hide_shoutbox": "Sembunyikan kotak suara instansi",
"hide_site_favicon": "Sembunyikan favicon instansi di panel atas",
"hide_site_name": "Sembunyikan nama instansi di panel atas",
"hide_threads_with_blocked_users": "Sembunyikan thread yang menyebut orang yang diblok",
"hide_user_stats": "Sembunyikan statistik pengguna (seperti jumlah pengikut)",
"hide_wallpaper": "Sembunyikan latar belakang instansi",
"hide_wordfiltered_statuses": "Sembunyikan post yang disaring dengan kata",
"import_blocks_from_a_csv_file": "Impor blokiran dari berkas csv",
"import_followers_from_a_csv_file": "Impor daftar mengikuti dari berkas csv",
"import_mutes_from_a_csv_file": "Impor daftar pembisuan dari berkas csv",
"import_theme": "Muat preset",
"inputRadius": "Bidang masukan",
"instance_default": "(bawaan: {value})",
"instance_default_simple": "(bawaan)",
"interface": "Antarmuka",
@ -581,16 +597,23 @@
"invalid_theme_imported": "Berkas yang dipilih bukan sebuah tema yang didukung Pleroma. Tidak ada perubahan yang dibuat pada tema kamu.",
"limited_availability": "Tidak tersedia di browser kamu",
"links": "Tautan",
"list_aliases_error": "Gagal mengambil alias: {error}",
"list_backups_error": "Gagal mengambil daftar cadangan: {error}",
"lock_account_description": "Batasi akunmu kepada pengikut yang sudah disetujui saja",
"loop_video": "Ulang-ulang video",
"loop_video_silent_only": "Ulang-ulang video tanpa suara (seperti \"gif\" Mastodon)",
"mascot": "Maskot Mastodon FE",
"max_depth_in_thread": "Tingat thread maksimum yang ditampilkan oleh bawaan",
"max_thumbnails": "Jumlah thumbnail maksimum per postingan (kosong = tidak terbatas)",
"mention_link_bolden_you": "Sorot sebutan kamu apabila kamu disebut",
"mention_link_display": "Tampilkan tautan sebutan",
"mention_link_display_full": "selalu sebagai nama lengkap (cth. {'@'}foo{'@'}example.org)",
"mention_link_display_full_for_remote": "sebagai nama lengkap hanya untuk pengguna di instansi lain (cth. {'@'}foo{'@'}example.org)",
"mention_link_display_short": "selalu sebagai nama pendek (cth. {'@'}foo)",
"mention_link_fade_domain": "Pudarkan domain (contoh: {'@'}example.org di {'@'}foo{'@'}example.org)",
"mention_link_show_avatar": "Tampilkan avatar pengguna di samping tautan",
"mention_link_show_tooltip": "Tunjukkan nama penuh pengguna sebagai tooltip untuk pengguna jauh",
"mention_links": "Tautan sebutan",
"mfa": {
"authentication_methods": "Metode otentikasi",
"confirm_and_enable": "Konfirmasi & aktifkan OTP",
@ -599,6 +622,8 @@
"recovery_codes": "Kode pemulihan.",
"recovery_codes_warning": "Tulis kodenya atau simpan mereka di tempat yang aman - jika tidak kamu tidak akan melihat mereka lagi. Jika kamu tidak dapat mengakses aplikasi 2FA kamu dan kode pemulihanmu hilang, kamu tidak akan bisa mengakses akun kamu.",
"scan": {
"desc": "Menggunakan aplikasi dua-faktor kamu, pindai kode QR ini atau masukkan kunci teks:",
"secret_code": "Kunci",
"title": "Pindai"
},
"setup_otp": "Siapkan OTP",
@ -606,10 +631,19 @@
"verify": {
"desc": "Untuk mengaktifkan otentikasi dua-faktor, masukkan kode dari aplikasi dua-faktor kamu:"
},
"wait_pre_setup_otp": "Pengaturan awal OTP",
"waiting_a_recovery_codes": "Menerima kode cadangan…",
"warning_of_generate_new_codes": "Ketika kamu menghasilkan kode pemulihan baru, kode lama kamu berhenti bekerja."
},
"minimal_scopes_mode": "Minimalkan pilihan seleksi lingkup posting",
"more_settings": "Lebih banyak pengaturan",
"move_account": "Pindahkan akun",
"move_account_error": "Gagal memindahkan akun: {error}",
"move_account_notes": "Jika kamu ingin memindahkan akun ini ke tempat lain, kamu harus pergi ke akun tujuan kamu dan menambahkan alias yang mengarah ke sini.",
"move_account_target": "Akun tujuan (contoh {example})",
"moved_account": "Akun telah dipindahkan.",
"mute_bot_posts": "Bisukan posting dari bot",
"mute_export": "Expor pembisuan",
"mutes_and_blocks": "Bisuan dan Blokiran",
"name": "Nama",
"name_bio": "Nama & bio",
@ -699,7 +733,7 @@
"fine_print": "Baca {0} kami untuk belajar sesuatu yang tak ada gunanya!",
"header": "Pratinjau",
"header_faint": "Ini baik-baik saja",
"input": "Baru saja mendarat di L.A.",
"input": "Baru saja mendarat di Luna Nova Academy",
"link": "sebuah tautan yang kecil nan bagus"
},
"shadows": {
@ -720,15 +754,15 @@
"use_source": "Versi baru"
}
},
"subject_line_behavior": "Salin subyek ketika membalas",
"subject_line_email": "Seperti surel: \"re: subyek\"",
"subject_line_behavior": "Salin peringatan isi ketika membalas",
"subject_line_email": "Seperti surel: \"re: peringatan\"",
"subject_line_mastodon": "Seperti mastodon: salin saja",
"subject_line_noop": "Jangan salin",
"text": "Teks",
"theme": "Tema",
"token": "Token",
"upload_a_photo": "Unggah foto",
"useStreamingApiWarning": "(Tidak disarankan, eksperimental, diketahui dapat melewati postingan-postingan)",
"useStreamingApiWarning": "Ini bagus, gunakan. Kalau tidak jalan, mungkin segarkan halaman?",
"use_one_click_nsfw": "Buka lampiran NSFW hanya dengan satu klik",
"user_settings": "Pengaturan Pengguna",
"valid_until": "Valid hingga",
@ -744,7 +778,7 @@
"word_filter": "Penyaring kata"
},
"status": {
"delete": "Hapus status",
"delete": "Hapus post",
"delete_confirm": "Apakah kamu benar-benar ingin menghapus postingan ini?",
"favorites": "Favorit",
"hide_content": "",
@ -757,7 +791,7 @@
"reply_to": "Balas ke",
"show_content": "",
"status_deleted": "Postingan ini telah dihapus",
"status_unavailable": "Status tidak tersedia",
"status_unavailable": "Post tidak tersedia",
"thread_muted_and_words": ", memiliki kata:",
"unmute_conversation": "Berhenti membisikan percakapan",
"unpin": "Berhenti menyematkan dari profil"
@ -787,9 +821,9 @@
"timeline": {
"conversation": "Percakapan",
"error": "Terjadi kesalahan memuat linimasa: {0}",
"no_more_statuses": "Tidak ada status lagi",
"no_more_statuses": "Tidak ada post lagi",
"no_retweet_hint": "Postingan ditandai sebagai hanya-pengikut atau langsung dan tidak dapat diulang atau dikutip",
"no_statuses": "Tidak ada status",
"no_statuses": "Tidak ada post",
"reload": "Muat ulang",
"repeated": "diulangi"
},
@ -853,7 +887,7 @@
"per_day": "per hari",
"report": "Laporkan",
"show_repeats": "Tampilkan ulangan",
"statuses": "Status",
"statuses": "Postingan",
"unblock": "Berhenti memblokir",
"unmute": "Berhenti membisukan"
},

View file

@ -1,5 +1,7 @@
{
"about": {
"bubble_instances": "Istanze della Bolla Locale",
"bubble_instances_description": "Istanze selezionate dagli amministratori per rappresentare l'area d'interesse dell'istanza",
"mrf": {
"federation": "Federazione",
"keyword": {
@ -16,12 +18,15 @@
"accept_desc": "Questa stanza accetta messaggi solo dalle seguenti altre:",
"ftl_removal": "Rimozione dalla sequenza federale",
"ftl_removal_desc": "Questa stanza rimuove le seguenti dalla sequenza federale:",
"instance": "Istanza",
"media_nsfw": "Allegati oscurati d'ufficio",
"media_nsfw_desc": "Questa stanza oscura gli allegati dei messaggi provenienti da queste stanze:",
"media_removal": "Rimozione multimedia",
"media_removal_desc": "Questa istanza rimuove gli allegati dalle seguenti stanze:",
"not_applicable": "N/D",
"quarantine": "Quarantena",
"quarantine_desc": "Questa stanza inoltrerà solo messaggi pubblici alle seguenti:",
"quarantine_desc": "Questa istanza non invierà post alle seguenti istanze:",
"reason": "Motivazione",
"reject": "Rifiuta",
"reject_desc": "Questa stanza rifiuterà i messaggi provenienti dalle seguenti:",
"simple_policies": "Regole specifiche alla stanza"
@ -29,6 +34,27 @@
},
"staff": "Responsabili"
},
"announcements": {
"all_day_prompt": "Evento lungo tutto il giorno",
"cancel_edit_action": "Annulla",
"close_error": "Chiudi",
"delete_action": "Elimina",
"edit_action": "Modifica",
"end_time_display": "Finisce alle {time}",
"end_time_prompt": "Ora di fine: ",
"inactive_message": "Questo annuncio è inattivo",
"mark_as_read_action": "Segna come già letto",
"page_header": "Annunci",
"post_action": "Post",
"post_error": "Errore: {error}",
"post_form_header": "Posta annuncio",
"post_placeholder": "Contenuto dell'annuncio",
"published_time_display": "Pubblicato alle {time}",
"start_time_display": "Inizia alle {time}",
"start_time_prompt": "Ora di inizio: ",
"submit_edit_action": "Invia",
"title": "Annuncio"
},
"chats": {
"chats": "Conversazioni",
"delete": "Elimina",
@ -58,6 +84,7 @@
"keep_open": "Tieni aperto il menù",
"load_all": "Carico tutti i {emojiAmount} emoji",
"load_all_hint": "Primi {saneAmount} emoji caricati, caricarli tutti potrebbe causare rallentamenti.",
"recent": "Usato di recente",
"search_emoji": "Cerca un emoji",
"stickers": "Adesivi",
"unicode": "Emoji Unicode"
@ -109,6 +136,13 @@
"admin": "Amministratore",
"moderator": "Moderatore"
},
"scope_in_timeline": {
"direct": "Diretto",
"local": "Locale - Solo la tua istanza può vedere questo post",
"private": "Solo per i seguaci",
"public": "Pubblico",
"unlisted": "Non elencato"
},
"show_less": "Ripiega",
"show_more": "Mostra tutto",
"submit": "Invia",
@ -131,6 +165,84 @@
"load_older": "Carica interazioni precedenti",
"moves": "Utenti migrati"
},
"languages": {
"ar": "Arabo",
"az": "Azero",
"bg": "Bulgaro",
"cs": "Ceco",
"da": "Danese",
"de": "Tedesco",
"el": "Greco",
"en": "Inglese",
"eo": "Esperanto",
"es": "Spagnolo",
"fa": "Persiano",
"fi": "Finlandese",
"fr": "Francese",
"ga": "Irlandese",
"he": "Ebreo",
"hi": "Hindi",
"hu": "Ungherese",
"id": "Indonesiano",
"it": "Italiano",
"ja": "Giapponese",
"ko": "Coreano",
"lt": "Lituano",
"lv": "Lettone",
"nl": "Olandese",
"pl": "Polacco",
"pt": "Portoghese",
"ru": "Russo",
"sk": "Slovacco",
"sv": "Svedese",
"tr": "Turco",
"translated_from": {
"ar": "Tradotto dall' @:languages.ar",
"az": "Tradotto dall' @:languages.az",
"bg": "Tradotto dal @:languages.bg",
"cs": "Tradotto dal @:languages.cs",
"da": "Tradotto dal @:languages.da",
"de": "Tradotto dal @:languages.de",
"el": "Tradotto dal @:languages.el",
"en": "Tradotto dall' @:languages.en",
"eo": "Tradotto dal @:languages.eo",
"es": "Tradotto dallo @:languages.es",
"fa": "Tradotto dal @:languages.fa",
"fi": "Tradotto dal @:languages.fi",
"fr": "Tradotto dal @:languages.fr",
"ga": "Tradotto dal @:languages.ga",
"he": "Tradotto dal @:languages.he",
"hi": "Tradotto dal @:languages.hi",
"hu": "Tradotto dal @:languages.hu",
"id": "Tradotto dal @:languages.id",
"it": "Tradotto dall' @:languages.it",
"ja": "Tradotto dal @:languages.ja",
"ko": "Tradotto dal @:languages.ko",
"lt": "Tradotto dal @:languages.lt",
"lv": "Tradotto dal @:languages.lv",
"nl": "Tradotto dall' @:languages.nl",
"pl": "Tradotto dal @:languages.pl",
"pt": "Tradotto dal @:languages.pt",
"ru": "Tradotto dal @:languages.ru",
"sk": "Tradotto dal @:languages.sk",
"sv": "Tradotto dal @:languages.sv",
"tr": "Tradotto dal @:languages.tr",
"uk": "Tradotto dal @:languages.uk",
"zh": "Tradotto dal @:languages.zh"
},
"uk": "Ucraino",
"zh": "Cinese"
},
"lists": {
"create": "Crea",
"delete": "Elimina lista",
"following_only": "Limita a chi segui",
"lists": "Liste",
"new": "Nuova Lista",
"save": "Salva cambiamenti",
"search": "Cerca utenti",
"title": "Titolo della lista"
},
"login": {
"authentication_code": "Codice di autenticazione",
"description": "Accedi con OAuth",
@ -143,6 +255,10 @@
"hint": "Accedi per conversare",
"login": "Accedi",
"logout": "Disconnettiti",
"logout_confirm": "Sicuro di disconnetterti?",
"logout_confirm_accept_button": "Disconnetti",
"logout_confirm_cancel_button": "Annulla",
"logout_confirm_title": "Disconnetti",
"password": "Password",
"placeholder": "es. Lupo Lucio",
"recovery_code": "Codice di recupero",
@ -150,31 +266,67 @@
"username": "Nome utente"
},
"media_modal": {
"counter": "{current} / {total}",
"hide": "Chiudi visualizzatore multimediale",
"next": "Prossimo",
"previous": "Precedente"
},
"moderation": {
"moderation": "Moderazione",
"reports": {
"add_note": "Aggiungi nota",
"close": "Chiudi",
"delete_note": "Elimina",
"delete_note_accept": "Si, eliminalo",
"delete_note_cancel": "No, lascialo stare",
"delete_note_confirm": "Sei sicurə di voler eliminare questa nota?",
"delete_note_title": "Conferma eliminazione",
"no_content": "Nessuna descrizione",
"no_reports": "Nessun report da mostrare",
"note_placeholder": "Lascia una nota",
"notes": "{ count } nota | { count } note",
"reopen": "Riapri",
"report": "Riporta su",
"reports": "Rapporti",
"resolve": "Risolvi",
"show_closed": "Mostra chiusi",
"statuses": "{ count } post| { count } post",
"tag_policy_notice": "Abilita il TagPolicy MRF per poter impostare restrizioni sui post",
"tags": "Imposta restrizioni sui post"
},
"statuses": "Post",
"users": "Utenti"
},
"nav": {
"about": "Informazioni",
"administration": "Amministrazione",
"announcements": "Annunci",
"back": "Indietro",
"bookmarks": "Segnalibri",
"bubble_timeline": "Timeline della Bolla Locale",
"bubble_timeline_description": "Post da istanze vicine alla tua e raccomandate dagli amministratori",
"chats": "Conversazioni",
"dms": "Messaggi privati",
"friend_requests": "Vogliono seguirti",
"home_timeline": "Sequenza personale",
"home_timeline_description": "Post dalle persone che segui",
"interactions": "Interazioni",
"lists": "Liste",
"mentions": "Menzioni",
"moderation": "Moderazione",
"preferences": "Preferenze",
"public_timeline_description": "Post pubblici da questa istanza",
"public_tl": "Sequenza pubblica",
"search": "Ricerca",
"timeline": "Sequenza personale",
"timelines": "Sequenze",
"twkn": "Sequenza federale",
"twkn_timeline_description": "Post da tutta la rete",
"user_search": "Ricerca utenti",
"who_to_follow": "Chi seguire"
},
"notifications": {
"broken_favorite": "Stato sconosciuto, lo sto cercando…",
"broken_favorite": "Post sconosciuto, lo sto cercando…",
"error": "Errore nel caricare le notifiche: {0}",
"favorited_you": "ha gradito",
"follow_request": "vuole seguirti",
@ -183,9 +335,10 @@
"migrated_to": "è migrato verso",
"no_more_notifications": "Fine delle notifiche",
"notifications": "Notifiche",
"poll_ended": "sondaggio terminato",
"reacted_with": "ha reagito con {0}",
"read": "Letto!",
"repeated_you": "ha condiviso il tuo messaggio"
"repeated_you": "ha condiviso il tuo post"
},
"password_reset": {
"check_email": "Controlla la tua posta elettronica.",
@ -223,15 +376,20 @@
"text/bbcode": "BBCode",
"text/html": "HTML",
"text/markdown": "Markdown",
"text/plain": "Testo normale"
"text/plain": "Testo normale",
"text/x.misskeymarkdown": "MFM"
},
"content_warning": "Oggetto (facoltativo)",
"content_warning": "Contenuto Sensibile (facoltativo)",
"default": "Sono appena atterrato a Città Laggiù.",
"direct_warning_to_all": "Questo messaggio sarà visibile a tutti i menzionati.",
"direct_warning_to_first_only": "Questo messaggio sarà visibile solo agli utenti menzionati in testa.",
"edit_remote_warning": "Le modifiche fatte al messaggio potrebbero non essere visibili su alcune istanze!",
"edit_status": "Modifica Stato",
"edit_unsupported_warning": "Sondaggi e menzioni non verranno cambiati in fase di modifica.",
"empty_status_error": "Aggiungi del testo o degli allegati",
"media_description": "Descrizione allegati",
"media_description_error": "Allegati non caricati, riprova",
"media_not_sensitive_warning": "C'è un Contenuto Sensibile, ma gli allegati non sono contrassegnati come sensibili!",
"new_status": "Nuovo messaggio",
"post": "Pubblica",
"posting": "Sto pubblicando",
@ -239,21 +397,26 @@
"preview_empty": "Vuoto",
"scope": {
"direct": "Diretto - Visibile solo agli utenti menzionati",
"local": "Locale - non federare questo messaggio",
"private": "Solo per seguaci - Visibile solo dai tuoi seguaci",
"public": "Pubblico - Visibile sulla sequenza pubblica",
"unlisted": "Nascosto - Non visibile sulla sequenza pubblica"
},
"scope_notice": {
"local": "Questo messaggio non sarà visibile sulle altre istanze",
"private": "Questo messaggio sarà visibile solo ai tuoi seguaci",
"public": "Questo messaggio sarà visibile a tutti",
"unlisted": "Questo messaggio non sarà visibile sulla sequenza locale né su quella pubblica"
}
},
"registration": {
"awaiting_email_confirmation": "Il tuo account è stato registrato e un'email è stata inviata al tuo indirizzo. Controllala per completare la registrazione.",
"awaiting_email_confirmation_title": "Attendo la conferma dell'email",
"bio": "Introduzione",
"bio_placeholder": "es.\nCiao, sono Lupo Lucio.\nSono un lupo fantastico che vive nel Fantabosco. Forse mi hai visto alla Melevisione.",
"captcha": "CAPTCHA",
"email": "Email",
"email_language": "In quale lingua vuoi ricevere email dal server?",
"fullname": "Nome visualizzato",
"fullname_placeholder": "es. Lupo Lucio",
"new_captcha": "Clicca il captcha per averne uno nuovo",
@ -262,6 +425,8 @@
"reason_placeholder": "L'amministratore esamina ciascuna richiesta.\nFornisci il motivo della tua iscrizione.",
"register": "Registrati",
"registration": "Registrazione",
"request_sent": "La richiesta di registrazione è stata inoltrata ad un amministratore. Riceverai un'email non appena il tuo account verrà approvato.",
"request_sent_title": "Richiesta di registrazione inviata",
"token": "Codice d'invito",
"username_placeholder": "es. mister_wolf",
"validations": {
@ -290,6 +455,17 @@
},
"settings": {
"accent": "Accento",
"account_alias": "Alias dell'account",
"account_alias_table_head": "Alias",
"account_backup": "Backup dell'account",
"account_backup_description": "Puoi scaricare un archivio con le tue informazioni ed i tuoi messaggi, ma non possono essere importati in un account Akkoma.",
"account_backup_table_head": "Backup",
"account_privacy": "Privacy",
"add_alias_error": "Errore durante l'aggiunta dell'alias: {error}",
"add_backup": "Crea un nuovo backup",
"add_backup_error": "Errore durante l'aggiunta di un nuovo backup: {error}",
"added_alias": "Alias aggiunto.",
"added_backup": "Nuovo backup aggiunto.",
"allow_following_move": "Consenti l'iscrizione automatica ai profili traslocati",
"always_show_post_button": "Non nascondere il pulsante di composizione",
"app_name": "Nome applicazione",
@ -301,6 +477,7 @@
"avatarRadius": "Icone utente",
"avatar_size_instruction": "La taglia minima per l'icona personale è 150x150 pixel.",
"background": "Sfondo",
"backup_not_ready": "Questo backup non è ancora pronto.",
"bio": "Introduzione",
"block_export": "Esporta blocchi",
"block_export_button": "Esporta i tuoi blocchi in un file CSV",
@ -322,10 +499,17 @@
"changed_password": "Password cambiata correttamente!",
"chatMessageRadius": "Messaggi istantanei",
"checkboxRadius": "Caselle di selezione",
"collapse_subject": "Ripiega messaggi con oggetto",
"collapse_subject": "Ripiega messaggi con Contenuto Sensibile",
"columns": "Colonne",
"composing": "Composizione",
"confirm_new_password": "Conferma la nuova password",
"conversation_display": "Stile di visualizzazione delle conversazioni",
"conversation_display_linear": "Stile lineare",
"conversation_display_tree": "Stile ad albero",
"conversation_other_replies_button": "Mostra il bottone \"altre risposte\"",
"conversation_other_replies_button_below": "Sotto i post",
"current_avatar": "La tua icona attuale",
"current_mascot": "La tua mascotte attuale",
"current_password": "La tua password attuale",
"data_import_export_tab": "Importa o esporta dati",
"default_vis": "Visibilità predefinita dei messaggi",
@ -333,11 +517,15 @@
"delete_account_description": "Elimina definitivamente i tuoi dati e disattiva il tuo profilo.",
"delete_account_error": "C'è stato un problema durante l'eliminazione del tuo profilo. Se il problema persiste contatta l'amministratore della tua stanza.",
"delete_account_instructions": "Digita la tua password nel campo sottostante per eliminare il tuo profilo.",
"disable_sticky_headers": "Non fissare i titoli delle colonne in cima allo schermo",
"discoverable": "Permetti la scoperta di questo profilo a servizi di ricerca ed altro",
"domain_mutes": "Domini",
"download_backup": "Scarica",
"email_language": "Lingua delle email ricevute dal server",
"emoji_reactions_on_timeline": "Mostra reazioni nelle sequenze",
"enable_web_push_notifications": "Abilita notifiche web push",
"enter_current_password_to_confirm": "Inserisci la tua password per identificarti",
"expert_mode": "Mostra avanzate",
"export_theme": "Salva impostazioni",
"file_export_import": {
"backup_restore": "Archiviazione impostazioni",
@ -365,18 +553,23 @@
"hide_all_muted_posts": "Nascondi messaggi silenziati",
"hide_attachments_in_convo": "Nascondi gli allegati presenti nelle conversazioni",
"hide_attachments_in_tl": "Nascondi gli allegati presenti nelle sequenze",
"hide_bot_indication": "Nascondi indicatore bot nei post",
"hide_favorites_description": "Non mostrare la lista dei miei preferiti (gli utenti verranno comunque notificati)",
"hide_filtered_statuses": "Nascondi messaggi filtrati",
"hide_followers_count_description": "Non mostrare quanti seguaci ho",
"hide_followers_description": "Non mostrare i miei seguaci",
"hide_follows_count_description": "Non mostrare quanti utenti seguo",
"hide_follows_description": "Non mostrare chi seguo",
"hide_isp": "Nascondi pannello della stanza",
"hide_list_aliases_error_action": "Chiudi",
"hide_media_previews": "Nascondi anteprime",
"hide_muted_posts": "Nascondi messaggi degli utenti silenziati",
"hide_muted_threads": "Nascondi conversazioni silenziate",
"hide_post_stats": "Nascondi statistiche dei messaggi (es. il numero di preferenze)",
"hide_shoutbox": "Nascondi muro dei graffiti",
"hide_user_stats": "Nascondi statistiche dell'utente (es. il numero di seguaci)",
"hide_wallpaper": "Nascondi sfondo della stanza",
"hide_wordfiltered_statuses": "Nascondi post filtrati per parola",
"import_blocks_from_a_csv_file": "Importa blocchi da un file CSV",
"import_followers_from_a_csv_file": "Importa una lista di chi segui da un file CSV",
"import_mutes_from_a_csv_file": "Importa silenziati da un file CSV",
@ -389,10 +582,14 @@
"invalid_theme_imported": "Il file selezionato non è un tema supportato da Pleroma. Il tuo tema non è stato modificato.",
"limited_availability": "Non disponibile nel tuo browser",
"links": "Collegamenti",
"list_aliases_error": "Errore nel recupero degli alias: {error}",
"list_backups_error": "Errore nel recupero della lista dei backup: {error}",
"lock_account_description": "Vaglia manualmente i nuovi seguaci",
"loop_video": "Riproduci video in ciclo continuo",
"loop_video_silent_only": "Riproduci solo video muti in ciclo continuo (es. le \"gif\" di Mastodon)",
"mascot": "Mascotte di MastodonFE",
"max_thumbnails": "Numero massimo di anteprime per messaggio",
"mention_links": "Collegamenti delle menzioni",
"mfa": {
"authentication_methods": "Metodi di accesso",
"confirm_and_enable": "Conferma ed abilita OTP",
@ -416,6 +613,12 @@
},
"minimal_scopes_mode": "Riduci opzioni di visibilità",
"more_settings": "Altre impostazioni",
"move_account": "Sposta account",
"move_account_error": "Errore nello spostamento dell'account: {error}",
"move_account_notes": "Se vuoi spostare questo account da qualche altra parte, devi andare all'account di destinazione e aggiungere un alias che punta qui.",
"move_account_target": "Account di destinazione (es. {example})",
"moved_account": "Account spostato.",
"mute_bot_posts": "Silenzia post dei bot",
"mute_export": "Esporta silenziati",
"mute_export_button": "Esporta i silenziati in un file CSV",
"mute_import": "Carica silenziati",
@ -425,6 +628,7 @@
"mutes_tab": "Silenziati",
"name": "Nome",
"name_bio": "Nome ed introduzione",
"new_alias_target": "Aggiungi nuovo alias (es. {example})",
"new_email": "Nuova email",
"new_password": "Nuova password",
"no_blocks": "Nessun utente bloccato",
@ -442,6 +646,7 @@
"notification_visibility_likes": "Preferiti",
"notification_visibility_mentions": "Menzioni",
"notification_visibility_moves": "Migrazioni utenti",
"notification_visibility_polls": "Termine dei poll in cui hai votato",
"notification_visibility_repeats": "Condivisioni",
"notifications": "Notifiche",
"nsfw_clickthrough": "Fai click per visualizzare gli allegati offuscati",
@ -450,7 +655,9 @@
"panelRadius": "Pannelli",
"pause_on_unfocused": "Interrompi l'aggiornamento continuo mentre la scheda è in secondo piano",
"play_videos_in_modal": "Riproduci video in un riquadro a sbalzo",
"post_look_feel": "Aspetto dei post",
"post_status_content_type": "Tipo di contenuto dei messaggi",
"posts": "Post",
"preload_images": "Precarica immagini",
"presets": "Valori predefiniti",
"profile_background": "Sfondo del tuo profilo",
@ -464,6 +671,8 @@
"profile_tab": "Profilo",
"radii_help": "Imposta il raggio degli angoli (in pixel)",
"refresh_token": "Aggiorna token",
"remove_alias": "Rimuovi questo alias",
"remove_backup": "Elimina",
"replies_in_timeline": "Risposte nelle sequenze",
"reply_visibility_all": "Mostra tutte le risposte",
"reply_visibility_following": "Mostra solo le risposte rivolte a me o agli utenti che seguo",
@ -488,12 +697,15 @@
"security_tab": "Sicurezza",
"sensitive_by_default": "Tutti i miei messaggi sono scabrosi",
"set_new_avatar": "Scegli una nuova icona",
"set_new_mascot": "Imposta nuova mascotte",
"set_new_profile_background": "Scegli un nuovo sfondo",
"set_new_profile_banner": "Scegli un nuovo gonfalone",
"setting_changed": "Valore personalizzato",
"setting_server_side": "Questa impostazione è legata al tuo profilo e ha effetto su tutte le sessioni e tutti i client",
"settings": "Impostazioni",
"show_admin_badge": "Mostra l'insegna di amministratore sul mio profilo",
"show_moderator_badge": "Mostra l'insegna di moderatore sul mio profilo",
"show_scrollbars": "Mostra le barre di scorrimento delle colonne laterali",
"stop_gifs": "Riproduci GIF al passaggio del cursore",
"streaming": "Mostra automaticamente i nuovi messaggi quando sei in cima alla pagina",
"style": {
@ -602,66 +814,80 @@
},
"filter_hint": {
"always_drop_shadow": "Attenzione: quest'ombra usa sempre {0} se il tuo browser lo supporta.",
"avatar_inset": "Tieni presente che combinare ombre (sia incluse che non) sulle icone utente potrebbe dare risultati strani con quelle trasparenti.",
"drop_shadow_syntax": "{0} non supporta il parametro {1} né la keyword {2}.",
"inset_classic": "Le ombre incluse usano {0}",
"spread_zero": "Lo spandimento maggiore di zero si azzera sulle ombre"
"avatar_inset": "Tieni presente che combinare ombre (sia incavate che non) sulle icone utente potrebbe dare risultati strani con avatar trasparenti.",
"drop_shadow_syntax": "{0} non supporta il parametro {1} con la keyword {2}.",
"inset_classic": "Le ombre incavate usano {0}",
"spread_zero": "Le ombre con espansione maggiore di zero appariranno come se l'espansione fosse zero"
},
"hintV3": "Per le ombre puoi anche usare la sintassi {0} per sfruttare il secondo colore.",
"inset": "Includi",
"override": "Sostituisci",
"shadow_id": "Ombra numero {value}",
"spread": "Spandi"
"hintV3": "Per le ombre puoi anche usare la sintassi {0} per usare l'altro slot colore.",
"inset": "Incavatura",
"override": "Sovrascrivi",
"shadow_id": "Ombra #{value}",
"spread": "Espansione"
},
"switcher": {
"clear_all": "Azzera tutto",
"clear_opacity": "Rimuovi opacità",
"clear_opacity": "Azzera opacità",
"help": {
"fe_downgraded": "L'interfaccia è stata portata ad una versione precedente.",
"fe_upgraded": "Lo schema dei temi è stato aggiornato insieme all'interfaccia.",
"future_version_imported": "Il tema importato è stato creato per una versione più recente dell'interfaccia.",
"migration_napshot_gone": "Anteprima del tema non trovata, non tutto potrebbe essere come ricordi.",
"migration_snapshot_ok": "Ho caricato l'anteprima del tema. Puoi provare a caricarne i contenuti.",
"older_version_imported": "Il tema importato è stato creato per una versione precedente dell'interfaccia.",
"snapshot_missing": "Il tema non è provvisto di anteprima, quindi potrebbe essere diverso da come appare.",
"fe_downgraded": "La versione di PleromaFE è riportata ad una versione precedente.",
"fe_upgraded": "Il motore dei temi di PleromaFE è stato aggiornato insieme all'interfaccia.",
"future_version_imported": "Il tema importato è stato creato per una versione più nuova del frontend.",
"migration_napshot_gone": "Per qualche motivo non è stata trovata l'anteprima del tema, non tutto potrebbe essere come ricordi.",
"migration_snapshot_ok": "Per sicurezza, è stata caricata l'anteprima del tema. Puoi provare a caricarne i contenuti.",
"older_version_imported": "Il file importato è stato creato per una versione precedente del frontend.",
"snapshot_missing": "Il file non è provvisto di anteprima, quindi potrebbe essere diverso da come appare.",
"snapshot_present": "Tutti i valori sono sostituiti dall'anteprima del tema. Puoi invece caricare i suoi contenuti.",
"snapshot_source_mismatch": "Conflitto di versione: probabilmente l'interfaccia è stata portata indietro e poi aggiornata di nuovo. Se hai modificato il tema con una vecchia versione usa il tema precedente, altrimenti puoi usare il nuovo.",
"upgraded_from_v2": "L'interfaccia è stata aggiornata, il tema potrebbe essere diverso da come lo ricordi.",
"v2_imported": "Il tema importato è stato creato per una vecchia interfaccia. Non tutto potrebbe essere come inteso."
"snapshot_source_mismatch": "Conflitto di versione: probabilmente il frontend è stato deaggiornato e poi aggiornato di nuovo. Se hai modificato il tema con una vecchia versione usa il tema precedente, altrimenti usa quello nuovo.",
"upgraded_from_v2": "PleromaFE è stato aggiornato, il tema potrebbe essere un pochino diverso da come lo ricordi.",
"v2_imported": "Il file importato è stato creato per un vecchio frontend. Cerchiamo di massimizzare la compatibilità, ma potrebbero esserci inconsistenze."
},
"keep_as_is": "Mantieni tal quale",
"keep_as_is": "Mantieni com'è",
"keep_color": "Mantieni colori",
"keep_fonts": "Mantieni font",
"keep_opacity": "Mantieni opacità",
"keep_roundness": "Mantieni vertici",
"keep_shadows": "Mantieni ombre",
"load_theme": "Carica tema",
"reset": "Reimposta",
"reset": "Azzera",
"save_load_hint": "Le opzioni \"mantieni\" conservano le impostazioni correnti quando selezioni o carichi un tema, e le salvano quando ne esporti uno. Quando nessuna casella è selezionata, tutte le impostazioni correnti saranno salvate nel tema.",
"use_snapshot": "Versione precedente",
"use_source": "Nuova versione"
}
},
"subject_input_always_show": "Mostra sempre il campo Oggetto",
"subject_line_behavior": "Copia oggetto quando rispondi",
"subject_line_email": "Come nelle email: \"re: oggetto\"",
"subject_line_mastodon": "Come in Mastodon: copia tal quale",
"subject_input_always_show": "Mostra sempre il campo avvertenza sul contenuto",
"subject_line_behavior": "Copia avvertenza sul contenuto quando rispondi",
"subject_line_email": "Come nelle email: \"re: avvertenza\"",
"subject_line_mastodon": "Come su Mastodon: copia com'è",
"subject_line_noop": "Non copiare",
"text": "Testo",
"theme": "Tema",
"theme_help": "Usa colori esadecimali (#rrggbb) per personalizzare il tuo schema di colori.",
"theme_help_v2_1": "Puoi anche forzare colore ed opacità di alcuni elementi selezionando la casella. Usa il pulsante \"Azzera\" per azzerare tutte le forzature.",
"theme_help_v2_2": "Le icone vicino alcuni elementi sono indicatori del contrasto fra testo e sfondo, passaci sopra col puntatore per ulteriori informazioni. Se usani trasparenze, questi indicatori mostrano il peggior caso possibile.",
"theme_help": "Usa colori esadecimali (#rrvvbb) per personalizzare il tuo tema colori.",
"theme_help_v2_1": "Puoi anche sovrascrivere colore ed opacità di alcuni elementi spuntando la casella. Usa il pulsante \"Azzera\" per azzerare tutte le sovrascritture.",
"theme_help_v2_2": "Le icone vicino alcuni elementi sono indicatori del contrasto fra testo e sfondo, passaci sopra col puntatore per ulteriori informazioni. Se usano la trasparenza, questi indicatori mostrano come sarebbero nel peggior caso possibile.",
"third_column_mode": "Quando c'è abbastanza spazio, mostra una terza colonna contenente",
"third_column_mode_none": "Non mostrare proprio la terza colonna",
"third_column_mode_notifications": "Colonna notifiche",
"third_column_mode_postform": "Modulo post principale e navigazione",
"token": "Token",
"tooltipRadius": "Suggerimenti/avvisi",
"tooltipRadius": "Suggerimenti/allerte",
"translation_language": "Lingua finale di traduzione automatica",
"tree_advanced": "Mostra bottoni aggiuntivi per aprire e chiudere catene di risposte nelle conversazioni",
"tree_fade_ancestors": "Mostra antenati del post corrente in testo semitrasparente",
"type_domains_to_mute": "Cerca domini da silenziare",
"upload_a_photo": "Carica un'immagine",
"upload_a_photo": "Carica una foto",
"useStreamingApi": "Ricevi messaggi e notifiche in tempo reale",
"useStreamingApiWarning": "(Sconsigliato, sperimentale, può saltare messaggi)",
"useStreamingApiWarning": "",
"use_blurhash": "Usa blurhash per anteprime NSFW",
"use_contain_fit": "Non ritagliare le anteprime degli allegati",
"use_one_click_nsfw": "Apri media offuscati con un solo click",
"use_one_click_nsfw": "Apri allegati NSFW con un solo click",
"user_accepts_direct_messages_from": "Accetta post «diretti» da",
"user_accepts_direct_messages_from_everybody": "Tutti",
"user_accepts_direct_messages_from_nobody": "Nessuno",
"user_accepts_direct_messages_from_people_i_follow": "Persone che seguo",
"user_mutes": "Utenti",
"user_settings": "Impostazioni Utente",
"user_profile_default_tab": "Scheda predefinita sul profilo degli utenti",
"user_profiles": "Profili utente",
"user_settings": "Impostazioni utente",
"valid_until": "Valido fino a",
"values": {
"false": "no",
@ -669,86 +895,141 @@
},
"version": {
"backend_version": "Versione backend",
"frontend_version": "Versione interfaccia",
"frontend_version": "Versione frontend",
"title": "Versione"
},
"virtual_scrolling": "Velocizza l'elaborazione delle sequenze",
"word_filter": "Parole filtrate"
"virtual_scrolling": "Velocizza rendering sequenze",
"word_filter": "Filtro per parola",
"wordfilter": "Filtro per parola"
},
"settings_profile": {
"creating": "Creazione del nuovo profilo di impostazioni \"{profile}\"…",
"synchronization_error": "Non è stato possibile sincronizzare le impostazioni: {err}",
"synchronized": "Impostazioni sincronizzate!",
"synchronizing": "Sincronizzazione del profilo di impostazioni \"{profile}\"…"
},
"status": {
"ancestor_follow": "Vedi {numReplies} altra risposta sotto questo post | Vedi {numReplies} altre risposte sotto questo post",
"ancestor_follow_with_icon": "{icon} {text}",
"attachment_stop_flash": "Ferma Flash player",
"bookmark": "Aggiungi segnalibro",
"copy_link": "Copia collegamento",
"delete": "Elimina messaggio",
"delete_confirm": "Vuoi veramente eliminare questo messaggio?",
"collapse_attachments": "Riduci allegati",
"copy_link": "Copia collegamento al post",
"delete": "Elimina post",
"delete_confirm": "Vuoi davvero eliminare questo post?",
"delete_confirm_accept_button": "Sì, eliminalo",
"delete_confirm_cancel_button": "No, tienilo",
"delete_confirm_title": "Conferma eliminazione",
"edit": "Modifica",
"edit_history": "Cronologia modifiche",
"edit_history_modal_title": "Modificato {historyCount} volta | Modificato {historyCount} volte",
"edited_at": "Modificato {time}",
"expand": "Espandi",
"external_source": "Vai all'origine",
"external_source": "Fonte originale",
"favorites": "Preferiti",
"hide_content": "Nascondi contenuti",
"hide_full_subject": "Nascondi oggetto intero",
"hide_attachment": "Nascondi allegato",
"hide_content": "Nascondi contenuto",
"hide_full_subject": "Nascondi avvertenza sul contenuto intera",
"many_attachments": "Il post ha {number} allegato | Il post ha {number} allegati",
"mentions": "Menzioni",
"move_down": "Muovi allegato a destra",
"move_up": "Muovi allegato a sinistra",
"mute_conversation": "Silenzia conversazione",
"nsfw": "DISDICEVOLE",
"pin": "Intesta al profilo",
"pinned": "Intestato",
"nsfw": "NSFW",
"open_gallery": "Apri galleria",
"override_translation_source_language": "Sovrascrivi lingua di origine",
"pin": "Fissa in cima al profilo",
"pinned": "Fissato",
"plus_more": "+{number} altri",
"repeats": "Condivisi",
"redraft": "Elimina e correggi",
"redraft_confirm": "Vuoi davvero eliminare e correggere questo post? Le interazioni al post originale non saranno mantenute.",
"redraft_confirm_accept_button": "Sì, elimina e correggi",
"redraft_confirm_cancel_button": "No, tieni l'originale",
"redraft_confirm_title": "Conferma elimina e correggi",
"remove_attachment": "Rimuovi allegato",
"repeat_confirm": "Vuoi davvero condividere questo post?",
"repeat_confirm_accept_button": "Sì, condividilo",
"repeat_confirm_cancel_button": "No, non condividere",
"repeat_confirm_title": "Conferma condivisione",
"repeats": "Condivisioni",
"replies_list": "Risposte:",
"replies_list_with_others": "Mostra {numReplies} altra risposta | Mostra {numReplies} altre risposte",
"reply_to": "In risposta a",
"show_content": "Mostra contenuti",
"show_full_subject": "Mostra oggetto intero",
"status_deleted": "Questo messagio è stato cancellato",
"status_unavailable": "Messaggio non disponibile",
"thread_muted": "Discussione silenziata",
"show_all_attachments": "Mostra tutti gli allegati",
"show_all_conversation": "Mostra conversazione intera ({numStatus} altro post) | Mostra conversazione intera ({numStatus} altri post)",
"show_all_conversation_with_icon": "{icon} {text}",
"show_attachment_description": "Anteprima descrizione (apri l'allegato per la descrizione intera)",
"show_attachment_in_modal": "Mostra allegato in una finestra",
"show_content": "Mostra contenuto",
"show_full_subject": "Mostra tutta l'avvertenza sul contenuto",
"show_only_conversation_under_this": "Mostra solo le risposte a questo post",
"status_deleted": "Questo post è stato eliminato",
"status_unavailable": "Post non disponibile",
"thread_follow": "Visualizza {numStatus} altra risposta | Visualizza {numStatus} altre risposte",
"thread_follow_with_icon": "{icon} {text}",
"thread_hide": "Nascondi questa conversazione",
"thread_muted": "Conversazione silenziata",
"thread_muted_and_words": ", contiene:",
"thread_show": "Mostra questa conversazione",
"thread_show_full": "Mostra {numStatus} risposta | Mostra tutte e {numStatus} le risposte",
"thread_show_full_with_icon": "{icon} {text}",
"translate": "Traduci",
"translated_from": "Tradotto da {language}",
"unbookmark": "Rimuovi segnalibro",
"unmute_conversation": "Riabilita conversazione",
"unpin": "De-intesta",
"unmute_conversation": "Desilenzia conversazione",
"unpin": "Rimuovi dalla cima del profilo",
"you": "(Tu)"
},
"time": {
"in_future": "fra {0}",
"in_past": "{0} fa",
"now": "adesso",
"now_short": "adesso",
"now": "proprio adesso",
"now_short": "ora",
"unit": {
"days": "{0} giorni",
"days": "{0} giorno | {0} giorni",
"days_short": "{0} g",
"hours": "{0} ore",
"hours_short": "{0} h",
"minutes": "{0} minuti",
"hours": "{0} ora | {0} ore",
"hours_short": "{0} ora | {0} ore",
"minutes": "{0} minuto | {0} minuti",
"minutes_short": "{0} min",
"months": "{0} mesi",
"months_short": "{0} mes",
"seconds": "{0} secondi",
"months": "{0} mese | {0} mesi",
"months_short": "{0} mese | {0} mesi",
"seconds": "{0} secondo | {0} secondi",
"seconds_short": "{0} sec",
"weeks": "{0} settimane",
"weeks_short": "{0} stm",
"years": "{0} anni",
"weeks": "{0} settimana | {0} settimane",
"weeks_short": "{0} sett",
"years": "{0} anno | {0} anni",
"years_short": "{0} a"
}
},
"timeline": {
"collapse": "Ripiega",
"collapse": "Riduci",
"conversation": "Conversazione",
"error": "Errore nel caricare la sequenza: {0}",
"load_older": "Carica messaggi precedenti",
"no_more_statuses": "Fine dei messaggi",
"no_retweet_hint": "Il messaggio è diretto o solo per seguaci e non può essere condiviso",
"no_statuses": "Nessun messaggio",
"follow_tag": "Segui hashtag",
"load_older": "Carica post precedenti",
"no_more_statuses": "Non ci sono altri post",
"no_retweet_hint": "Il messaggio è «solo per follower» o «diretto», quindi non può essere condiviso",
"no_statuses": "Nessun post",
"reload": "Ricarica",
"repeated": "ha condiviso",
"show_new": "Mostra nuovi",
"socket_broke": "Connessione tempo reale interrotta: codice {0}",
"socket_broke": "Connessione tempo reale interrotta: CloseEvent codice {0}",
"socket_reconnected": "Connesso in tempo reale",
"unfollow_tag": "Smetti di seguire hashtag",
"up_to_date": "Aggiornato"
},
"toast": {
"no_translation_target_set": "Nessuna lingua finale di traduzione impostata: la traduzione potrebbe fallire. Imposta una lingua finale di traduzione nelle tue impostazioni."
},
"tool_tip": {
"accept_follow_request": "Accetta seguace",
"add_reaction": "Reagisci",
"accept_follow_request": "Accetta richiesta di follow",
"add_reaction": "Aggiungi reazione",
"bookmark": "Aggiungi segnalibro",
"favorite": "Gradisci",
"media_upload": "Carica allegati",
"reject_follow_request": "Rifiuta seguace",
"favorite": "Rendi preferito",
"media_upload": "Carica media",
"quote": "Cita",
"reject_follow_request": "Rifiuta richiesta di follow",
"repeat": "Condividi",
"reply": "Rispondi",
"user_settings": "Impostazioni utente"
@ -756,7 +1037,7 @@
"upload": {
"error": {
"base": "Caricamento fallito.",
"default": "Riprova in seguito",
"default": "Riprova più tardi",
"file_too_big": "File troppo pesante [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]",
"message": "Caricamento fallito: {0}"
},
@ -770,79 +1051,115 @@
},
"user_card": {
"admin_menu": {
"activate_account": "Attiva profilo",
"deactivate_account": "Disattiva profilo",
"delete_account": "Elimina profilo",
"activate_account": "Riattiva account",
"deactivate_account": "Disattiva account",
"delete_account": "Elimina account",
"delete_user": "Elimina utente",
"disable_any_subscription": "Rendi utente non seguibile",
"disable_remote_subscription": "Blocca i tentativi di seguirlo da altre stanze",
"force_nsfw": "Oscura tutti i messaggi",
"force_unlisted": "Nascondi tutti i messaggi",
"grant_admin": "Crea Amministratore",
"grant_moderator": "Crea Moderatore",
"delete_user_data_and_deactivate_confirmation": "Questo eliminerà permanentemente i dati dall'account e lo disattiverà. Sei sicuro al 100%?",
"disable_any_subscription": "Proibisci a tutti di seguire l'utente",
"disable_remote_subscription": "Proibisci ad istanze remote di seguire l'utente",
"force_nsfw": "Marca tutti i post come NSFW",
"force_unlisted": "Rendi tutti i post «non in elenco»",
"grant_admin": "Rendi amministratore",
"grant_moderator": "Rendi moderatore",
"moderation": "Moderazione",
"quarantine": "I messaggi non arriveranno alle altre stanze",
"revoke_admin": "Divesti Amministratore",
"revoke_moderator": "Divesti Moderatore",
"sandbox": "Rendi tutti i messaggi solo per seguaci",
"strip_media": "Rimuovi ogni allegato ai messaggi"
"quarantine": "Impedisci la federazione dei post degli utenti",
"revoke_admin": "Rimuovi da amministratore",
"revoke_moderator": "Rimuovi da moderatore",
"sandbox": "Rendi tutti i messaggi \"solo per follower\"",
"strip_media": "Rimuovi media dai messaggi"
},
"approve": "Approva",
"approve": "Accetta",
"approve_confirm": "Sei sicuro di voler permettere a questo utente di seguirti?",
"approve_confirm_accept_button": "Sì, accetta",
"approve_confirm_cancel_button": "No, annulla",
"approve_confirm_title": "Accetta richiesta di follow",
"block": "Blocca",
"block_confirm": "Sei sicuro di voler bloccare {user}?",
"block_confirm_accept_button": "Sì, blocca",
"block_confirm_cancel_button": "No, non bloccare",
"block_confirm_title": "Blocca utente",
"block_progress": "Blocco…",
"blocked": "Bloccato!",
"blocks_you": "Ti blocca!",
"bot": "Bot",
"deny": "Nega",
"deactivated": "Disattivato",
"deny": "Rifiuta",
"deny_confirm": "Sei sicuro di voler rifiutare la richiesta di follow di questo utente?",
"deny_confirm_accept_button": "Sì, rifiuta",
"deny_confirm_cancel_button": "No, annulla",
"deny_confirm_title": "Rifiuta richiesta di follow",
"domain_muted": "Sblocca dominio",
"edit_profile": "Modifica profilo",
"favorites": "Preferiti",
"follow": "Segui",
"follow_cancel": "Annulla richiesta",
"follow_progress": "Richiedo…",
"follow_sent": "Richiesta inviata!",
"follow_unfollow": "Disconosci",
"followees": "Segue",
"followers": "Seguaci",
"following": "Seguìto!",
"follow_tag": "Segui l'hashtag",
"follow_unfollow": "Smetti di seguire",
"followed_tags": "Hashtag seguiti",
"followed_users": "Utenti seguiti",
"followees": "Seguiti",
"followers": "Follower",
"following": "Seguito!",
"follows_you": "Ti segue!",
"hidden": "Nascosto",
"hide_repeats": "Nascondi condivisioni",
"highlight": {
"disabled": "Nessun risalto",
"side": "Nastro a lato",
"solid": "Un colore",
"striped": "A righe"
"disabled": "Nessuno sfondo",
"side": "Striscia laterale",
"solid": "Sfondo monocolore",
"striped": "Sfondo a righe"
},
"its_you": "Sei tu!",
"media": "Media",
"mention": "Menziona",
"message": "Contatta",
"mute": "Silenzia",
"mute_progress": "Silenzio…",
"mute_confirm": "Sei sicuro di voler silenziare {user}?",
"mute_confirm_accept_button": "Sì, silenzia",
"mute_confirm_cancel_button": "No, non silenziare",
"mute_confirm_title": "Silenzia utente",
"mute_domain": "Blocca dominio",
"mute_progress": "Silenziando…",
"muted": "Silenziato",
"not_following_any_hashtags": "Non stai seguendo nessun hashtag",
"note": "Nota privata",
"per_day": "al giorno",
"remote_follow": "Segui da remoto",
"remove_follower": "Rimuovi follower",
"replies": "Con risposte",
"report": "Segnala",
"requested_by": "Ha chiesto di seguirti",
"show_repeats": "Mostra condivisioni",
"statuses": "Messaggi",
"subscribe": "Abbònati",
"statuses": "Post",
"subscribe": "Iscriviti",
"unblock": "Sblocca",
"unblock_progress": "Sblocco…",
"unmute": "Riabilita",
"unmute_progress": "Riabilito…",
"unsubscribe": "Disdici"
"unfollow_confirm": "Sei sicuro di voler smettere di seguire {user}?",
"unfollow_confirm_accept_button": "Sì, smetti di seguire",
"unfollow_confirm_cancel_button": "No, non smettere di seguire",
"unfollow_confirm_title": "Smetti di seguire l'utente",
"unfollow_tag": "Smetti di seguire l'hashtag",
"unmute": "Desilenzia",
"unmute_progress": "Desilenziamento…",
"unsubscribe": "Disiscriviti"
},
"user_profile": {
"field_validated": "Collegamento verificato",
"profile_does_not_exist": "Spiacente, questo profilo non esiste.",
"profile_loading_error": "Spiacente, c'è stato un errore nel caricamento del profilo.",
"timeline_title": "Sequenza dell'utente"
},
"user_reporting": {
"add_comment_description": "La segnalazione sarà inviata ai moderatori della tua stanza. Puoi motivarla qui sotto:",
"additional_comments": "Osservazioni accessorie",
"forward_description": "Il profilo appartiene ad un'altra stanza. Inviare la segnalazione anche a quella?",
"add_comment_description": "La segnalazione sarà inviata ai moderatori della tua istanza. Puoi fornire una motivazione per cui stai segnalando questo account qui sotto:",
"additional_comments": "Commenti aggiuntivi",
"forward_description": "Il profilo appartiene ad un altro server. Inviare la segnalazione anche a quello?",
"forward_to": "Inoltra a {0}",
"generic_error": "C'è stato un errore nell'elaborazione della tua richiesta.",
"submit": "Invia",
"title": "Segnalo {0}"
"title": "Segnala {0}"
},
"who_to_follow": {
"more": "Altro",

11
src/i18n/ja.json Normal file
View file

@ -0,0 +1,11 @@
{
"about": {
"mrf": {
"keyword": {
"is_replaced_by": "→",
"replace": "置き換える"
},
"mrf_policies": "有効なMRFポリシー"
}
}
}

View file

@ -523,7 +523,7 @@
"delete_account_description": "あなたのアカウントとメッセージが、きえます。",
"delete_account_error": "アカウントをけすことが、できなかったかもしれません。インスタンスのアドミニストレーターに、おといあわせください。",
"delete_account_instructions": "ほんとうにアカウントをけしてもいいなら、パスワードをかいてください。",
"disable_sticky_headers": "カラムヘッダーをがめんのいちばんうえにくっつけない",
"disable_sticky_headers": "カラムヘッダーをがめんのいちばんうえにくっつけない",
"discoverable": "けんさくなどのサービスで、このアカウントをみつけてもよい",
"domain_mutes": "ドメイン",
"download_backup": "ダウンロード",

124
src/i18n/lt.json Normal file
View file

@ -0,0 +1,124 @@
{
"about": {
"bubble_instances": "Vietiniai burbulo serveriai",
"bubble_instances_description": "Administratorių parinkti serveriai, kurie atstovauja šios serverio vietinę teritoriją",
"mrf": {
"federation": "Federacija",
"keyword": {
"ftl_removal": "Pašalinimas iš „Viso žinomo tinklo“ laiko skalės",
"is_replaced_by": "→",
"keyword_policies": "Raktažodžių politika",
"reject": "Atmesti",
"replace": "Pakeisti"
},
"mrf_policies": "Įjungta MRF politika",
"mrf_policies_desc": "MRF politika valdo serverio federacijos elgseną. Įjungtos toliau nurodytos politikos:",
"simple": {
"accept": "Priimti",
"accept_desc": "Šis serveris priima žinutes tik iš toliau nurodytų serverių:",
"ftl_removal": "Pašalinimas iš „Žinomo tinklo“ laiko skalės",
"ftl_removal_desc": "Šis serveris pašalina šiuos serverius iš „Žinomo tinklo“ laiko skalės:",
"instance": "Serveris",
"media_nsfw": "Medija priverstinai nustatyta kaip jautri",
"media_nsfw_desc": "Šis serveris priverčia nustatyti mediją kaip jautrią toliau nurodytų serverių įrašuose:",
"media_removal": "Medijos pašalinimas",
"media_removal_desc": "Šis serveris pašalina mediją iš toliau nurodytų serverių įrašų:",
"not_applicable": "Nėra",
"quarantine": "Karantinas",
"quarantine_desc": "Šis serveris nesiųs įrašų į toliau nurodytus serverius:",
"reason": "Priežastis",
"reject": "Atmesti",
"reject_desc": "Šis serveris nepriims žinučių iš toliau nurodytų serverių:",
"simple_policies": "Konkretaus serverio politika"
}
},
"staff": "Personalas"
},
"announcements": {
"all_day_prompt": "Tai visos dienos renginys",
"cancel_edit_action": "Atsisakyti",
"close_error": "Užverti",
"delete_action": "Ištrinti",
"edit_action": "Redaguoti",
"end_time_display": "Pasibaigia {time}",
"end_time_prompt": "Pabaigos laikas: ",
"inactive_message": "Šis skelbimas neaktyvus",
"mark_as_read_action": "Žymėti kaip skaitytą",
"page_header": "Skelbimai",
"post_action": "Siųsti",
"post_error": "Klaida: {error}",
"post_form_header": "Skelbti skelbimą"
},
"chats": {
"chats": "Pokalbiai",
"delete": "Ištrinti",
"more": "Daugiau",
"new": "Naujas pokalbis",
"you": "Jūs:"
},
"display_date": {
"today": "Šiandien"
},
"domain_mute_card": {
"mute": "Nutildyti",
"mute_progress": "Nutildoma…",
"unmute": "Atšaukti nutildymą",
"unmute_progress": "Atšaukiamas nutildymas…"
},
"emoji": {
"add_emoji": "Įterpti jaustuką",
"custom": "Pasirinktinis jaustukas",
"emoji": "Jaustukas",
"stickers": "Lipdukai",
"unicode": "Unikodo jaustukas"
},
"exporter": {
"export": "Eksportuoti"
},
"file_type": {
"audio": "Garso įrašas",
"file": "Failas",
"image": "Vaizdas",
"video": "Vaizdo įrašas"
},
"general": {
"more": "Daugiau",
"scope_in_timeline": {
"direct": "Tiesioginis",
"local": "Vietinis šį įrašą gali matyti tik jūsų serveris",
"private": "Tik sekėjams",
"public": "Vieša",
"unlisted": "Neįtrauktas į sąrašą"
},
"show_less": "Rodyti mažiau",
"show_more": "Rodyti daugiau",
"submit": "Pateikti",
"verify": "Patvirtinti"
},
"image_cropper": {
"cancel": "Atšaukti"
},
"importer": {
"submit": "Pateikti"
},
"user_card": {
"follow_tag": "Sekti saitažodį",
"not_following_any_hashtags": "Nesekate jokių saitažodžių.",
"unfollow_confirm_accept_button": "Taip, nebesekti",
"unfollow_confirm_cancel_button": "Ne, nenaikinti sekimą",
"unfollow_confirm_title": "Nebesekti naudotoją",
"unfollow_tag": "Nebesekti saitažodį"
},
"user_reporting": {
"additional_comments": "Papildomi komentarai",
"forward_description": "Paskyra yra iš kito serverio. Siųsti ataskaitos kopiją ir ten?",
"forward_to": "Persiųsti į {0}",
"generic_error": "Įvyko klaida apdorojant jūsų užklausą.",
"submit": "Pateikti",
"title": "Pranešama apie {0}"
},
"who_to_follow": {
"more": "Daugiau",
"who_to_follow": "Ką sekti"
}
}

View file

@ -14,16 +14,16 @@
"mrf_policies": "Włączone zasady MRF",
"mrf_policies_desc": "Zasady MRF zmieniają zachowanie federowania instancji. Następujące zasady są włączone:",
"simple": {
"accept": "Akceptowanie",
"accept": "Akceptowane",
"accept_desc": "Ta instancja akceptuje tylko posty z wymienionych instancji:",
"ftl_removal": "Usunięcie z „Całej znanej sieci”",
"ftl_removal_desc": "Ta instancja usuwa wymienionych instancje z „Całej znanej sieci”:",
"instance": "Instacja",
"instance": "Instancja",
"media_nsfw": "Multimedia ustawione jako wrażliwe",
"media_nsfw_desc": "Ta instancja wymusza, by multimedia z wymienionych instancji były ustawione jako wrażliwe:",
"media_removal": "Usuwanie multimediów",
"media_removal_desc": "Ta instancja usuwa multimedia z postów od wymienionych instancji:",
"not_applicable": "N/A",
"not_applicable": "nie dotyczy",
"quarantine": "Kwarantanna",
"quarantine_desc": "Ta instancja nie wysyła postów do wymienionych instancji:",
"reason": "Powód",
@ -40,7 +40,7 @@
"close_error": "Zamknij",
"delete_action": "Usuń",
"edit_action": "Edytuj",
"end_time_display": "Kończy się o: {time}",
"end_time_display": "Kończy się o {time}",
"end_time_prompt": "Koniec: ",
"inactive_message": "To ogłoszenie jest nieaktywne",
"mark_as_read_action": "Oznacz jako przeczytane",
@ -50,7 +50,7 @@
"post_form_header": "Wyślij ogłoszenie",
"post_placeholder": "Zawartość ogłoszenia",
"published_time_display": "Opublikowano o {time}",
"start_time_display": "Zaczyna się o: {time}",
"start_time_display": "Zaczyna się o {time}",
"start_time_prompt": "Początek: ",
"submit_edit_action": "Wyślij",
"title": "Ogłoszenie"
@ -58,7 +58,7 @@
"chats": {
"chats": "Czaty",
"delete": "Usuń",
"delete_confirm": "Czy na pewno chcesz usunąć tą wiadomość?",
"delete_confirm": "Czy na pewno chcesz usunąć tę wiadomość?",
"empty_chat_list_placeholder": "Nie masz jeszcze żadnych czatów. Zacznij nowy czat!",
"empty_message_error": "Nie można wysłać pustej wiadomości",
"error_loading_chat": "Coś poszło nie tak podczas ładowania czatu.",
@ -74,8 +74,8 @@
"domain_mute_card": {
"mute": "Wycisz",
"mute_progress": "Wyciszam…",
"unmute": "Odcisz",
"unmute_progress": "Odciszam…"
"unmute": "Cofnij wyciszenie",
"unmute_progress": "Cofam wyciszenie…"
},
"emoji": {
"add_emoji": "Wstaw emoji",
@ -90,11 +90,11 @@
"unicode": "Emoji unicode"
},
"errors": {
"storage_unavailable": "Pleroma nie mogła uzyskać dostępu do pamięci masowej przeglądarki. Twój login lub lokalne ustawienia nie zostaną zapisane i możesz napotkać problemy. Spróbuj włączyć ciasteczka."
"storage_unavailable": "Akkoma nie mogła uzyskać dostępu do pamięci masowej przeglądarki. Twój login lub lokalne ustawienia nie zostaną zapisane i możesz napotkać problemy. Spróbuj włączyć ciasteczka."
},
"exporter": {
"export": "Eksportuj",
"processing": "Przetwarzam, za chwilę zostaniesz zapytany(-na) o ściągnięcie pliku"
"processing": "Przetwarzam, za chwilę zostaniesz zapytane o ściągnięcie pliku"
},
"features_panel": {
"media_proxy": "Proxy mediów",
@ -123,8 +123,9 @@
"dismiss": "Odrzuć",
"enable": "Włącz",
"error_retry": "Spróbuj ponownie",
"flash_content": "Naciśnij, aby wyświetlić zawartości Flash z użyciem Ruffle (eksperymentalnie, może nie działać).",
"flash_fail": "Nie udało się załadować treści flash, zajrzyj do konsoli, aby odnaleźć szczegóły.",
"flash_content": "Naciśnij, aby wyświetlić zawartości Flash z użyciem Ruffle (eksperymentalne, może nie działać).",
"flash_fail": "Nie udało się załadować treści flash, zajrzyj do konsoli, by zobaczyć szczegóły.",
"flash_security": "Zauważ, że może to być potencjalnie niebezpieczne, ponieważ Flash zawiera dowolny kod wykonywalny.",
"generic_error": "Wystąpił błąd",
"loading": "Ładowanie…",
"more": "Więcej",
@ -135,6 +136,13 @@
"admin": "Administrator",
"moderator": "Moderator"
},
"scope_in_timeline": {
"direct": "Wiadomość bezpośrednia",
"local": "Lokalnie - tylko twoja instancja może zobaczyć ten post",
"private": "Tylko dla śledzących",
"public": "Publicznie",
"unlisted": "Poza listą"
},
"show_less": "Pokaż mniej",
"show_more": "Pokaż więcej",
"submit": "Wyślij",
@ -157,6 +165,84 @@
"load_older": "Załaduj starsze interakcje",
"moves": "Użytkownik migruje"
},
"languages": {
"ar": "Arabski",
"az": "Azerski",
"bg": "Bułgarski",
"cs": "Czeski",
"da": "Duński",
"de": "Niemiecki",
"el": "Grecki",
"en": "Angielski",
"eo": "Esperanto",
"es": "Hiszpański",
"fa": "Perski",
"fi": "Fiński",
"fr": "Francuski",
"ga": "Irlandzki",
"he": "Hebrajski",
"hi": "Hindi",
"hu": "Węgierski",
"id": "Indonezyjski",
"it": "Włoski",
"ja": "Japoński",
"ko": "Koreański",
"lt": "Litewski",
"lv": "Łotewski",
"nl": "Holenderski",
"pl": "Polski",
"pt": "Portugalski",
"ru": "Rosyjski",
"sk": "Słowacki",
"sv": "Szwedzki",
"tr": "Turecki",
"translated_from": {
"ar": "Przetłumaczono z języka arabskiego",
"az": "Przetłumaczono z języka azerskiego",
"bg": "Przetłumaczono z języka bułgarskiego",
"cs": "Przetłumaczono z języka czeskiego",
"da": "Przetłumaczono z języka duńskiego",
"de": "Przetłumaczono z języka niemieckiego",
"el": "Przetłumaczono z języka greckiego",
"en": "Przetłumaczono z języka angielskiego",
"eo": "Przetłumaczono z Esperanto",
"es": "Przetłumaczono z języka hiszpańskiego",
"fa": "Przetłumaczono z języka perskiego",
"fi": "Przetłumaczono z języka fińskiego",
"fr": "Przetłumaczono z języka francuskiego",
"ga": "Przetłumaczono z języka irlandzkiego",
"he": "Przetłumaczono z języka hebrajskiego",
"hi": "Przetłumaczono z Hindi",
"hu": "Przetłumaczono z języka węgierskiego",
"id": "Przetłumaczono z języka indonezyjskiego",
"it": "Przetłumaczono z języka włoskiego",
"ja": "Przetłumaczono z języka japońskiego",
"ko": "Przetłumaczono z języka koreańskiego",
"lt": "Przetłumaczono z języka litewskiego",
"lv": "Przetłumaczono z języka łotewskiego",
"nl": "Przetłumaczono z języka holenderskiego",
"pl": "Przetłumaczono z języka polskiego",
"pt": "Przetłumaczono z języka portugalskiego",
"ru": "Przetłumaczono z języka rosyjskiego",
"sk": "Przetłumaczono z języka słowackiego",
"sv": "Przetłumaczono z języka szwedzkiego",
"tr": "Przetłumaczono z języka tureckiego",
"uk": "Przetłumaczono z języka ukraińskiego",
"zh": "Przetłumaczono z języka chińskiego"
},
"uk": "Ukraiński",
"zh": "Chiński"
},
"lists": {
"create": "Stwórz listę",
"delete": "Usuń listę",
"following_only": "Zawęź do Śledzących",
"lists": "Listy",
"new": "Nowa Lista",
"save": "Zapisz zmiany",
"search": "Szukaj użytkowników",
"title": "Tytuł listy"
},
"login": {
"authentication_code": "Kod weryfikacyjny",
"description": "Zaloguj używając OAuth",
@ -169,61 +255,102 @@
"hint": "Zaloguj się, aby dołączyć do dyskusji",
"login": "Zaloguj",
"logout": "Wyloguj",
"logout_confirm": "Czy na pewno chcesz się wylogować?",
"logout_confirm_accept_button": "Wyloguj",
"logout_confirm_cancel_button": "Anuluj",
"logout_confirm_title": "Wyloguj",
"password": "Hasło",
"placeholder": "n.p. lain",
"placeholder": "mojanazwausera",
"recovery_code": "Kod zapasowy",
"register": "Zarejestruj",
"username": "Użytkownik"
},
"media_modal": {
"counter": "{current} / {total}",
"hide": "Zamknij przeglądarkę mediów",
"next": "Następne",
"previous": "Poprzednie"
},
"moderation": {
"moderation": "Moderacja",
"reports": {
"add_note": "Dodaj komentarz",
"close": "Zamknij",
"delete_note": "Usuń",
"delete_note_accept": "Tak, usuń",
"delete_note_cancel": "Nie, zostaw",
"delete_note_confirm": "Czy na pewno chesz usunąć ten komentarz?",
"delete_note_title": "Potwierdź usunięcie",
"no_content": "Brak opisu",
"no_reports": "Brak raportów do pokazania",
"note_placeholder": "Zostaw komenarz",
"notes": "{ count } komentarz | { count } komentarzy",
"reopen": "Otwórz ponownie",
"report": "Raport na",
"reports": "Raporty",
"resolve": "Oznacz jako rozwiązane",
"show_closed": "Pokaż zamknięte",
"statuses": "{ count } post| { count } postów",
"tag_policy_notice": "Włącz TagPolicy MRF by ustawić obostrzenia dla wpisów",
"tags": "Ustaw obostrzenia dla wpisów"
},
"statuses": "Wpisy",
"users": "Użytkownicy"
},
"nav": {
"about": "O nas",
"administration": "Administracja",
"announcements": "Ogłoszenia",
"back": "Wróć",
"bookmarks": "Zakładki",
"bubble_timeline": "Lokalna bańka",
"bubble_timeline_description": "Wpisy z instancji bliskich twojej, tak jak zaleca administracja",
"chats": "Czaty",
"dms": "Wiadomości bezpośrednie",
"friend_requests": "Prośby o możliwość obserwacji",
"home_timeline": "Główna oś czasu",
"home_timeline_description": "Wpisy ludzi, których śledzisz",
"interactions": "Interakcje",
"lists": "Listy",
"mentions": "Wzmianki",
"moderation": "Moderacja",
"preferences": "Preferencje",
"public_timeline_description": "Publiczne wpisy z tej instancji",
"public_tl": "Publiczna oś czasu",
"search": "Wyszukiwanie",
"timeline": "Oś czasu",
"timelines": "Osie czasu",
"twkn": "Znana sieć",
"twkn_timeline_description": "Wpisy z całej znanej sieci",
"user_search": "Wyszukiwanie użytkowników",
"who_to_follow": "Sugestie obserwacji"
},
"notifications": {
"broken_favorite": "Nieznany status, szukam go…",
"broken_favorite": "Nieznany wpis, szukam go…",
"error": "Błąd pobierania powiadomień: {0}",
"favorited_you": "dodał(-a) twój status do ulubionych",
"favorited_you": "dodało twój wpis do ulubionych",
"follow_request": "chce ciebie obserwować",
"followed_you": "obserwuje cię",
"load_older": "Załaduj starsze powiadomienia",
"migrated_to": "wyemigrował do",
"no_more_notifications": "Nie masz więcej powiadomień",
"notifications": "Powiadomienia",
"poll_ended": "Ankieta zakończona",
"reacted_with": "zareagował z {0}",
"read": "Przeczytane!",
"repeated_you": "powtórzył(-a) twój status"
"repeated_you": "powtórzyło twój wpis"
},
"password_reset": {
"check_email": "Sprawdź pocztę, aby uzyskać link do zresetowania hasła.",
"forgot_password": "Zapomniałeś(-aś) hasła?",
"forgot_password": "Zapomniał hasła?",
"instruction": "Wprowadź swój adres email lub nazwę użytkownika. Wyślemy ci link z którym możesz zresetować hasło.",
"password_reset": "Reset hasła",
"password_reset_disabled": "Resetowanie hasła jest wyłączone. Proszę skontaktuj się z administratorem tej instancji.",
"password_reset_disabled": "Resetowanie hasła jest wyłączone. Proszę skontaktuj się z administracją tej instancji.",
"password_reset_required": "Musisz zresetować hasło, by się zalogować.",
"password_reset_required_but_mailer_is_disabled": "Musisz zresetować hasło, ale resetowanie hasła jest wyłączone. Proszę skontaktuj się z administratorem tej instancji.",
"password_reset_required_but_mailer_is_disabled": "Musisz zresetować hasło, ale resetowanie hasła jest wyłączone. Proszę skontaktuj się z administracją tej instancji.",
"placeholder": "Twój email lub nazwa użytkownika",
"return_home": "Wróć do strony głównej",
"too_many_requests": "Przekroczyłeś(-aś) limit prób, spróbuj ponownie później."
"too_many_requests": "Przekroczył limit prób, spróbuj ponownie później."
},
"polls": {
"add_option": "Dodaj opcję",
@ -249,47 +376,59 @@
"text/bbcode": "BBCode",
"text/html": "HTML",
"text/markdown": "Markdown",
"text/plain": "Czysty tekst"
"text/plain": "Czysty tekst",
"text/x.misskeymarkdown": "MFM"
},
"content_warning": "Temat (nieobowiązkowy)",
"default": "Właśnie wróciłem z kościoła",
"direct_warning_to_all": "Ten wpis zobaczą wszystkie osoby, o których wspomniałeś(-aś).",
"direct_warning_to_first_only": "Ten wpis zobaczą tylko te osoby, o których wspomniałeś(-aś) na początku wiadomości.",
"content_warning": "Ostrzeżenie o zawartości (nieobowiązkowe)",
"default": "Właśnie wróciłom z kremówek",
"direct_warning_to_all": "Ten wpis zobaczą wszystkie osoby, o których wspomniałoś.",
"direct_warning_to_first_only": "Ten wpis zobaczą tylko te osoby, o których wspomniałoś na początku wiadomości.",
"edit_remote_warning": "Zmiany dokonane w tym wpisie mogą nie być widoczne na niektórych instancjach!",
"edit_status": "Edytuj wpis",
"edit_unsupported_warning": "Ankiety i wzmianki nie zostaną zmienione przez edycję",
"empty_status_error": "Nie można wysłać pustego wpisu bez plików",
"media_description": "Opis mediów",
"media_description_error": "Nie udało się zaktualizować mediów, spróbuj ponownie",
"new_status": "Dodaj nowy status",
"media_not_sensitive_warning": "Ustawiłoś ostrzeżenie o zawartości, ale załączniki nie zostały oznaczone jako wrażliwe!",
"new_status": "Dodaj nowy wpis",
"post": "Opublikuj",
"posting": "Wysyłanie",
"preview": "Podgląd",
"preview_empty": "Pusty",
"scope": {
"direct": "Bezpośredni tylko dla wspomnianych użytkowników",
"local": "Lokalnie - nie federuj tego wpisu",
"private": "Tylko dla obserwujących umieść dla osób, które cię obserwują",
"public": "Publiczny umieść na publicznych osiach czasu",
"unlisted": "Niewidoczny nie umieszczaj na publicznych osiach czasu"
},
"scope_notice": {
"local": "Ten wpis nie będzie widoczny dla innych instancji",
"private": "Ten post będzie widoczny tylko dla twoich obserwujących",
"public": "Ten post będzie widoczny dla każdego",
"unlisted": "Ten post nie będzie widoczny na publicznej osi czasu i całej znanej sieci"
"public": "Ten wpis będzie widoczny dla każdego",
"unlisted": "Ten wpis nie będzie widoczny na publicznej osi czasu i całej znanej sieci"
}
},
"registration": {
"awaiting_email_confirmation": "Twoje konto zostało zarejestrowane i email został wysłany na twój adres. Sprawdź swoją skrzynkę by dokończyć rejestrację.",
"awaiting_email_confirmation_title": "Oczekiwanie na potwierdzenie emailem",
"bio": "Bio",
"bio_placeholder": "e.g.\nCześć, jestem Lain.\nJestem dziewczynką z anime żyjącą na peryferiach Japonii. Możesz znać mnie z Wired.",
"bio_placeholder": "e.g.\nCześć! Witaj w moim bio.\nLubię oglądać anime i grać w gry. Mam nadzieję, że zostaniemy przyjaciółmi!",
"captcha": "CAPTCHA",
"email": "E-mail",
"email_language": "W jakim języku chcesz otrzymywać wiadomości z tego serwera?",
"fullname": "Wyświetlana nazwa profilu",
"fullname_placeholder": "np. Lain Iwakura",
"fullname_placeholder": "np. Atsuko Kagari",
"new_captcha": "Naciśnij na obrazek, aby dostać nowy kod captcha",
"password_confirm": "Potwierdzenie hasła",
"reason": "Powód rejestracji",
"reason_placeholder": "Ta instancja ręcznie zatwierdza rejestracje.\nPoinformuj administratora, dlaczego chcesz się zarejestrować.",
"register": "Zarejestruj się",
"registration": "Rejestracja",
"request_sent": "Twoja prośba o rejestrację została wysłana i czeka na potwierdzenie. Dostaniesz email kiedy twoje konto zostanie zaakceptowane.",
"request_sent_title": "Wysłano prośbę o rejestrację",
"token": "Token zaproszenia",
"username_placeholder": "np. lain",
"username_placeholder": "np. akko",
"validations": {
"email_required": "nie może być pusty",
"fullname_required": "nie może być pusta",
@ -316,7 +455,19 @@
},
"settings": {
"accent": "Akcent",
"account_alias": "Aliasy konta",
"account_alias_table_head": "Alias",
"account_backup": "Kopia zapasowa konta",
"account_backup_description": "Możesz ściągnąć archiwum danych swojego konta oraz swoje posty, ale na razie nie da się ich importować do konta na Akkomie.",
"account_backup_table_head": "Kopia zapasowa",
"account_privacy": "Prywatność",
"add_alias_error": "Błąd dodawania aliasu: {error}",
"add_backup": "Stwórz nową kopię zapasową",
"add_backup_error": "Błąd dodawania kopii zapasowej: {error}",
"added_alias": "Dodano alias.",
"added_backup": "Dodano kopię zapasową.",
"allow_following_move": "Zezwalaj na automatyczną obserwację gdy obserwowane konto migruje",
"always_show_post_button": "Zawsze pokazuj pływający przycisk Nowy Wpis",
"app_name": "Nazwa aplikacji",
"attachmentRadius": "Załączniki",
"attachments": "Załączniki",
@ -326,6 +477,7 @@
"avatarRadius": "Awatary",
"avatar_size_instruction": "Zalecany minimalny rozmiar awatarów to 150x150 pikseli.",
"background": "Tło",
"backup_not_ready": "Kopia zapasowa nie jest jeszcze gotowa.",
"bio": "Bio",
"block_export": "Eksport blokad",
"block_export_button": "Eksportuj twoje blokady do pliku .csv",
@ -347,10 +499,27 @@
"changed_password": "Pomyślnie zmieniono hasło!",
"chatMessageRadius": "Wiadomość czatu",
"checkboxRadius": "Pola wyboru",
"collapse_subject": "Zwijaj posty z tematami",
"collapse_subject": "Zwijaj posty z ostrzeżeniami o treści",
"columns": "Kolumny",
"composing": "Pisanie",
"confirm_dialogs": "Wymagaj potwierdzenia dla:",
"confirm_dialogs_approve_follow": "Akceptację prośby o śledzenie",
"confirm_dialogs_block": "Blokowanie kogoś",
"confirm_dialogs_delete": "Usunięcie wpisu",
"confirm_dialogs_deny_follow": "Odrzucenie prośby o śledzenie",
"confirm_dialogs_mute": "Wyciszenie kogoś",
"confirm_dialogs_repeat": "Powtórzenie wpisu",
"confirm_dialogs_unfollow": "Odwołanie śledzenia kogoś",
"confirm_new_password": "Potwierdź nowe hasło",
"confirmation_dialogs": "Opcje potwierdzeń",
"conversation_display": "Styl wyświetlania rozmów",
"conversation_display_linear": "Liniowy",
"conversation_display_tree": "Drzewiasty",
"conversation_other_replies_button": "Pokaż przycisk \"inne odpowiedzi\"",
"conversation_other_replies_button_below": "Pod wpisami",
"conversation_other_replies_button_inside": "Wewnątrz wpisów",
"current_avatar": "Twój obecny awatar",
"current_mascot": "Twoja obecna maskotka",
"current_password": "Obecne hasło",
"data_import_export_tab": "Import/eksport danych",
"default_vis": "Domyślny zakres widoczności",
@ -358,23 +527,32 @@
"delete_account_description": "Trwale usuń dane i zdezaktywuj konto.",
"delete_account_error": "Wystąpił problem z usuwaniem twojego konta. Jeżeli problem powtarza się, poinformuj administratora swojej instancji.",
"delete_account_instructions": "Wprowadź swoje hasło w poniższe pole aby potwierdzić usunięcie konta.",
"disable_sticky_headers": "Nie przyklejaj nagłówków kolumn do góry ekranu",
"discoverable": "Zezwól na odkrywanie tego konta w wynikach wyszukiwania i innych usługach",
"domain_mutes": "Domeny",
"download_backup": "Ściągnij",
"email_language": "Język w którym otrzymujesz emaile od serwera",
"emoji_reactions_on_timeline": "Pokaż reakcje emoji na osi czasu",
"enable_web_push_notifications": "Włącz powiadomienia push",
"enter_current_password_to_confirm": "Wprowadź obecne hasło, by potwierdzić twoją tożsamość",
"expert_mode": "Pokaż zaawansowane",
"expire_posts_enabled": "Usuń wpisy po zadanej liczbie dni",
"expire_posts_input_placeholder": "Liczba dni",
"export_theme": "Zapisz motyw",
"file_export_import": {
"backup_restore": "Kopia zapasowa ustawień",
"backup_settings": "Kopia zapasowa ustawień do pliku",
"backup_settings_theme": "Kopia zapasowa ustawień i motywu do pliku",
"errors": {
"file_slightly_new": "Nie zgadza się pomniejsza wersja pliku, niektóre ustawienia mogą się nie załadować",
"file_too_new": "Niekompatybilna główna wersja: {fileMajor}, ten PleromaFE (wersja ustawień {feMajor}) jest zbyt stary by to obsłużyć",
"file_too_old": "Niekompatybilna główna wersja: {fileMajor}, wersja pliku jest zbyt stara i nie wspierana (min. ustawiona wer. {feMajor})",
"invalid_file": "Wybrany plik nie jest obsługiwaną kopią zapasową ustawień Pleromy. Nie dokonano żadnych zmian."
},
"restore_settings": "Przywróć ustawienia z pliku"
},
"filtering": "Filtrowanie",
"filtering_explanation": "Wszystkie statusy zawierające te słowa będą wyciszone. Jedno słowo na linijkę.",
"filtering_explanation": "Wszystkie wpisy zawierające te słowa będą wyciszone. Jedno słowo na linijkę.",
"follow_export": "Eksport obserwowanych",
"follow_export_button": "Eksportuj swoją listę obserwowanych do pliku CSV",
"follow_import": "Import obserwowanych",
@ -387,18 +565,26 @@
"hide_all_muted_posts": "Ukryj wyciszone słowa",
"hide_attachments_in_convo": "Ukrywaj załączniki w rozmowach",
"hide_attachments_in_tl": "Ukrywaj załączniki w osi czasu",
"hide_bot_indication": "Ukryj we wpisach oznaczenie botów",
"hide_favorites_description": "Nie pokazuj list moich ulubionych (ludzie wciąż dostaną notyfikacje)",
"hide_filtered_statuses": "Ukrywaj filtrowane statusy",
"hide_followers_count_description": "Nie pokazuj licznika obserwujących",
"hide_followers_description": "Nie pokazuj kto mnie obserwuje",
"hide_follows_count_description": "Nie pokazuj licznika obserwowanych",
"hide_follows_description": "Nie pokazuj kogo obserwuję",
"hide_isp": "Ukryj panel informacji o instancji",
"hide_list_aliases_error_action": "Zamknij",
"hide_media_previews": "Ukryj podgląd mediów",
"hide_muted_posts": "Ukrywaj wpisy wyciszonych użytkowników",
"hide_muted_threads": "Ukryj wyciszone wątki",
"hide_post_stats": "Ukrywaj statysyki postów (np. liczbę polubień)",
"hide_shoutbox": "Ukryj shoutbox instancji",
"hide_site_favicon": "Ukryj favikonę instancji na górze panelu",
"hide_site_name": "Ukryj nazwę instancji na górze panelu",
"hide_threads_with_blocked_users": "Ukryj wątki wspominające o zablokowanych użytkownikach",
"hide_user_stats": "Ukrywaj statysyki użytkowników (np. liczbę obserwujących)",
"hide_wallpaper": "Ukryj tło instancji",
"hide_wordfiltered_statuses": "Ukryj wpisy zawierające wyfiltrowane słowa",
"import_blocks_from_a_csv_file": "Importuj blokady z pliku CSV",
"import_followers_from_a_csv_file": "Importuj obserwowanych z pliku CSV",
"import_mutes_from_a_csv_file": "Zaimportuj wyciszenia z pliku .csv",
@ -411,10 +597,23 @@
"invalid_theme_imported": "Wybrany plik nie jest obsługiwanym motywem Pleromy. Nie dokonano zmian w twoim motywie.",
"limited_availability": "Niedostępne w twojej przeglądarce",
"links": "Łącza",
"lock_account_description": "Spraw, by konto mogli wyświetlać tylko zatwierdzeni obserwujący",
"list_aliases_error": "Błąd pobierania aliasów: {error}",
"list_backups_error": "Błąd pobierania listy kopii zapasowych: {error}",
"lock_account_description": "Wymagaj potwierdzenia nowych śledzących",
"loop_video": "Zapętlaj filmy",
"loop_video_silent_only": "Zapętlaj tylko filmy bez dźwięku (np. mastodonowe „gify”)",
"mascot": "Maskotka Mastodon FE",
"max_depth_in_thread": "Maksymalna liczba poziomów w wątku wyświetlana domyślnie",
"max_thumbnails": "Maksymalna liczba miniatur w poście",
"mention_link_bolden_you": "Podkreśl wspomnienia o tobie",
"mention_link_display": "Pokaż linki wspomnień",
"mention_link_display_full": "zawsze jako pełne nazwy (np. {'@'}foo{'@'}example.org)",
"mention_link_display_full_for_remote": "jako pełne nazwy tylko dla zdalnych użytkowników (np. {'@'}foo{'@'}example.org)",
"mention_link_display_short": "zawsze jako krótkie nazwy (np. {'@'}foo)",
"mention_link_fade_domain": "Wyblakłe domeny (np. {'@'}example.org w {'@'}foo{'@'}example.org)",
"mention_link_show_avatar": "Pokaż avatar użytkownika obok linku",
"mention_link_show_tooltip": "Pokaż pełne nazwy użytkowników jako dymek dla zdalnych użytkowników",
"mention_links": "Linki wspomnień",
"mfa": {
"authentication_methods": "Metody weryfikacji",
"confirm_and_enable": "Potwierdź i włącz OTP",
@ -438,6 +637,12 @@
},
"minimal_scopes_mode": "Zminimalizuj opcje wyboru zakresu postów",
"more_settings": "Więcej ustawień",
"move_account": "Przenieś konto",
"move_account_error": "Błąd przenoszenia konta: {error}",
"move_account_notes": "Jeśli chcesz przenieść to konto gdzieś indziej, musisz przejść do konta docelowego i dodać tam alias wskazujący tutaj.",
"move_account_target": "Konto docelowe (np. {example})",
"moved_account": "Konto zostało przeniesione.",
"mute_bot_posts": "Wycisz posty botów",
"mute_export": "Eksport wyciszeń",
"mute_export_button": "Wyeksportuj swoje wyciszenia do pliku .csv",
"mute_import": "Import wyciszeń",
@ -447,6 +652,7 @@
"mutes_tab": "Wyciszenia",
"name": "Imię",
"name_bio": "Imię i bio",
"new_alias_target": "Dodaj nowy alias (np. {example})",
"new_email": "Nowy e-mail",
"new_password": "Nowe hasło",
"no_blocks": "Brak blokad",
@ -456,6 +662,7 @@
"notification_mutes": "By przestać otrzymywać powiadomienia od jednego użytkownika, wycisz go.",
"notification_setting_block_from_strangers": "Zablokuj powiadomienia od użytkowników których nie obserwujesz",
"notification_setting_filters": "Filtry",
"notification_setting_hide_if_cw": "Ukryj zawartość powiadomień jeśli jest pod Ostrzeżeniem o Treści",
"notification_setting_hide_notification_contents": "Ukryj nadawcę i zawartość powiadomień push",
"notification_setting_privacy": "Prywatność",
"notification_visibility": "Rodzaje powiadomień do wyświetlania",
@ -464,6 +671,7 @@
"notification_visibility_likes": "Ulubione",
"notification_visibility_mentions": "Wzmianki",
"notification_visibility_moves": "Użytkownik migruje",
"notification_visibility_polls": "Koniec ankiety w której brałoś udział",
"notification_visibility_repeats": "Powtórzenia",
"notifications": "Powiadomienia",
"nsfw_clickthrough": "Włącz domyślne ukrywanie załączników o treści nieprzyzwoitej (NSFW)",
@ -471,8 +679,11 @@
"pad_emoji": "Dodaj odstęp z obu stron emoji podczas dodawania selektorem",
"panelRadius": "Panele",
"pause_on_unfocused": "Wstrzymuj strumieniowanie kiedy karta nie jest aktywna",
"permit_followback_description": "Automatycznie potwierdź śledzenie przez użytkowników którch już śledzisz",
"play_videos_in_modal": "Odtwarzaj filmy bezpośrednio w przeglądarce mediów",
"post_status_content_type": "Post status content type",
"post_look_feel": "Wygląd wpisów",
"post_status_content_type": "Domyślny typ zawartości wpisów",
"posts": "Wpisy",
"preload_images": "Ładuj wstępnie obrazy",
"presets": "Gotowe motywy",
"profile_background": "Tło profilu",
@ -486,6 +697,10 @@
"profile_tab": "Profil",
"radii_help": "Ustaw zaokrąglenie krawędzi interfejsu (w pikselach)",
"refresh_token": "Odśwież token",
"remove_alias": "Usuń ten alias",
"remove_backup": "Usuń kopię zapasową",
"render_mfm": "Wyświetlaj Misskey Markdown",
"render_mfm_on_hover": "Pauzuj animacje MFM dopóki nie najedziesz na nie kursorem",
"replies_in_timeline": "Odpowiedzi na osi czasu",
"reply_visibility_all": "Pokazuj wszystkie odpowiedzi",
"reply_visibility_following": "Pokazuj tylko odpowiedzi skierowane do mnie i osób które obserwuję",
@ -509,13 +724,34 @@
"security": "Bezpieczeństwo",
"security_tab": "Bezpieczeństwo",
"sensitive_by_default": "Domyślnie oznaczaj wpisy jako wrażliwe",
"sensitive_if_subject": "Automatycznie oznacz obrazki jako wrażliwe jeśli jest ustawnione ostrzeżenie o zawartości",
"set_new_avatar": "Ustaw nowy awatar",
"set_new_mascot": "Ustaw nową maskotkę",
"set_new_profile_background": "Ustaw nowe tło profilu",
"set_new_profile_banner": "Ustaw nowy banner profilu",
"setting_changed": "Opcja różni się od domyślnej",
"setting_server_side": "Ta opcja jest przywiązana do twojego profilu i wpływa na wszystkie sesje i klienty",
"settings": "Ustawienia",
"settings_profile": "Profile Ustawień",
"settings_profile_creation": "Stwórz nowy profil",
"settings_profile_creation_new_name_label": "Nazwa",
"settings_profile_creation_submit": "Stwórz",
"settings_profile_currently": "Aktualnie używane jest {name} (wersja: {version})",
"settings_profile_delete": "Usuń",
"settings_profile_delete_confirm": "Czy na pewno chesz usunąć ten profil?",
"settings_profile_force_sync": "Synchronizuj",
"settings_profile_in_use": "W użyciu",
"settings_profile_use": "Użyj",
"settings_profiles_refresh": "Odświerz profile ustawień",
"settings_profiles_show": "Pokaż wszystkie profile ustawień",
"settings_profiles_unshow": "Ukryj wszystkie profile ustawień",
"show_admin_badge": "Pokazuj odznakę „Administrator” na moim profilu",
"show_moderator_badge": "Pokazuj odznakę „Moderator” na moim profilu",
"show_nav_shortcuts": "Pokaż dodatkowe skróty nawigacyjne w górnym panelu",
"show_panel_nav_shortcuts": "Pokaż skróty nawigacji osi czasu na górze panelu",
"show_scrollbars": "Pokaż paski przewijania kolumn bocznych",
"show_wider_shortcuts": "Zwiększ odstęp między skrótami na panelu górnym",
"show_yous": "Pokaż (Ty)",
"stop_gifs": "Odtwarzaj GIFy po najechaniu kursorem",
"streaming": "Włącz automatycznie strumieniowanie nowych postów gdy jesteś na początku strony",
"style": {
@ -641,15 +877,15 @@
"help": {
"fe_downgraded": "Wersja PleromaFE została cofnięta.",
"fe_upgraded": "Silnik motywów PleromaFE został zaaktualizowany.",
"future_version_imported": "Plik który zaimportowałeś(-aś) został stworzony w nowszej wersji FE.",
"migration_napshot_gone": "Z jakiegoś powodu migawka zniknęła, niektóre rzeczy mogą wyglądać inaczej niż zapamiętałeś(-aś).",
"future_version_imported": "Plik który zaimportował został stworzony w nowszej wersji FE.",
"migration_napshot_gone": "Z jakiegoś powodu migawka zniknęła, niektóre rzeczy mogą wyglądać inaczej niż zapamiętał.",
"migration_snapshot_ok": "Żeby być bezpiecznym, migawka motywu została załadowana. Możesz spróbować załadować dane motywu.",
"older_version_imported": "Plik który zaimportowałeś(-aś) został stworzony w starszej wersji FE.",
"older_version_imported": "Plik który zaimportował został stworzony w starszej wersji FE.",
"snapshot_missing": "Nie znaleziono migawki motywu w pliku, więc motyw może wyglądać inaczej niż pierwotnie zaplanowano.",
"snapshot_present": "Migawka motywu jest załadowana, więc wszystkie wartości zostały nadpisane. Zamiast tego możesz załadować właściwe dane motywu.",
"snapshot_source_mismatch": "Konflikt wersji: najprawdopodobniej FE zostało cofnięte do poprzedniej wersji i zaktualizowane ponownie, jeśli zmieniłeś(-aś) motyw używając starszej wersji FE, najprawdopodobniej chcesz używać starszej wersji, w przeciwnym razie użyj nowej wersji.",
"upgraded_from_v2": "PleromaFE zostało zaaktualizowane, motyw może wyglądać nieco inaczej niż zapamiętałeś(-aś).",
"v2_imported": "Plik który zaimportowałeś(-aś) został stworzony dla starszego FE. Próbujemy zwiększyć kompatybilność, lecz wciąż mogą występować rozbieżności."
"snapshot_source_mismatch": "Konflikt wersji: najprawdopodobniej FE zostało cofnięte do poprzedniej wersji i zaktualizowane ponownie, jeśli zmienił motyw używając starszej wersji FE, najprawdopodobniej chcesz używać starszej wersji, w przeciwnym razie użyj nowej wersji.",
"upgraded_from_v2": "PleromaFE zostało zaaktualizowane, motyw może wyglądać nieco inaczej niż zapamiętał.",
"v2_imported": "Plik który zaimportował został stworzony dla starszego FE. Próbujemy zwiększyć kompatybilność, lecz wciąż mogą występować rozbieżności."
},
"keep_as_is": "Zostaw po staremu",
"keep_color": "Zachowaj kolory",
@ -664,9 +900,9 @@
"use_source": "Nowa wersja"
}
},
"subject_input_always_show": "Zawsze pokazuj pole tematu",
"subject_line_behavior": "Kopiuj temat podczas odpowiedzi",
"subject_line_email": "Jak w mailach „re: temat”",
"subject_input_always_show": "Zawsze pokazuj pole ostrzeżenia o treści",
"subject_line_behavior": "Kopiuj ostrzeżenie o treści podczas odpowiedzi",
"subject_line_email": "Jak w mailach „re: ostrzeżenie”",
"subject_line_mastodon": "Jak na Mastodonie po prostu kopiuj",
"subject_line_noop": "Nie kopiuj",
"text": "Tekst",
@ -674,15 +910,30 @@
"theme_help": "Użyj kolorów w notacji szesnastkowej (#rrggbb), by stworzyć swój motyw.",
"theme_help_v2_1": "Możesz też zastąpić kolory i widoczność poszczególnych komponentów przełączając pola wyboru, użyj „Wyczyść wszystko” aby usunąć wszystkie zastąpienia.",
"theme_help_v2_2": "Ikony pod niektórych wpisami są wskaźnikami kontrastu pomiędzy tłem a tekstem, po najechaniu na nie otrzymasz szczegółowe informacje. Zapamiętaj, że jeżeli używasz przezroczystości, wskaźniki pokazują najgorszy możliwy przypadek.",
"third_column_mode": "Jeśli jest dość miejsca, pokaż trzecią kolumnę zawierającą",
"third_column_mode_none": "Nie pokazuj trzeciej kolumny",
"third_column_mode_notifications": "Kolumnę powiadomień",
"third_column_mode_postform": "Główny formularz wpisu i nawigacja",
"token": "Token",
"tooltipRadius": "Etykiety/alerty",
"translation_language": "Automatyczny Język Tłumaczeń",
"tree_advanced": "Pokaż dodatkowe przyciski do otwierania i zamykania ciągów odpowiedzi w wątkach",
"tree_fade_ancestors": "Pokaż przodków aktualnego wpisu jako blady tekst",
"type_domains_to_mute": "Wyszukaj domeny, które chcesz wyciszyć",
"upload_a_photo": "Wyślij zdjęcie",
"useStreamingApi": "Otrzymuj posty i powiadomienia w czasie rzeczywistym",
"useStreamingApiWarning": "(Niezalecane, eksperymentalne, pomija posty)",
"use_at_icon": "Pokazuj symbol {'@'} jako ikonę a nie tekst",
"use_blurhash": "Używaj rozmycia dla miniatur wrażliwych obrazków",
"use_contain_fit": "Nie przycinaj załączników na miniaturach",
"use_one_click_nsfw": "Otwieraj załączniki NSFW jednym kliknięciem",
"user_accepts_direct_messages_from": "Pozwalaj na wiadomości od",
"user_accepts_direct_messages_from_everybody": "Każdego",
"user_accepts_direct_messages_from_nobody": "Nikogo",
"user_accepts_direct_messages_from_people_i_follow": "Ludzi, których śledzę",
"user_mutes": "Użytkownicy",
"user_profile_default_tab": "Domyślna Karta na Profilu Użytkownika",
"user_profiles": "Profile Użytkowników",
"user_settings": "Ustawienia użytkownika",
"valid_until": "Ważne do",
"values": {
@ -695,34 +946,86 @@
"title": "Wersja"
},
"virtual_scrolling": "Optymalizuj renderowanie osi czasu",
"word_filter": "Filtr słów"
"word_filter": "Filtr słów",
"wordfilter": "Filtr słów"
},
"settings_profile": {
"creating": "Tworzę nowy profil ustawień \"{profile}\"...",
"synchronization_error": "Nie można zsynchronizować ustawień: {err}",
"synchronized": "Zsynchronizowano ustawienia!",
"synchronizing": "Synchronizuję profil ustawień \"{profile}\"..."
},
"status": {
"ancestor_follow": "Pokaż {numReplies} inną odpowiedź pod tym wpisem | Pokaż {numReplies} innych odpowiedzi pod tym wpisem",
"ancestor_follow_with_icon": "{icon} {text}",
"attachment_stop_flash": "Zatrzymaj odtwarzacz Flash",
"bookmark": "Dodaj do zakładek",
"copy_link": "Kopiuj link do statusu",
"delete": "Usuń status",
"delete_confirm": "Czy naprawdę chcesz usunąć ten status?",
"collapse_attachments": "Złóż załączniki",
"copy_link": "Kopiuj link do wpisu",
"delete": "Usuń wpis",
"delete_confirm": "Czy naprawdę chcesz usunąć ten wpis?",
"delete_confirm_accept_button": "Tak, usuń",
"delete_confirm_cancel_button": "Nie, zostaw",
"delete_confirm_title": "Potwierdź usunięcie",
"edit": "Edytuj",
"edit_history": "Historia edycji",
"edit_history_modal_title": "Edytowano {historyCount} raz | Edytowano {historyCount} razy",
"edited_at": "Edytowano {time}",
"expand": "Rozwiń",
"external_source": "Zewnętrzne źródło",
"favorites": "Ulubione",
"hide_attachment": "Ukryj załącznik",
"hide_content": "Ukryj zawartość",
"hide_full_subject": "Ukryj cały temat",
"hide_full_subject": "Ukryj całe ostrzeżenie o treści",
"many_attachments": "Wpis ma {number} załącznik | Wpis ma {number} załączników",
"mentions": "Wspomnienia",
"move_down": "Przesuń załączniki w prawo",
"move_up": "Przesuń załączniki w lewo",
"mute_conversation": "Wycisz konwersację",
"nsfw": "NSFW",
"open_gallery": "Otwórz galerię",
"override_translation_source_language": "Nadpisz język źródłowy",
"pin": "Przypnij na profilu",
"pinned": "Przypnięte",
"plus_more": "+{number} więcej",
"redraft": "Usuń i przeredaguj",
"redraft_confirm": "Czy na pewno chesz usunąć i przeredagować post? Interakcje z oryginalnym wpisem nie zostaną zachowane.",
"redraft_confirm_accept_button": "Tak, usuń i przeredaguj",
"redraft_confirm_cancel_button": "Nie, zostaw wpis oryginalny",
"redraft_confirm_title": "Potwierdź usunięcie i przeredagowanie",
"remove_attachment": "Usuń załącznik",
"repeat_confirm": "Czy na pewno chesz powtórzyć ten wpis?",
"repeat_confirm_accept_button": "Tak, powtórz",
"repeat_confirm_cancel_button": "Nie, nie powtarzaj",
"repeat_confirm_title": "Potwierdź powtórzenie",
"repeats": "Powtórzenia",
"replies_list": "Odpowiedzi:",
"replies_list_with_others": "Pokaż {numReplies} więcej odpowiedź | Pokaż {numReplies} więcej odpowiedzi",
"reply_to": "Odpowiedź dla",
"show_all_attachments": "Pokaż wszystkie załączniki",
"show_all_conversation": "Pokaż pełną rozmowę ({numStatus} inny wpis) | Pokaż pełną rozmowę ({numStatus} innych wpisów)",
"show_all_conversation_with_icon": "{icon} {text}",
"show_attachment_description": "Podgląd opisu (otwórz załącznik by zobaczyć pełen opis)",
"show_attachment_in_modal": "Pokaż załącznik w oknie",
"show_content": "Pokaż zawartość",
"show_full_subject": "Pokaż cały temat",
"show_full_subject": "Pokaż całe ostrzeżenie o treści",
"show_only_conversation_under_this": "Pokaż tylko odpowiedzi na ten wpis",
"status_deleted": "Ten wpis został usunięty",
"status_unavailable": "Status niedostępny",
"status_unavailable": "Wpis niedostępny",
"thread_follow": "Pokaż {numStatus} więcej odpowiedź | Pokaż {numStatus} więcej odpowiedzi",
"thread_follow_with_icon": "{icon} {text}",
"thread_hide": "Ukryj ten wątek",
"thread_muted": "Wątek wyciszony",
"thread_muted_and_words": ", ma słowa:",
"thread_show": "Pokaż ten wątek",
"thread_show_full": "Pokaż {numStatus} odpowiedź | Pokaż wszystkie {numStatus} odpowiedzi",
"thread_show_full_with_icon": "{icon} {text}",
"translate": "Przetłumacz",
"translated_from": "Przetłumaczone z {language}",
"unbookmark": "Usuń z zakładek",
"unmute_conversation": "Odcisz konwersację",
"unpin": "Odepnij z profilu"
"unpin": "Odepnij z profilu",
"you": "(Ty)"
},
"time": {
"in_future": "za {0}",
@ -750,23 +1053,29 @@
"collapse": "Zwiń",
"conversation": "Rozmowa",
"error": "Błąd pobierania osi czasu: {0}",
"load_older": "Załaduj starsze statusy",
"no_more_statuses": "Brak kolejnych statusów",
"follow_tag": "Śledź hasztag",
"load_older": "Załaduj starsze wpisy",
"no_more_statuses": "Brak kolejnych wpisów",
"no_retweet_hint": "Wpis oznaczony jako tylko dla obserwujących lub bezpośredni nie może zostać powtórzony",
"no_statuses": "Brak statusów",
"no_statuses": "Brak wpisów",
"reload": "Odśwież",
"repeated": "powtórzył(-a)",
"show_new": "Pokaż nowe",
"socket_broke": "Utracono połączenie w czasie rzeczywistym: kod CloseEvent {0}",
"socket_reconnected": "Osiągnięto połączenie w czasie rzeczywistym",
"unfollow_tag": "Przestań śledzić hasztag",
"up_to_date": "Na bieżąco"
},
"toast": {
"no_translation_target_set": "Nie ustawiono docelowego języka tłumaczenia - to może się nie udać. Ustaw język docelowy w ustawieniach."
},
"tool_tip": {
"accept_follow_request": "Akceptuj prośbę o możliwość obserwacji",
"add_reaction": "Dodaj reakcję",
"bookmark": "Zakładka",
"favorite": "Dodaj do ulubionych",
"media_upload": "Wyślij media",
"quote": "Cytuj",
"reject_follow_request": "Odrzuć prośbę o możliwość obserwacji",
"repeat": "Powtórz",
"reply": "Odpowiedz",
@ -793,6 +1102,7 @@
"deactivate_account": "Dezaktywuj konto",
"delete_account": "Usuń konto",
"delete_user": "Usuń użytkownika",
"delete_user_data_and_deactivate_confirmation": "To nieodwracalnie usunie dane tego konta i je zdezaktywuje. Czy na pewno chesz to zrobić?",
"disable_any_subscription": "Zakaż całkowicie obserwowania użytkownika",
"disable_remote_subscription": "Zakaż obserwowania użytkownika ze zdalnych instancji",
"force_nsfw": "Oznacz wszystkie posty jako NSFW",
@ -807,46 +1117,84 @@
"strip_media": "Usuń multimedia z postów"
},
"approve": "Przyjmij",
"approve_confirm": "Czy na pewno chesz pozwolić by ten użytkownik cię śledził?",
"approve_confirm_accept_button": "Tak, akceptuj",
"approve_confirm_cancel_button": "Nie, anuluj",
"approve_confirm_title": "Akceptuj prośbę o śledzenie",
"block": "Zablokuj",
"block_confirm": "Czy na pewno chesz zablokować {user}?",
"block_confirm_accept_button": "Tak, blokuj",
"block_confirm_cancel_button": "Nie, nie blokuj",
"block_confirm_title": "Blokuj użytkownika",
"block_progress": "Blokuję…",
"blocked": "Zablokowany!",
"blocks_you": "Blokuje cię!",
"bot": "Bot",
"deactivated": "Zdezaktywowano",
"deny": "Odrzuć",
"deny_confirm": "Czy na pewno chesz odmówić prośbie o śledzenie?",
"deny_confirm_accept_button": "Tak, odmów",
"deny_confirm_cancel_button": "Nie, nie odmawiaj",
"deny_confirm_title": "Odmów prośbie o śledzenie",
"domain_muted": "Odblokuj domenę",
"edit_profile": "Edytuj profil",
"favorites": "Ulubione",
"follow": "Obserwuj",
"follow_cancel": "Anuluj prośbę",
"follow_progress": "Wysyłam prośbę…",
"follow_sent": "Wysłano prośbę!",
"follow_tag": "Śledź hasztag",
"follow_unfollow": "Przestań obserwować",
"followed_tags": "Śledzone hasztagi",
"followed_users": "Śledzeni użytkownicy",
"followees": "Obserwowani",
"followers": "Obserwujący",
"following": "Obserwowany!",
"following": "Obserwujesz!",
"follows_you": "Obserwuje cię!",
"hidden": "Ukryte",
"hide_repeats": "Ukryj powtórzenia",
"highlight": {
"disabled": "Bez wyróżnienia"
"disabled": "Bez wyróżnienia",
"side": "Pasek boczny",
"solid": "Jednokolorowe tło",
"striped": "Tło w paski"
},
"its_you": "To ty!",
"media": "Media",
"mention": "Wspomnienie",
"message": "Napisz",
"mute": "Wycisz",
"mute_confirm": "Czy na pewno chcesz wyciszyć {user}?",
"mute_confirm_accept_button": "Tak, wycisz",
"mute_confirm_cancel_button": "Nie, nie wyciszaj",
"mute_confirm_title": "Wycisz użytkownika",
"mute_domain": "Blokuj domenę",
"mute_progress": "Wyciszam…",
"muted": "Wyciszony(-a)",
"not_following_any_hashtags": "Nie śledzisz żadnych hasztagów",
"note": "Prywatna notatka",
"per_day": "dziennie",
"remote_follow": "Zdalna obserwacja",
"remove_follower": "Usuń śledzenie",
"replies": "Z odpowiedziami",
"report": "Zgłoś",
"requested_by": "Chce cię śledzić",
"show_repeats": "Pokaż powtórzenia",
"statuses": "Statusy",
"statuses": "Wpisy",
"subscribe": "Subskrybuj",
"unblock": "Odblokuj",
"unblock_progress": "Odblokowuję…",
"unfollow_confirm": "Czy na pewno chesz przestać śledzić {user}?",
"unfollow_confirm_accept_button": "Tak, przestań śledzić",
"unfollow_confirm_cancel_button": "Nie, nie przestawaj",
"unfollow_confirm_title": "Przestań śledzić użytkownika",
"unfollow_tag": "Przestań śledzić hasztag",
"unmute": "Cofnij wyciszenie",
"unmute_progress": "Cofam wyciszenie…",
"unsubscribe": "Odsubskrybuj"
},
"user_profile": {
"field_validated": "Link zweryfikowany",
"profile_does_not_exist": "Przepraszamy, ten profil nie istnieje.",
"profile_loading_error": "Przepraszamy, wystąpił błąd podczas ładowania tego profilu.",
"timeline_title": "Oś czasu użytkownika"

View file

@ -1,5 +1,7 @@
{
"about": {
"bubble_instances": "Instâncias Bubble Locais",
"bubble_instances_description": "Instâncias escolhidas pelos administradores para representar a área local dessa instância",
"mrf": {
"federation": "Federação",
"keyword": {
@ -23,7 +25,7 @@
"media_removal_desc": "Este domínio remove multimédia das publicações dos seguintes domínios:",
"not_applicable": "N/A",
"quarantine": "Quarentena",
"quarantine_desc": "Este domínio apenas irá publicar nos seguintes domínios:",
"quarantine_desc": "Esta instância não irá enviar posts para as seguintes instâncias:",
"reason": "Razão",
"reject": "Rejeitar",
"reject_desc": "Este domínio não aceitará mensagens dos seguintes domínios:",
@ -39,6 +41,7 @@
"delete_action": "Apagar",
"edit_action": "Editar",
"end_time_display": "Termina às {time}",
"end_time_prompt": "Tempo final: ",
"inactive_message": "Este anúncio está inativo",
"mark_as_read_action": "Marcar como lido",
"page_header": "Anúncios",
@ -120,6 +123,9 @@
"dismiss": "Ignorar",
"enable": "Ativar",
"error_retry": "Por favor, tenta novamente",
"flash_content": "Clique para mostrar o conteúdo Flash usando Ruffle (Experimental, talvez não funcione).",
"flash_fail": "Falha ao carregar conteúdo flash, veja o console para detalhes.",
"flash_security": "Note que isso pode ser potencialmente perigoso dado que conteúdos Flash ainda são código arbitrário.",
"generic_error": "Ocorreu um erro",
"loading": "A carregar…",
"more": "Mais",
@ -130,6 +136,13 @@
"admin": "Admin",
"moderator": "Moderador"
},
"scope_in_timeline": {
"direct": "Direto",
"local": "Local - apenas a sua instância pode ver esse post",
"private": "Apenas para seguidores",
"public": "Público",
"unlisted": "Não-listado"
},
"show_less": "Mostrar menos",
"show_more": "Mostrar mais",
"submit": "Enviar",
@ -152,6 +165,84 @@
"load_older": "Carregar interações mais antigas",
"moves": "O utilizador migra"
},
"languages": {
"ar": "Árabe",
"az": "Azerbaijano",
"bg": "Búlgaro",
"cs": "Checo",
"da": "Dinamarquês",
"de": "Alemão",
"el": "Grego",
"en": "Inglês",
"eo": "Esperanto",
"es": "Espanhol",
"fa": "Persa",
"fi": "Finlandês",
"fr": "Francês",
"ga": "Irlandês",
"he": "Hebreu",
"hi": "Hindu",
"hu": "Húngaro",
"id": "Indonésio",
"it": "Italiano",
"ja": "Japonês",
"ko": "Coreano",
"lt": "Lituano",
"lv": "Letão",
"nl": "Holandês",
"pl": "Polonês",
"pt": "Português",
"ru": "Russo",
"sk": "Eslovaco",
"sv": "Sueco",
"tr": "Turco",
"translated_from": {
"ar": "Traduzido de @:languages.ar",
"az": "Traduzido de @:languages.az",
"bg": "Traduzido de @:languages.bg",
"cs": "Traduzido de @:languages.cs",
"da": "Traduzido de @:languages.da",
"de": "Traduzido de @:languages.de",
"el": "Traduzido de @:languages.el",
"en": "Traduzido de @:languages.en",
"eo": "Traduzido de @:languages.eo",
"es": "Traduzido de @:languages.es",
"fa": "Traduzido de @:languages.fa",
"fi": "Traduzido de @:languages.fi",
"fr": "Traduzido de @:languages.fr",
"ga": "Traduzido de @:languages.ga",
"he": "Traduzido de @:languages.he",
"hi": "Traduzido de @:languages.hi",
"hu": "Traduzido de @:languages.hu",
"id": "Traduzido de @:languages.id",
"it": "Traduzido de @:languages.it",
"ja": "Traduzido de @:languages.ja",
"ko": "Traduzido de @:languages.ko",
"lt": "Traduzido de @:languages.lt",
"lv": "Traduzido de @:languages.lv",
"nl": "Traduzido de @:languages.nl",
"pl": "Traduzido de @:languages.pl",
"pt": "Traduzido de @:languages.pt",
"ru": "Traduzido de @:languages.ru",
"sk": "Traduzido de @:languages.sk",
"sv": "Traduzido de @:languages.sv",
"tr": "Traduzido de @:languages.tr",
"uk": "Traduzido de @:languages.uk",
"zh": "Traduzido de @:languages.zh"
},
"uk": "Ucraniano",
"zh": "Chinês"
},
"lists": {
"create": "Criar",
"delete": "Apagar lista",
"following_only": "Limitar aos seguidores",
"lists": "Listas",
"new": "Nova Lista",
"save": "Salvar mudanças",
"search": "Procurar usuários",
"title": "Título da lista"
},
"login": {
"authentication_code": "Código de autenticação",
"description": "Iniciar sessão com OAuth",
@ -164,48 +255,90 @@
"hint": "Entra para participar na discussão",
"login": "Iniciar Sessão",
"logout": "Terminar sessão",
"logout_confirm": "Você tem certeza que deseja sair?",
"logout_confirm_accept_button": "Sair",
"logout_confirm_cancel_button": "Cancelar",
"logout_confirm_title": "Sair",
"password": "Palavra-passe",
"placeholder": "ex. lain",
"placeholder": "meunomedeusuario",
"recovery_code": "Código de recuperação",
"register": "Registrar",
"username": "Nome de Utilizador"
},
"media_modal": {
"counter": "{current} / {total}",
"hide": "Fechar visualizador de mídia",
"next": "Próximo",
"previous": "Anterior"
},
"moderation": {
"moderation": "Moderação",
"reports": {
"add_note": "Adicionar nota",
"close": "Fechar",
"delete_note": "Apagar",
"delete_note_accept": "Sim, apague isso",
"delete_note_cancel": "Não, mantenha isso",
"delete_note_confirm": "Você tem certeza que deseja apagar essa nota?",
"delete_note_title": "Confirmar exclusão",
"no_content": "Nenhuma descrição dada",
"no_reports": "Nenhum relatório a ser mostrado",
"note_placeholder": "Deixar uma nota",
"notes": "{ count } nota | {count } notas",
"reopen": "Reabrir",
"report": "Reportar",
"reports": "Relatórios",
"resolve": "Resolver",
"show_closed": "Mostrar fechadas",
"statuses": "{ count } publicação | { count } publicações",
"tag_policy_notice": "Ativar a TagPolicy MRF para ativar as restrições de publicação",
"tags": "Definir restrições de publicação"
},
"statuses": "Publicações",
"users": "Usuários"
},
"nav": {
"about": "Sobre",
"administration": "Administração",
"announcements": "Anúncios",
"back": "Voltar",
"bookmarks": "Itens Guardados",
"bubble_timeline": "Linha de tempo Bubble",
"bubble_timeline_description": "Publicações de instâncias perto da sua, como recomendado pelos administradores",
"chats": "Salas de Chat",
"dms": "Mensagens Diretas",
"friend_requests": "Pedidos de seguidores",
"home_timeline": "Linha de tempo pessoal",
"home_timeline_description": "Publicações de pessoas que você segue",
"interactions": "Interações",
"lists": "Listas",
"mentions": "Menções",
"moderation": "Moderação",
"preferences": "Preferências",
"public_timeline_description": "Publicações públicas dessa instância",
"public_tl": "Cronologia Pública",
"search": "Pesquisar",
"timeline": "Cronologia",
"timelines": "Cronologias",
"twkn": "Rede conhecida",
"twkn_timeline_description": "Publicações de toda a rede",
"user_search": "Pesquisa por Utilizadores",
"who_to_follow": "Quem seguir"
},
"notifications": {
"broken_favorite": "Publicação desconhecida, a procurar…",
"broken_favorite": "Publicação desconhecida, procurando por isso…",
"error": "Erro ao obter notificações: {0}",
"favorited_you": "gostou do teu post",
"favorited_you": "favoritou sua publicação",
"follow_request": "quer seguir-te",
"followed_you": "seguiu-te",
"load_older": "Carregar notificações antigas",
"migrated_to": "migrou para",
"no_more_notifications": "Sem mais notificações",
"notifications": "Notificações",
"poll_ended": "enquete foi finalizada",
"reacted_with": "reagiu com {0}",
"read": "Lido!",
"repeated_you": "partilhou o teu post"
"repeated_you": "repostou a sua publicação"
},
"password_reset": {
"check_email": "Verifica o teu endereço de e-mail para obter um link para repor a tua palavra-passe.",
@ -228,10 +361,12 @@
"multiple_choices": "Escolha múltipla",
"not_enough_options": "Demasiado poucas opções únicas na sondagem",
"option": "Opção",
"people_voted_count": "{count} pessoa votou | {count} pessoas votaram",
"single_choice": "Escolha única",
"type": "Tipo de sondagem",
"vote": "Vota",
"votes": "votos"
"votes": "votos",
"votes_count": "{count} voto | {count} votos"
},
"post_status": {
"account_not_locked_warning": "A sua conta não é {0}. Qualquer pessoa pode seguir-te e ver os seus posts privados (só para seguidores).",
@ -241,43 +376,60 @@
"text/bbcode": "BBCode",
"text/html": "HTML",
"text/markdown": "Remarcação",
"text/plain": "Texto puro"
"text/plain": "Texto puro",
"text/x.misskeymarkdown": "MFM"
},
"content_warning": "Assunto (opcional)",
"content_warning": "Aviso de Conteúdo (opcional)",
"default": "Acabei de chegar em",
"direct_warning_to_all": "Esta publicação será visível para todos os utilizadores mencionados.",
"direct_warning_to_first_only": "Esta publicação só será visível para os utilizadores mencionados no início da mensagem.",
"empty_status_error": "Não consegues publicar um post vazio e sem ficheiros",
"edit_remote_warning": "Mudanças feitas na publicação talvez não sejam visíveis em algumas instâncias!",
"edit_status": "Editar Status",
"edit_unsupported_warning": "Enquetes e menções não mudarão ao editar.",
"empty_status_error": "Não pode enviar uma publicação sem conteúdo ou arquivos",
"media_description": "Descrição da multimédia",
"media_description_error": "Falha ao atualizar ficheiro, tente novamente",
"new_status": "Publicar nova publicação",
"media_not_sensitive_warning": "Você tem um Aviso de Conteúdo, mas os anexos não estão marcados como sensíveis!",
"new_status": "Nova publicação",
"post": "Publicação",
"posting": "A publicar",
"preview": "Pré-visualização",
"preview_empty": "Vazio",
"scope": {
"direct": "Direto - Enviar somente aos usuários mencionados",
"local": "Local - não federar essa publicação",
"private": "Apenas para seguidores - Enviar apenas para seguidores",
"public": "Público - Publicar em cronologias públicas",
"unlisted": "Não listado - Não exibir em cronologias públicas"
},
"scope_notice": {
"local": "Essa publicação não estará visível em outras instâncias",
"private": "Esta publicação será apenas visível para os teus seguidores",
"public": "Esta publicação será visível para todos",
"unlisted": "Esta publicação não será visível na Cronologia pública e na Rede conhecida por todos"
}
},
"toggle_content_warning": "Alternar aviso de conteúdo"
},
"registration": {
"awaiting_email_confirmation": "Sua conta foi registrada e um email foi enviado para o seu endereço. Por favor, verifique o email para completar o registro.",
"awaiting_email_confirmation_title": "Aguardando confirmação de email",
"bio": "Biografia",
"bio_placeholder": "Ex.:\nBem-vindo a minha bio.\nEu amo assistir anime e jogar. Eu espero que possamos ser amigos!",
"captcha": "CAPTCHA",
"email": "Endereço de e-mail",
"email_language": "Em qual linguagem você quer receber os emails do servidor?",
"fullname": "Nome para exibição",
"fullname_placeholder": "ex. Lain Iwakura",
"fullname_placeholder": "ex. Atsuko Kagari",
"new_captcha": "Clique na imagem para carregar um novo captcha",
"password_confirm": "Confirmação de palavra-passe",
"reason": "Razão do registro",
"reason_placeholder": "Essa instância aprova os registros manualmente\nPermita ao administrador saber porque você deseja se registrar.",
"register": "Registrar",
"registration": "Registo",
"request_sent": "Seu pedido de registro foi enviado para aprovação. Você irá receber um email quando a sua conta for aprovada.",
"request_sent_title": "Pedido de registro enviado",
"token": "Código do convite",
"username_placeholder": "ex. lain",
"username_placeholder": "ex. akko",
"validations": {
"email_required": "não pode ser deixado em branco",
"fullname_required": "não pode ser deixado em branco",
@ -304,7 +456,19 @@
},
"settings": {
"accent": "Destaque",
"account_alias": "Apelidos de conta",
"account_alias_table_head": "Apelido",
"account_backup": "Backup de conta",
"account_backup_description": "Isso permite a você baixar um arquivo das informações da sua conta e as suas publicações, mas eles ainda não podem ser importados para uma conta do Akkoma.",
"account_backup_table_head": "Backup",
"account_privacy": "Privacidade",
"add_alias_error": "Erro ao adicionar apelido: {error}",
"add_backup": "Criar novo backup",
"add_backup_error": "Erro ao adicionar um novo backup: {error}",
"added_alias": "Apelido foi adicionado.",
"added_backup": "Adicionou um novo backup.",
"allow_following_move": "Permitir seguimento automático quando a conta for migrada para outra instância",
"always_show_post_button": "Sempre mostrar o botão flutuante de Nova Publicação",
"app_name": "Nome da aplicação",
"attachmentRadius": "Anexos",
"attachments": "Anexos",
@ -314,6 +478,7 @@
"avatarRadius": "Avatares",
"avatar_size_instruction": "O tamanho mínimo recomendado para imagens de avatar é 150x150 pixels.",
"background": "Imagem de Fundo",
"backup_not_ready": "Esse backup não está pronto ainda.",
"bio": "Biografia",
"block_export": "Exportar utilizadores bloqueados",
"block_export_button": "Exporta a tua lista de utilizadores bloqueados para um ficheiro csv",
@ -335,10 +500,27 @@
"changed_password": "Palavra-passe modificada com sucesso!",
"chatMessageRadius": "Mensagem de texto",
"checkboxRadius": "Caixas de seleção",
"collapse_subject": "Esconder posts com assunto",
"collapse_subject": "Colapsar publicações com aviso de conteúdo",
"columns": "Colunas",
"composing": "Escrita",
"confirm_dialogs": "Necessita de confirmação para:",
"confirm_dialogs_approve_follow": "Aceitar um pedido para seguir",
"confirm_dialogs_block": "Bloqueando alguém",
"confirm_dialogs_delete": "Apagar um post",
"confirm_dialogs_deny_follow": "Rejeitando um pedido de seguir",
"confirm_dialogs_mute": "Silenciando alguém",
"confirm_dialogs_repeat": "Repetindo um post",
"confirm_dialogs_unfollow": "Deixando de seguir alguém",
"confirm_new_password": "Confirmar nova palavra-passe",
"confirmation_dialogs": "Opções de confirmação",
"conversation_display": "Estilo de mostrador de conversa",
"conversation_display_linear": "Estilo-linear",
"conversation_display_tree": "Estilo em árvore",
"conversation_other_replies_button": "Mostrar o botão de \"outras respostas\"",
"conversation_other_replies_button_below": "Abaixo das publicações",
"conversation_other_replies_button_inside": "Dentro das publicações",
"current_avatar": "Seu avatar atual",
"current_mascot": "Seu mascote atual",
"current_password": "Palavra-passe atual",
"data_import_export_tab": "Importação/exportação de dados",
"default_vis": "Opção de privacidade padrão",
@ -346,14 +528,32 @@
"delete_account_description": "Apagar os seus dados permanentemente e desativar a sua conta.",
"delete_account_error": "Ocorreu um erro ao remover a sua conta. Se este persistir, por favor entre em contato com o/a administrador/a da instância.",
"delete_account_instructions": "Escreva a sua palavra-passe no campo abaixo para confirmar a remoção da conta.",
"disable_sticky_headers": "Não fixe o cabeçalho das colunas no topo da tela",
"discoverable": "Permitir a descoberta desta conta em resultados de busca e outros serviços",
"domain_mutes": "Domínios",
"download_backup": "Baixar",
"email_language": "Idioma para receber emails do servidor",
"emoji_reactions_on_timeline": "Mostrar reações de emoji na timeline",
"enable_web_push_notifications": "Habilitar notificações web push",
"enter_current_password_to_confirm": "Introduza a sua palavra-passe atual para confirmar a sua identidade",
"expert_mode": "Mostrar avançado",
"expire_posts_enabled": "Apagar publicações depois de certos dias",
"expire_posts_input_placeholder": "Número de dias",
"export_theme": "Guardar predefinições",
"file_export_import": {
"backup_restore": "Backup de configurações",
"backup_settings": "Fazer backup das configurações para um arquivo",
"backup_settings_theme": "Fazer backup das configurações e do tema em um arquivo",
"errors": {
"file_slightly_new": "A versão secundária do arquivo é diferente, algumas configurações podem não carregar",
"file_too_new": "Versão principal incompatível: {fileMajor}, esse PleromaFE (versão {feMajor}) é muito antigo para manipulá-lo",
"file_too_old": "Versão principal incompatível: {fileMajor}, a versão do arquivo é muito antiga e não é suportada (versão mínima {feMajor})",
"invalid_file": "O arquivo selecionado não é um arquivo de backup de configurações suportado pelo Pleroma. Nenhuma mudança foi feita."
},
"restore_settings": "Restaurar configurações de um arquivo"
},
"filtering": "Filtragem",
"filtering_explanation": "Todas as publicações que contenham estas palavras serão silenciadas; uma palavra por linha",
"filtering_explanation": "Todas as publicações que contenham estas palavras serão silenciadas, uma por linha",
"follow_export": "Exportar quem você segue",
"follow_export_button": "Exportar quem você segue para um arquivo CSV",
"follow_import": "Importar quem você segue",
@ -363,18 +563,29 @@
"fun": "Divertido",
"general": "Geral",
"greentext": "Texto verde (meme arrows)",
"hide_all_muted_posts": "Ocultar publicações silenciadas",
"hide_attachments_in_convo": "Ocultar anexos em conversas",
"hide_attachments_in_tl": "Ocultar anexos na cronologia",
"hide_bot_indication": "Ocultar indicador de bots na publicação",
"hide_favorites_description": "Não mostrar a lista dos meus favoritos (as pessoas ainda serão notificadas)",
"hide_filtered_statuses": "Esconder posts filtrados",
"hide_followers_count_description": "Não mostrar o número de seguidores",
"hide_followers_description": "Não mostrar quem me segue",
"hide_follows_count_description": "Não mostrar o número de contas seguidas",
"hide_follows_description": "Não mostrar quem estou seguindo",
"hide_isp": "Esconder painel específico da instância",
"hide_list_aliases_error_action": "Fechar",
"hide_media_previews": "Ocultar pré-visualização de mídia",
"hide_muted_posts": "Esconder posts de utilizadores silenciados",
"hide_muted_threads": "Ocultar fios silenciados",
"hide_post_stats": "Esconder estatísticas de posts (p. ex. número de favoritos)",
"hide_shoutbox": "Ocultar instâncias do shoutbox",
"hide_site_favicon": "Ocultar o favicon da instância no painel de topo",
"hide_site_name": "Ocultar nome da instância no painel de topo",
"hide_threads_with_blocked_users": "Ocultar fios mencionando usuários bloqueados",
"hide_user_stats": "Esconder estatísticas do usuário (p. ex. número de seguidores)",
"hide_wallpaper": "Esconder papel de parede da instância",
"hide_wordfiltered_statuses": "Ocultar publicações com palavras-filtradas",
"import_blocks_from_a_csv_file": "Importar bloqueados a partir de um arquivo CSV",
"import_followers_from_a_csv_file": "Importe seguidores a partir de um arquivo CSV",
"import_mutes_from_a_csv_file": "Importar silenciados de um ficheiro csv",
@ -387,10 +598,23 @@
"invalid_theme_imported": "O arquivo selecionado não é um tema compatível com o Pleroma. Nenhuma mudança no tema foi feita.",
"limited_availability": "Indisponível para seu navegador",
"links": "Links",
"list_aliases_error": "Erro ao buscar por apelido: {error}",
"list_backups_error": "Erro ao buscar por lista de backup: {error}",
"lock_account_description": "Restringir sua conta a seguidores aprovados",
"loop_video": "Repetir vídeos",
"loop_video_silent_only": "Repetir apenas vídeos sem som (como os \"gifs\" do Mastodon)",
"mascot": "Mascote do Mastodon FE",
"max_depth_in_thread": "Número máximo de níveis de um fio a serem mostrados por padrão",
"max_thumbnails": "Número máximo de miniaturas por post",
"mention_link_bolden_you": "Destaque suas menções quando você for mencionado",
"mention_link_display": "Mostre o link das menções",
"mention_link_display_full": "sempre como nomes completos (ex: {'@'}foo{'@'}example.org)",
"mention_link_display_full_for_remote": "como nomes completos para usuários remotos (ex: {'@'}foo{'@'}example.org)",
"mention_link_display_short": "sempre como nomes curtos (ex: {'@'}foo)",
"mention_link_fade_domain": "Renomear domínios (ex: {'@'}example.org em {'@'}foo{'@'}example.org)",
"mention_link_show_avatar": "Mostrar o avatar do usuário ao lado do link",
"mention_link_show_tooltip": "Mostrar o nome completo dos usuários como dica aos usuários remotos",
"mention_links": "Links de menções",
"mfa": {
"authentication_methods": "Métodos de autenticação",
"confirm_and_enable": "Confirmar e ativar a palavra-passe de utilização única",
@ -413,6 +637,13 @@
"warning_of_generate_new_codes": "Quando gera novos códigos de recuperação, os antigos deixam de funcionar."
},
"minimal_scopes_mode": "Minimizar as opções de publicação",
"more_settings": "Mais configurações",
"move_account": "Mover conta",
"move_account_error": "Erro ao mover conta: {error}",
"move_account_notes": "Se você deseja mover a sua conta para outro lugar, você deve ir à sua conta alvo e adicionar um apelido apontando para cá.",
"move_account_target": "Conta alvo (ex:. {example})",
"moved_account": "Conta foi movida.",
"mute_bot_posts": "Silenciar publicações de bots",
"mute_export": "Exportar silenciados",
"mute_export_button": "Exporta os silenciados para um ficheiro csv",
"mute_import": "Importar silenciados",
@ -422,6 +653,7 @@
"mutes_tab": "Silenciados",
"name": "Nome",
"name_bio": "Nome & Biografia",
"new_alias_target": "Adicionar um novo apelido (ex: {example})",
"new_email": "Novo endereço de e-mail",
"new_password": "Nova palavra-passe",
"no_blocks": "Sem bloqueios",
@ -431,6 +663,7 @@
"notification_mutes": "Para deixar de receber notificações de um utilizador específico, silencia-o.",
"notification_setting_block_from_strangers": "Bloqueia as notificações de utilizadores que não segues",
"notification_setting_filters": "Filtros",
"notification_setting_hide_if_cw": "Ocultar o conteúdo de uma notificação de push se estiver sob um Aviso de Conteúdo",
"notification_setting_hide_notification_contents": "Ocultar o remetente e o conteúdo das notificações push",
"notification_setting_privacy": "Privacidade",
"notification_visibility": "Tipos de notificação para mostrar",
@ -439,6 +672,7 @@
"notification_visibility_likes": "Favoritos",
"notification_visibility_mentions": "Menções",
"notification_visibility_moves": "Utilizador Migrado",
"notification_visibility_polls": "Finais de enquetes nas quais você votou",
"notification_visibility_repeats": "Partilhas",
"notifications": "Notificações",
"nsfw_clickthrough": "Ativar clique em anexos e pré-visualizações de links para ocultar anexos NSFW",
@ -446,8 +680,11 @@
"pad_emoji": "Preencher espaços ao adicionar emojis do seletor",
"panelRadius": "Paineis",
"pause_on_unfocused": "Parar transmissão quando a aba não estiver em primeiro plano",
"permit_followback_description": "Automaticamente aprove pedidos de usuários já seguidos",
"play_videos_in_modal": "Reproduzir vídeos diretamente no visualizador de multimédia",
"post_status_content_type": "Tipo de conteúdo do status",
"post_look_feel": "Aspecto das publicações",
"post_status_content_type": "Formato padrão da publicações",
"posts": "Publicações",
"preload_images": "Pré-carregar imagens",
"presets": "Predefinições",
"profile_background": "Pano de fundo de perfil",
@ -461,10 +698,16 @@
"profile_tab": "Perfil",
"radii_help": "Arredondar arestas da interface (em pixel)",
"refresh_token": "Atualizar Token",
"remove_alias": "Remover esse apelido",
"remove_backup": "Remover",
"render_mfm": "Renderizar Misskey do Markdown",
"render_mfm_on_hover": "Pausar animações MFM enquanto se rola a publicação",
"replies_in_timeline": "Respostas na cronologia",
"reply_visibility_all": "Mostrar todas as respostas",
"reply_visibility_following": "Só mostrar respostas direcionadas a mim ou a usuários que sigo",
"reply_visibility_following_short": "Mostrar respostas aos meus seguidores",
"reply_visibility_self": "Só mostrar respostas direcionadas a mim",
"reply_visibility_self_short": "Mostrar respostas apenas pra mim",
"reset_avatar": "Redefinir avatar",
"reset_avatar_confirm": "Tens a certeza que desejas redefinir o avatar?",
"reset_background_confirm": "Tens a certeza que desejas redefinir o fundo?",
@ -472,6 +715,8 @@
"reset_profile_background": "Redefinir fundo de perfil",
"reset_profile_banner": "Redefinir imagem do cabeçalho do perfil",
"revoke_token": "Revogar",
"right_sidebar": "Reverter a ordem das colunas",
"save": "Salvas mudanças",
"saving_err": "Erro ao salvar configurações",
"saving_ok": "Configurações salvas",
"scope_copy": "Copiar opções de privacidade ao responder (Mensagens diretas sempre copiam)",
@ -479,12 +724,36 @@
"search_user_to_mute": "Pesquisar utilizadores que pretende silenciar",
"security": "Segurança",
"security_tab": "Segurança",
"sensitive_by_default": "Marcas as publicações como sensíveis por padrão",
"sensitive_if_subject": "Automaticamente marque as imagens como sensíveis se um aviso de conteúdo é especificado",
"set_new_avatar": "Alterar avatar",
"set_new_mascot": "Definir novo mascote",
"set_new_profile_background": "Alterar o pano de fundo de perfil",
"set_new_profile_banner": "Alterar capa de perfil",
"setting_changed": "As configurações estão diferentes do padrão",
"setting_server_side": "Essas configurações estão vinculadas ao seu perfil e afetarão todas as sessões e clientes",
"settings": "Configurações",
"settings_profile": "Perfis de Configurações",
"settings_profile_creation": "Criar novo perfil",
"settings_profile_creation_new_name_label": "Nome",
"settings_profile_creation_submit": "Criar",
"settings_profile_currently": "Atualmente usando {name} (versão: {version})",
"settings_profile_delete": "Apagar",
"settings_profile_delete_confirm": "Você realmente quer apagar esse perfil?",
"settings_profile_force_sync": "Sincronizar",
"settings_profile_in_use": "Em uso",
"settings_profile_use": "Usar",
"settings_profiles_refresh": "Recarregar perfis de configuração",
"settings_profiles_show": "Mostrar todos os perfis de configuração",
"settings_profiles_unshow": "Esconder todos os perfis de configuração",
"show_admin_badge": "Mostrar título de Administrador em meu perfil",
"show_moderator_badge": "Mostrar título de Moderador em meu perfil",
"show_nav_shortcuts": "Mostrar atalhos de navegação extras no painel de topo",
"show_page_backgrounds": "Mostrar imagens de fundo específicas por página, por exemplo: para perfis de usuários",
"show_panel_nav_shortcuts": "Mostrar atalhos de navegação da linha do tempo no painel de topo",
"show_scrollbars": "Mostrar barras de rolamento na coluna lateral",
"show_wider_shortcuts": "Mostrar espaçamento mais largo entre atalhos no painel de topo",
"show_yous": "Mostrar (seu)s",
"stop_gifs": "Reproduzir GIFs ao passar o cursor",
"streaming": "Habilitar o fluxo automático de postagens no topo da página",
"style": {
@ -633,9 +902,9 @@
"use_source": "Nova versão"
}
},
"subject_input_always_show": "Sempre mostrar campo de assunto",
"subject_line_behavior": "Copiar assunto ao responder",
"subject_line_email": "Como num e-mail: \"re: assunto\"",
"subject_input_always_show": "Sempre mostrar o campo de alerta de conteúdo",
"subject_line_behavior": "Copiar o aviso de conteúdo ao responder",
"subject_line_email": "Como email: \"re: aviso\"",
"subject_line_mastodon": "Como o Mastodon: copiar como está",
"subject_line_noop": "Não copiar",
"text": "Texto",
@ -643,15 +912,29 @@
"theme_help": "Use cores em código hexadecimal (#rrggbb) para personalizar seu esquema de cores.",
"theme_help_v2_1": "Você também pode sobrescrever as cores e opacidade de alguns componentes ao modificar o checkbox, use \"Limpar todos\" para limpar todas as modificações.",
"theme_help_v2_2": "Alguns ícones em registo são indicadores de fundo/contraste de textos, passe por cima para obter informações detalhadas. Tenha em atenção que os indicadores de contraste não funcionam muito bem com transparência.",
"third_column_mode": "Quando há espaço suficiente, mostrar a terceira coluna",
"third_column_mode_none": "Não mostre a terceira coluna de forma alguma",
"third_column_mode_notifications": "Coluna de notificações",
"third_column_mode_postform": "Formulário principal para publicações e navegação",
"token": "Token",
"tooltipRadius": "Dicas/alertas",
"translation_language": "Linguagem Automática para Tradução",
"tree_advanced": "Mostrar botões extras para abrir e fechar cadeias de respostas em fios",
"tree_fade_ancestors": "Mostrar ancestrais da publicação atual em texto fraco",
"type_domains_to_mute": "Pesquisar domínios para silenciar",
"upload_a_photo": "Enviar uma foto",
"useStreamingApi": "Receber publicações e notificações em tempo real",
"useStreamingApiWarning": "É legal usar isso. Se der algum problema, atualize, eu acho?",
"use_blurhash": "Usar miniaturas borradas para imagens NSFW",
"use_contain_fit": "Não cortar o anexo na miniatura",
"use_one_click_nsfw": "Abrir anexos sensíveis com um clique",
"user_accepts_direct_messages_from": "Aceitar DMs De",
"user_accepts_direct_messages_from_everybody": "Todos",
"user_accepts_direct_messages_from_nobody": "Ninguém",
"user_accepts_direct_messages_from_people_i_follow": "Pessoas que eu sigo",
"user_mutes": "Utilizadores",
"user_profile_default_tab": "Aba Padrão no Perfil de Usuário",
"user_profiles": "Perfis de Usuários",
"user_settings": "Configurações de Usuário",
"valid_until": "Válido até",
"values": {
@ -663,34 +946,87 @@
"frontend_version": "Versão do Frontend",
"title": "Versão"
},
"virtual_scrolling": "Otimizar a apresentação da cronologia"
"virtual_scrolling": "Otimizar a apresentação da cronologia",
"word_filter": "Filtro de palavras",
"wordfilter": "Filtro de palavras"
},
"settings_profile": {
"creating": "Criando novo perfil de configurações \"{profile}\"...",
"synchronization_error": "Não foi possível sincronizar as configurações : {err}",
"synchronized": "Configurações sincronizadas!",
"synchronizing": "Sincronizando perfil de configurações \"{profile}\"..."
},
"status": {
"ancestor_follow": "Veja mais {numReplies} outra resposta abaixo dessa publicação | Veja mais {numReplies} outras respostas abaixo dessa publicação",
"ancestor_follow_with_icon": "{icon} {text}",
"attachment_stop_flash": "Parar Flash Player",
"bookmark": "Guardar",
"copy_link": "Copiar o link do post",
"delete": "Eliminar publicação",
"delete_confirm": "Tens a certeza que desejas apagar a publicação?",
"collapse_attachments": "Colapsar anexos",
"copy_link": "Copiar link para publicação",
"delete": "Apagar publicação",
"delete_confirm": "Você realmente deseja apagar essa publicação?",
"delete_confirm_accept_button": "Sim, apague-a",
"delete_confirm_cancel_button": "Não, mantenha-a",
"delete_confirm_title": "Confirmar exclusão",
"edit": "Editar",
"edit_history": "Editar Histórico",
"edit_history_modal_title": "Editado {historyCount} vez | Editado {historyCount} vezes",
"edited_at": "Editado {time}",
"expand": "Expandir",
"external_source": "Fonte externa",
"favorites": "Favoritos",
"hide_attachment": "Esconder anexo",
"hide_content": "Ocultar o conteúdo",
"hide_full_subject": "Ocultar o assunto completo",
"hide_full_subject": "Ocultar todo o aviso de conteúdo",
"many_attachments": "A publicação tem {number} anexo | A publicação tem {number} anexos",
"mentions": "Menções",
"move_down": "Deslocar anexo à direita",
"move_up": "Deslocar anexo à esquerda",
"mute_conversation": "Silenciar a conversação",
"nsfw": "NSFW (Não apropriado para trabalho)",
"open_gallery": "Abrir galeria",
"override_translation_source_language": "Sobrepor a língua de origem",
"pin": "Fixar no perfil",
"pinned": "Afixado",
"plus_more": "+{number} mais",
"redraft": "Apagar & Reformar",
"redraft_confirm": "Você realmente deseja apagar e refazer essa publicação? Interações com a publicação original não serão preservadas.",
"redraft_confirm_accept_button": "Sim, apague e reformule",
"redraft_confirm_cancel_button": "Não, mantenha o original",
"redraft_confirm_title": "Confirmar exclusão & refatoração",
"remove_attachment": "Remover anexo",
"repeat_confirm": "Você realmente deseja repetir essa publicação?",
"repeat_confirm_accept_button": "Sim, repita-a",
"repeat_confirm_cancel_button": "Não, não repita",
"repeat_confirm_title": "Confirmar repetição",
"repeats": "Partilhados",
"replies_list": "Respostas:",
"replies_list_with_others": "Ver mais {numReplies} resposta | Veja mais {numReplies} respostas",
"reply_to": "Responder a",
"show_all_attachments": "Mostrar todos os anexos",
"show_all_conversation": "Mostrar toda a conversa ({numStatus} outra publicação) | Mostrar toda a conversa ({numStatus} outras publicações)",
"show_all_conversation_with_icon": "{icon} {text}",
"show_attachment_description": "Prever a descrição (abra o anexo para a descrição completa)",
"show_attachment_in_modal": "Mostrar anexos em uma janela",
"show_content": "Mostrar o conteúdo",
"show_full_subject": "Mostrar o assunto completo",
"show_full_subject": "Mostra todo o aviso de conteúdo",
"show_only_conversation_under_this": "Mostrar apenas as respostas para essa publicação",
"status_deleted": "Esta publicação foi apagada",
"status_unavailable": "Publicação indisponível",
"thread_follow": "Ver mais {numStatus} resposta | Ver mais {numStatus} respostas",
"thread_follow_with_icon": "{icon} {text}",
"thread_hide": "Esconder esse fio",
"thread_muted": "Conversação silenciada",
"thread_muted_and_words": ", contém:",
"thread_show": "Mostrar esse fio",
"thread_show_full": "Mostrar {numStatus} resposta | Mostrar todas as {numStatus} respostas",
"thread_show_full_with_icon": "{icon} {text}",
"translate": "Traduzir",
"translated_from": "Traduzir de {language}",
"unbookmark": "Remover post dos Items Guardados",
"unmute_conversation": "Mostrar a conversação",
"unpin": "Desafixar do perfil"
"unpin": "Desafixar do perfil",
"you": "(Você)"
},
"time": {
"in_future": "em {0}",
@ -718,21 +1054,29 @@
"collapse": "Esconder",
"conversation": "Conversa",
"error": "Erro a obter a cronologia: {0}",
"load_older": "Carregar postagens antigas",
"follow_tag": "Seguir hashtag",
"load_older": "Carregar publicações antigas",
"no_more_statuses": "Sem mais posts",
"no_retweet_hint": "Posts apenas para seguidores ou diretos não podem ser partilhados",
"no_statuses": "Sem posts",
"no_statuses": "Sem publicações",
"reload": "Recarregar",
"repeated": "partilhado",
"show_new": "Mostrar novas",
"socket_broke": "Conexão em tempo real perdida : CloseEvent código {0}",
"socket_reconnected": "Conexão em tempo-real estabelecida",
"unfollow_tag": "Deixar de seguir hashtag",
"up_to_date": "Atualizado"
},
"toast": {
"no_translation_target_set": "Linguagem alvo para tradução não definida - isso pode falhar. Por favor, defina uma linguagem alvo nas suas configurações."
},
"tool_tip": {
"accept_follow_request": "Aceitar o pedido de seguimento",
"add_reaction": "Adicionar Reação",
"bookmark": "Guardar",
"favorite": "Favoritar",
"media_upload": "Envio de multimédia",
"quote": "Citação",
"reject_follow_request": "Rejeitar o pedido de seguimento",
"repeat": "Partilhar",
"reply": "Responder",
@ -759,6 +1103,7 @@
"deactivate_account": "Desativar conta",
"delete_account": "Eliminar Conta",
"delete_user": "Eliminar utilizador",
"delete_user_data_and_deactivate_confirmation": "Isso irá permanentemente apagar os dados dessa conta e a desativar. Você tem certeza disso?",
"disable_any_subscription": "Não permitir que nenhum utilizador te siga",
"disable_remote_subscription": "Não permitir seguidores de instâncias remotas",
"force_nsfw": "Marcar todas as publicações como NSFW (não apropriado para o trabalho)",
@ -773,41 +1118,84 @@
"strip_media": "Eliminar ficheiros multimédia das publicações"
},
"approve": "Aprovar",
"approve_confirm": "Você tem certeza que deseja permitir que esse usuário lhe siga?",
"approve_confirm_accept_button": "Sim, aceitar",
"approve_confirm_cancel_button": "No, cancelar",
"approve_confirm_title": "Aprovar pedido para seguir",
"block": "Bloquear",
"block_confirm": "Você tem certeza que deseja bloquear {user}?",
"block_confirm_accept_button": "Sim, bloquear",
"block_confirm_cancel_button": "Não, não bloqueie",
"block_confirm_title": "Bloquear usuário",
"block_progress": "A bloquear…",
"blocked": "Bloqueado!",
"blocks_you": "Bloqueia você!",
"bot": "Bot",
"deactivated": "Desativado",
"deny": "Negar",
"deny_confirm": "Você tem certeza que deseja negar o pedido de te seguir desse usuário?",
"deny_confirm_accept_button": "Sim, negar",
"deny_confirm_cancel_button": "Não, cancelar",
"deny_confirm_title": "Negar pedido para seguir",
"domain_muted": "Desbloquear domínio",
"edit_profile": "Editar perfil",
"favorites": "Favoritos",
"follow": "Seguir",
"follow_cancel": "Cancelar pedido",
"follow_progress": "Enviando…",
"follow_sent": "Pedido enviado!",
"follow_tag": "Seguir hashtag",
"follow_unfollow": "Deixar de seguir",
"followed_tags": "Hashtags seguidas",
"followed_users": "Usuários seguidos",
"followees": "Seguindo",
"followers": "Seguidores",
"following": "Seguindo!",
"follows_you": "Segue você!",
"hidden": "Ocultar",
"hide_repeats": "Ocultar partilhas",
"highlight": {
"disabled": "Sem destaques",
"side": "Faixa lateral",
"solid": "Fundo sólido",
"striped": "Fundo listrado"
},
"its_you": "É você!",
"media": "Multimédia",
"mention": "Mencionar",
"message": "Mensagem",
"mute": "Silenciar",
"mute_confirm": "Você tem certeza que deseja silenciar {user}?",
"mute_confirm_accept_button": "Sim, silenciar",
"mute_confirm_cancel_button": "Não, não silenciar",
"mute_confirm_title": "Silenciar usuário",
"mute_domain": "Bloquear domínio",
"mute_progress": "A silenciar…",
"muted": "Silenciado",
"not_following_any_hashtags": "Você não está seguindo nenhuma hashtag",
"note": "Nota privada",
"per_day": "por dia",
"remote_follow": "Seguir remotamente",
"remove_follower": "Remover seguidor",
"replies": "Com Respostas",
"report": "Denunciar",
"requested_by": "Pediu para te seguir",
"show_repeats": "Mostrar partilhas",
"statuses": "Postagens",
"statuses": "Publicações",
"subscribe": "Subscrever",
"unblock": "Desbloquear",
"unblock_progress": "A desbloquear…",
"unfollow_confirm": "Você tem certeza que deseja deixar de seguir {user}?",
"unfollow_confirm_accept_button": "Sim, deixar de seguir",
"unfollow_confirm_cancel_button": "Não, não deixe de seguir",
"unfollow_confirm_title": "Deixar de seguir usuário",
"unfollow_tag": "Deixar de seguir hashtag",
"unmute": "Retirar silêncio",
"unmute_progress": "A retirar silêncio…",
"unsubscribe": "Retirar subscrição"
},
"user_profile": {
"field_validated": "Link Verificado",
"profile_does_not_exist": "Desculpe, este perfil não existe.",
"profile_loading_error": "Desculpe, houve um erro ao carregar este perfil.",
"timeline_title": "Cronologia do Utilizador"

Some files were not shown because too many files have changed in this diff Show more