From 8feffbcdf6095d4d117d8e16d2b17ca2d166ae5c Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Fri, 26 May 2023 22:49:29 -0400 Subject: [PATCH 01/23] docs: Update Pleroma references to Akkoma --- docs/docs/CONFIGURATION.md | 16 ++++++++-------- docs/docs/HACKING.md | 14 +++++++------- docs/docs/assets/example_emoji.png | Bin 491 -> 905 bytes docs/docs/index.md | 8 ++++---- docs/docs/stickers.md | 6 +++--- docs/docs/user_guide/index.md | 4 ++-- .../posting_reading_basic_functions.md | 16 ++++++++-------- docs/docs/user_guide/settings.md | 2 +- docs/docs/user_guide/users_follow_mute_block.md | 2 +- docs/mkdocs.yml | 6 +++--- docs/theme/partials/source.html | 8 ++++---- 11 files changed, 41 insertions(+), 41 deletions(-) diff --git a/docs/docs/CONFIGURATION.md b/docs/docs/CONFIGURATION.md index d7b25802..4414f6de 100644 --- a/docs/docs/CONFIGURATION.md +++ b/docs/docs/CONFIGURATION.md @@ -1,15 +1,15 @@ -# Pleroma-FE configuration and customization for instance administrators +# Akkoma-FE configuration and customization for instance administrators -* *For user configuration, see [Pleroma-FE user guide](../user_guide)* +* *For user configuration, see [Akkoma-FE user guide](../user_guide)* * *For local development server configuration, see [Hacking, tweaking, contributing](HACKING.md)* ## Where configuration is stored -PleromaFE gets its configuration from several sources, in order of preference (the one above overrides ones below it) +Akkoma-FE gets its configuration from several sources, in order of preference (the one above overrides ones below it) -1. `/api/statusnet/config.json` - this is generated on Backend and contains multiple things including instance name, char limit etc. It also contains FE/Client-specific data, PleromaFE uses `pleromafe` field of it. For more info on changing config on BE, look [here](https://docs.akkoma.dev/stable/configuration/cheatsheet.md#frontend_configurations) -2. `/static/config.json` - this is a static FE-provided file, containing only FE specific configuration. This file is completely optional and could be removed but is useful as a fallback if some configuration JSON property isn't present in BE-provided config. It's also a reference point to check what default configuration are and what JSON properties even exist. In local dev mode it could be used to override BE configuration, more about that in HACKING.md. File is located [here](https://akkoma.dev/AkkomaGang/pleroma-fe/src/branch/develop/static/config.json). -3. Built-in defaults. Those are hard-coded defaults that are used when `/static/config.json` is not available and BE-provided configuration JSON is missing some JSON properties. ( [Code](https://akkoma.dev/AkkomaGang/pleroma-fe/src/branch/develop/src/modules/instance.js) ) +1. `/api/statusnet/config.json` - this is generated on Backend and contains multiple things including instance name, char limit etc. It also contains FE/Client-specific data, Akkoma-FE uses `pleromafe` field of it. For more info on changing config on BE, look [here](https://docs.akkoma.dev/stable/configuration/cheatsheet.md#frontend_configurations) +2. `/static/config.json` - this is a static FE-provided file, containing only FE specific configuration. This file is completely optional and could be removed but is useful as a fallback if some configuration JSON property isn't present in BE-provided config. It's also a reference point to check what default configuration are and what JSON properties even exist. In local dev mode it could be used to override BE configuration, more about that in HACKING.md. File is located [here](https://akkoma.dev/AkkomaGang/akkoma-fe/src/branch/develop/static/config.json). +3. Built-in defaults. Those are hard-coded defaults that are used when `/static/config.json` is not available and BE-provided configuration JSON is missing some JSON properties. ( [Code](https://akkoma.dev/AkkomaGang/akkoma-fe/src/branch/develop/src/modules/instance.js) ) ## Instance-defaults @@ -59,7 +59,7 @@ Instance `logo`, could be any image, including svg. By default it assumes logo u `logoMargin` allows you to adjust vertical margins between logo boundary and navbar borders. The idea is that to have logo's image without any extra margins and instead adjust them to your need in layout. ### `minimalScopesMode` -Limit scope selection to *Direct*, *User default* and *Scope of post replying to*. This also makes it impossible to reply to a DM with a non-DM post from PleromaFE. +Limit scope selection to *Direct*, *User default* and *Scope of post replying to*. This also makes it impossible to reply to a DM with a non-DM post from Akkoma-FE. ### `nsfwCensorImage` Use custom image for NSFW'd images @@ -77,7 +77,7 @@ Change alignment of sidebar and panels to the right. Defaults to `false`. Show panel showcasing instance features/settings to logged-out visitors ### `showInstanceSpecificPanel` -This allows you to include arbitrary HTML content in a panel below navigation menu. PleromaFE looks for an html page `instance/panel.html`, by default it's not provided in FE, but BE bundles some [default one](https://git.pleroma.social/pleroma/pleroma/blob/develop/priv/static/instance/panel.html). De-facto instance-defaults, since user can hide instance-specific panel. +This allows you to include arbitrary HTML content in a panel below navigation menu. Akkoma-FE looks for an html page `instance/panel.html`, by default it's not provided in FE, but BE bundles some [default one](https://git.pleroma.social/pleroma/pleroma/blob/develop/priv/static/instance/panel.html). De-facto instance-defaults, since user can hide instance-specific panel. ### `subjectLineBehavior` How to handle subject line (CW) when replying to a post. diff --git a/docs/docs/HACKING.md b/docs/docs/HACKING.md index 4cabb9bf..753fbccb 100644 --- a/docs/docs/HACKING.md +++ b/docs/docs/HACKING.md @@ -1,8 +1,8 @@ # Hacking, tweaking, contributing -## What PleromaFE even is, how it works +## What Akkoma-FE even is, how it works -PleromaFE is an SPA (Single-Page Application) backed by [Vue](https://vuejs.org/) framework. It means that it's just a nearly-empty HTML page with bunch of JavaScript that actually generates and controls DOM (i.e. html elements) in Runtime. Currently, there's no way around it - you have to have Javascript enabled in the browser to make it work, there is a theoretical possibility to generate some HTML server-side but it's not implemented yet. +Akkoma-FE is an SPA (Single-Page Application) backed by [Vue](https://vuejs.org/) framework. It means that it's just a nearly-empty HTML page with bunch of JavaScript that actually generates and controls DOM (i.e. html elements) in Runtime. Currently, there's no way around it - you have to have Javascript enabled in the browser to make it work, there is a theoretical possibility to generate some HTML server-side but it's not implemented yet. You can serve static html page and everything from any HTTP(S) server but currently it will try to access /api/ path at same domain it's running on, meaning that as of right now you cannot put it on one domain and access the other without proxying requests. @@ -67,19 +67,19 @@ server { ### API, Data, Operations -In 99% cases PleromaFE uses [MastoAPI](https://docs.joinmastodon.org/api/) with [Pleroma Extensions](https://docs.akkoma.dev/stable/differences_in_mastoapi_responses.md) to fetch the data. The rest is either QvitterAPI leftovers or pleroma-exclusive APIs. QvitterAPI doesn't exactly have documentation and uses different JSON structure and sometimes different parameters and workflows, [this](https://twitter-api.readthedocs.io/en/latest/index.html) could be a good reference though. Some pleroma-exclusive API may still be using QvitterAPI JSON structure. +In 99% cases Akkoma-FE uses [MastoAPI](https://docs.joinmastodon.org/api/) with [Pleroma Extensions](https://docs.akkoma.dev/stable/differences_in_mastoapi_responses.md) to fetch the data. The rest is either QvitterAPI leftovers or pleroma-exclusive APIs. QvitterAPI doesn't exactly have documentation and uses different JSON structure and sometimes different parameters and workflows, [this](https://twitter-api.readthedocs.io/en/latest/index.html) could be a good reference though. Some pleroma-exclusive API may still be using QvitterAPI JSON structure. -PleromaFE supports both formats by transforming them into internal format which is basically QvitterAPI one with some additions and renaming. All data is passed trough [Entity Normalizer](https://git.pleroma.social/pleroma/pleroma-fe/-/blob/develop/src/services/entity_normalizer/entity_normalizer.service.js) which can serve as a reference of API and what's actually used, it's also a host for all the hacks and data transformation. +Akkoma-FE supports both formats by transforming them into internal format which is basically QvitterAPI one with some additions and renaming. All data is passed trough [Entity Normalizer](https://akkoma.dev/AkkomaGang/akkoma-fe/src/branch/develop/src/services/entity_normalizer/entity_normalizer.service.js) which can serve as a reference of API and what's actually used, it's also a host for all the hacks and data transformation. -For most part, PleromaFE tries to store all the info it can get in global vuex store - every user and post are passed trough updating mechanism where data is either added or merged with existing data, reactively updating the information throughout UI, so if in newest request user's post counter increased, it will be instantly updated in open user profile cards. This is also used to find users, posts and sometimes to build timelines and/or request parameters. +For most part, Akkoma-FE tries to store all the info it can get in global vuex store - every user and post are passed trough updating mechanism where data is either added or merged with existing data, reactively updating the information throughout UI, so if in newest request user's post counter increased, it will be instantly updated in open user profile cards. This is also used to find users, posts and sometimes to build timelines and/or request parameters. -PleromaFE also tries to persist this store, however only stable data is stored, such as user authentication and preferences, user highlights. Persistence is performed by saving and loading chunk of vuex store in browser's LocalStorage/IndexedDB. +Akkoma-FE also tries to persist this store, however only stable data is stored, such as user authentication and preferences, user highlights. Persistence is performed by saving and loading chunk of vuex store in browser's LocalStorage/IndexedDB. TODO: Refactor API code and document it here ### Themes -PleromaFE uses custom theme "framework" which is pretty much just a style tag rendered by vue which only contains CSS3 variables. Every color used in UI should be derived from theme. Theme is stored in a JSON object containing color, opacity, shadow and font information, with most of it being optional. +Akkoma-FE uses custom theme "framework" which is pretty much just a style tag rendered by vue which only contains CSS3 variables. Every color used in UI should be derived from theme. Theme is stored in a JSON object containing color, opacity, shadow and font information, with most of it being optional. The most basic theme can consist of 4 to 8 "basic colors", which is also what previous version of themes allowed, with all other colors being derived from those basic colors, i.e. "light background" will be "background" color lightened/darkened, "panel header" will be same as "foreground". The idea is that you can specify just basic color palette and everything else will be generated automatically, but if you really need to tweak some specific color - you can. diff --git a/docs/docs/assets/example_emoji.png b/docs/docs/assets/example_emoji.png index 0a22a256b00f1fbe962cd1988ec4df5cb6024bec..4a6db05cbc53ad9baf1076f8d2afbfaf2934b731 100644 GIT binary patch literal 905 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4zl0AZa85pY67#JE_7#My5g&JNk zFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{XiajiKnkC`*T)lCIhX0k+1eZ z`CLyI#}JR>Q>XZPganElug{-T=p$>&deKhoki;&Ix5j6Ty^?2L8OUm5yz%0hprgSEqr!A>E52o@0IiYp69-^mfv4} zZs+s3b|sgeuCneO#hqJ%eIgWNI9#u+R7@>#H~d>}aBG3xS&yh|hJhvrxZhvtC^A~s zwumvWVCK1usLGuJQhL9yFVXg@e8~NZhiTEV_$C$Um5P4TT%Tn;G0C<2U2eB#TEWhB zFQ*5c@|tAirKue379y&n@F-f}u&v|aj%hOzS$~`kT6bfEoXZyf=BSVvJ}+8UrMOq* zdcW8p*RFJ_YQf&h`vx9c^Ri55hOO6H%b_R|y#Mu&(Cek)!D2@?ty^`kNx-T7OY|g@ zb$5$IuJhS$d1koaD`SJes>{Wmm-g^g#AaR=H_r&%Z0E8*AYsA-h20Dl2RAI2elB>N z@rNh>(=C&i%rkoAa>9-KH#28n5Yqv5v6_{>yH>kp?c_KT>CX8%rJ1#4$5-#gS%usM zTVnI~Y-tZoyeGD~MNjL_RkJ+fBk7B_TsoL`e(_wfxaOy>LaVN7uhm_C=AL_vY=+v& zTbnN5xmO>%Ehv^Hp*#E;m&59#wbK~uBxbQ?y=f3Ki)5Jo^4YY7o--=N7y>8r90>m9 zSv-G=f4J8jzJjnhXU)$UaqfAt*nhU^vE%F>#>p-Eh4a!GdHoE&>^)&TWJk?%Nw%ax5p6*@q{Y1&jxxba>ny{Zd$;@!W*_`v9(TR+8LCX`e z)9ihF3Y%H~Ygo6+>{*x6d~B*_G=ro0XAhCApX{!Sqdx5Nn$8AHi>f8A5hW>!C8<`) zMX5lF!N|bKSl7T**T_7?z{twP+{(mA+rYrez<^o(%}o>yx%nxXX_X)iM!JSZy2b_} z2F6xK7FNc_5DgLMepUcAXuxeK$;?eHE=kNSK)1vKZpoDtJ#(NQ22WQ%mvv4FO#nPW BY|a1x delta 476 zcmV<20VDp22kQfn8Gi-<0047(dh`GQ00v@9M??Ss00000`9r&Z00009a7bBm000fw z000fw0YWI7cmMzZ2XskIMF-;v4-Fm408UAnP9L~%Lz@ay`%}K!w;HNw?g=F1)imeE}sdYh0v5W!<$-M9d z+YOL9YGh~%%>n!xisiH$IMms|c(2Y)B1547aU)0gJO#jL$U}?YZHYg<&k%{d7YAT0 zV1NHI^#d@`r!&&+v8>sMBy0iLO2K4*>B__w!1YU3Ex>19ss$*eDgY$| z2zsj30ys5=Ct#%WEbcuNw-x`T>FwJ}5mo?7{~q{Dv%^6Kn(Hic;fo|&$FJo9=xVHC zu)W@TgFa`~rodGt)B). You can read more about it's basic functionality in the [Pleroma-FE User Guide](./user_guide/). We also have [a guide for administrators](./CONFIGURATION.md) and for [hackers/contributors](./HACKING.md). +If your instance uses Akkoma-FE, you can acces it by going to your instance (e.g. ). You can read more about it's basic functionality in the [Akkoma-FE User Guide](./user_guide/). We also have [a guide for administrators](./CONFIGURATION.md) and for [hackers/contributors](./HACKING.md). diff --git a/docs/docs/stickers.md b/docs/docs/stickers.md index ac4a1eca..3377dfaa 100644 --- a/docs/docs/stickers.md +++ b/docs/docs/stickers.md @@ -1,13 +1,13 @@ # Adding stickers -Pleroma-fe supports stickers, which are essentially little images stored server-side +Akkoma-FE supports stickers, which are essentially little images stored server-side which can be selected by a user to automatically attach them to a post. There's no explicit setting for these, they just rely on the existence of certain files. ## Initialising the sticker config file -You're probably serving pleroma-fe from your instance's `instance/static/` directory - +You're probably serving Akkoma-FE from your instance's `instance/static/` directory - this directy can also override files served at a given path. The first thing we need to do is set up our `stickers.json` file. At `instance/static/static/stickers.json`, @@ -50,4 +50,4 @@ The `tabIcon` will appear on the sticker picker itself as a representative of th You can add as many stickers as you like. They should all be in the same directory as your `pack.json`. -Now you should find that there's a sticky note icon on the emoji picker on pleroma-fe that allows you to attach stickers. +Now you should find that there's a sticky note icon on the emoji picker on Akkoma-FE that allows you to attach stickers. diff --git a/docs/docs/user_guide/index.md b/docs/docs/user_guide/index.md index ce4f69c2..2342ef92 100644 --- a/docs/docs/user_guide/index.md +++ b/docs/docs/user_guide/index.md @@ -8,13 +8,13 @@ > > --Catbag -Pleroma-FE is the default user-facing frontend for Pleroma. If your instance uses Pleroma-FE, you can access it by going to your instance (e.g. ). After logging in you will have two columns in front of you. Here we're going to keep it to the default behaviour, but some instances swap the left and right columns. If you're on such an instance what we refer to as the left column will be on your right and vice versa. +Akkoma-FE is the default user-facing frontend for Pleroma. If your instance uses Akkoma-FE, you can access it by going to your instance (e.g. ). After logging in you will have two columns in front of you. Here we're going to keep it to the default behaviour, but some instances swap the left and right columns. If you're on such an instance what we refer to as the left column will be on your right and vice versa. ### Left column - first block: This section is dedicated to [posting](posting_reading_basic_functions.md) - second block: Here you can switch between the different views for the right column. -- Optional third block: This is the Instance panel that can be activated, but is deactivated by default. It's fully customisable by instance admins and by default has links to the Pleroma-FE and Mastodon-FE. +- Optional third block: This is the Instance panel that can be activated, but is deactivated by default. It's fully customisable by instance admins and by default has links to the Akkoma-FE and Mastodon-FE. - fourth block: This is the Notifications block, here you will get notified whenever somebody mentions you, follows you, repeats or favorites one of your statuses ### Right column diff --git a/docs/docs/user_guide/posting_reading_basic_functions.md b/docs/docs/user_guide/posting_reading_basic_functions.md index 1a4a12d5..44f15673 100644 --- a/docs/docs/user_guide/posting_reading_basic_functions.md +++ b/docs/docs/user_guide/posting_reading_basic_functions.md @@ -15,13 +15,13 @@ Posts will contain the text you are posting, but some content will be modified: Let's clear up some basic stuff. When you post something it's called a **post** or it could be called a **status** or even a **toot** or a **prööt** depending on whom you ask. Post has body/content but it also has some other stuff in it - from attachments, visibility scope, subject line... **Emoji** are small images embedded in text, there are two major types of emoji: [unicode emoji](https://en.wikipedia.org/wiki/Emoji) and custom emoji. While unicode emoji are universal and standardized, they can appear differently depending on where you are using them or may not appear at all on older systems. Custom emoji are a more *fun* kind - instance administrator can define many images as *custom emoji* for their users. This works very simple - custom emoji is defined by its *shortcode* and an image, so that any shortcode enclosed in colons get replaced with image if such shortcode exist. -Let's say there's a `:pleroma:` emoji defined on an instance. That means -> First time using :pleroma: pleroma! +Let's say there's a `:akkoma:` emoji defined on an instance. That means +> First time using :akkoma: akkoma! -will become -> First time using ![pleroma](../assets/example_emoji.png) pleroma! +will become +> First time using ![akkoma](../assets/example_emoji.png) akkoma! -Note that you can only use emoji defined on your instance, you cannot "copy" someone else's emoji, and will have to ask your administrator to copy emoji from other instance to yours. +Note that you can only use emoji defined on your instance, you cannot "copy" someone else's emoji, and will have to ask your administrator to copy emoji from other instance to yours. Lastly, there's two convenience options for emoji: an emoji picker (smiley face to the right of "submit" button) and autocomplete suggestions - when you start typing :shortcode: it will automatically try to suggest you emoji and complete the shortcode for you if you select one. If emoji doesn't show up in suggestions nor in emoji picker it means there's no such emoji on your instance, if shortcode doesn't match any defined emoji it will appear as text. **Attachments** are fairly simple - you can attach any file to a post as long as the file is within maximum size limits. If you're uploading explicit material you can mark all of your attachments as sensitive (or add the `#nsfw` tag) - it will hide the images and videos behind a warning so that it won't be displayed instantly. @@ -42,7 +42,7 @@ A few things to consider about the security and usage of these scopes: - Changing scopes during a thread or adding people to a direct message will not retroactively make them see the whole conversation. If you add someone to a direct message conversation, they will not see the post that happened before they were mentioned. * **Reply-to** if you are replying to someone, your post will also contain a note that your post is referring to the post you're replying to. Person you're replying to will receive a notification *even* if you remove them from mentioned people. You won't receive notifications when replying to your own posts, but it's useful to reply to your own posts to provide people some context if it's a follow-up to a previous post. There's a small "Reply to ..." label under post author's name which you can hover on to see what post it's referring to. -Sometimes you may encounter posts that seem different than what they are supposed to. For example, you might see a direct message without any mentions in the text. This can happen because internally, the Fediverse has a different addressing mechanism similar to email, with `to` and `cc` fields. While these are not directly accessible in PleromaFE, other software in the Fediverse might generate those posts. Do not worry in these cases, these are normal and not a bug. +Sometimes you may encounter posts that seem different than what they are supposed to. For example, you might see a direct message without any mentions in the text. This can happen because internally, the Fediverse has a different addressing mechanism similar to email, with `to` and `cc` fields. While these are not directly accessible in Akkoma-FE, other software in the Fediverse might generate those posts. Do not worry in these cases, these are normal and not a bug. ## Rich text @@ -51,7 +51,7 @@ By default new posts you make are plaintext, meaning you can't make text **bold* Here is a small example of some text in markdown. ``` -This is an example of markdown text using **bold** and *cursive* text. +This is an example of markdown text using **bold** and *cursive* text. To get a newline we add two spaces at the end of the previous line. Let's also add a list @@ -67,7 +67,7 @@ If you set the input-method to Markdown, and post this, it will look something l ## Misskey markdown -The akkoma version of pleroma-fe includes support for writing and rendering +Akkoma-FE includes support for writing and rendering misskey markdown (MFM). To write this you will need to select "MFM" from the content type dropdown (if supported), and then you can format text [in MFM](https://akkoma.dev/sfr/marked-mfm/src/branch/master/docs/syntax.md). diff --git a/docs/docs/user_guide/settings.md b/docs/docs/user_guide/settings.md index ef9306c5..cf6bd8fa 100644 --- a/docs/docs/user_guide/settings.md +++ b/docs/docs/user_guide/settings.md @@ -83,7 +83,7 @@ Here you can change your password, revoke access tokens, configure 2-factor auth ## Theme -Here you can change the look and feel of Pleroma-FE. You can choose from several instance-provided presets and you can load one from file and save current theme to file. Before you apply new theme you can see what it will look like approximately in preview section. +Here you can change the look and feel of Akkoma-FE. You can choose from several instance-provided presets and you can load one from file and save current theme to file. Before you apply new theme you can see what it will look like approximately in preview section. The themes engine was made to be easy to use while giving an option for powerful in-depth customization - you can just tweak colors on "Common" tab and leave everything else as is. diff --git a/docs/docs/user_guide/users_follow_mute_block.md b/docs/docs/user_guide/users_follow_mute_block.md index 530b98a4..168b0073 100644 --- a/docs/docs/user_guide/users_follow_mute_block.md +++ b/docs/docs/user_guide/users_follow_mute_block.md @@ -4,7 +4,7 @@ When you see someone, you can click on their user picture to view their profile, **Following** is self-explanatory, it adds them to your Home Timeline, lists you as a follower and gives you access to follower-only posts if they have any. -**Muting** collapses posts and notifications made by them, giving you an option to see the post if you're curious. Clients other than PleromaFE may completely remove their posts. +**Muting** collapses posts and notifications made by them, giving you an option to see the post if you're curious. Clients other than Akkoma-FE may completely remove their posts. **Blocking** a user removes them from your timeline and notifications and prevents them from following you (automatically unfollows them from you). diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 73fca986..38a02b32 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -1,4 +1,4 @@ -site_name: Pleroma-FE Documentation +site_name: Akkoma-FE Documentation theme: favicon: 'images/pleroma_logo_vector_bg_32.png' name: 'material' @@ -14,8 +14,8 @@ theme: extra_css: - css/extra.css -repo_name: 'AkkomaGang/pleroma-fe' -repo_url: 'https://akkoma.dev/AkkomaGang/pleroma-fe' +repo_name: 'AkkomaGang/akkoma-fe' +repo_url: 'https://akkoma.dev/AkkomaGang/akkoma-fe' extra: repo_icon: gitea diff --git a/docs/theme/partials/source.html b/docs/theme/partials/source.html index 3ed0fff2..3b10223b 100644 --- a/docs/theme/partials/source.html +++ b/docs/theme/partials/source.html @@ -38,11 +38,11 @@ {% endif %} {% if page and page.url.startswith('backend') %} - {% set repo_url = "https://git.pleroma.social/pleroma/pleroma" %} - {% set repo_name = "pleroma/pleroma" %} + {% set repo_url = "https://akkoma.dev/AkkomaGang/akkoma" %} + {% set repo_name = "AkkomaGang/akkoma" %} {% elif page and page.url.startswith('frontend') %} - {% set repo_url = "https://git.pleroma.social/pleroma/pleroma-fe" %} - {% set repo_name = "pleroma/pleroma-fe" %} + {% set repo_url = "https://akkoma.dev/AkkomaGang/akkoma-fe" %} + {% set repo_name = "AkkomaGang/akkoma-fe" %} {% else %} {% set repo_url = config.repo_url %} {% set repo_name = config.repo_name %} From 57f70371a9a0b9e038c1d457c7341154abcd6f8d Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Fri, 26 May 2023 22:59:55 -0400 Subject: [PATCH 02/23] use better example emoji --- docs/docs/assets/example_emoji.png | Bin 905 -> 1474 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/docs/assets/example_emoji.png b/docs/docs/assets/example_emoji.png index 4a6db05cbc53ad9baf1076f8d2afbfaf2934b731..002c34c1d5c7349b82b31192c6065e6aa3559437 100644 GIT binary patch delta 1339 zcmeBVKg2yjl7pFnfx%@-*RhF;di6|J0X`wF-8E|_G_F6e)c5g(yB1E_Q=U36%%T0>trv6pcI?}Baod{H$M#=~^XNIY@7l&? z$NkJ2Gef7`xcoTUwX3ys#n;b2@}p-|rp=Fa?|$~^ZEocBjmwWG`Sx#GaUvsR%8RG( zuU&k!YW|_-qGd0hyqndt{m7oH%jX;{il3DhG-*ofCO6$`XRZ3mK&xg?gIZUeDtEnV zppStb`u+Qli*{w0LmSZH|NsAY(W-RSsV+&Jed)|SpwB|>T3xiOyp8H6HE(?T`ct$^ z*UulnzkU7TZ_xyF955ietJmDT^7zSv*OAVhZaUSzrVYS=`TXho?_YoZ{rv|7fByXW z`Qz80-+%qg8|yvvYybZJ>!Du*^!lm8H-G;8{p$JqK+7h7^Tx)4rT_l@{q^(r=_9vF z66gH;`_~m{v2p#ISD%jWzy9vc=f8jcgxR;(`t*bo2i07YnEEao4K}wr+8(*Qf}wZA}fB2n@Y@ zH=l>tw7Th4KfeF^$M;`BR?RP;eE>%G$M;`-Od8Igy!+?R-w*G;e);tM?W<3pKYrW1 z@??NTlZQcVenv5NI7w6VJOBEjO zija8lnBR5lqJ0ZDYMO0hTDK^20qfb>g==%06huWu6IkEM&W&wcs8N5Rc`N*SK0}C+U{2`VA4}v~nne5-{8#s1Io~SR>dw-QLdH&s zTu!P>lakZD&U5k1u}#+tSe0|HW{BMD2L!}S*-~*bXhqY7 zR4<3XRF9|t#+RY7a+NWt*>4lU&PG(WCG8n*#3nFHpqE8&S7k;S#zZ=V95@Hrtb45daVX# zvz91` ze&ufL68)L|p6`Zm|00Fdm-jAMxP0s4@^SS2R>8m^^f_s{19R?=$5E?G~*Q6^-dEpD{3<9FYUxFkXsUc35MdoPaG;KcncRs9^aJjDO zmr}|~k}^suBU46H6)Yg)TQ4z&h=1X@mY87$_{&nR*svZ%v`>RtRG3WYgsNmmcx_AQ zupWmZ(t4o1dEYQdwQg!PnO3hVtq36$Q@`u@Ro8V_Qx?RsuBzUG5JHFaTaq-c-EtJy z4n4HyF`)GUfDo$Fb4k*?4tQN@(-${rQL{couTWr+;2^sIc)_rz8|M+n0e|>O59PFz zq@FV3M94-9`vVD%QUbsy7JR8qx~oQNxd_BrM+x&}g9UWB^-H5_aSL#?U2nX!hgD(T z7PEvdD%{mJZZpJZqO{V%X3wLY7G8tpMG~sjE3GZ3%-%pSg?`c&%8TZ`U%mM5wVdrDe8 zw<(>=jjZ>`bm^V@BAqk`$;kr%*h4o7-ZIE&u2QF9Yi2)9jB$en{~ahhg&e%DWP`?) zDO&(RH}gmoYWW96qgwE~N|y$cAO#{1G&edlGAl4JIxsK;C+yjiQ3V_oGcZ&zGdeOj wIx{mXFfckWFj&s{c$0z!B^xw2Iy5pXFfckWFw|r&Hvj+t07*qoM6N<$g5yz5R{#J2 From 2d387e2eb40042a5a947eb28b67290b425a81134 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Fri, 26 May 2023 23:02:38 -0400 Subject: [PATCH 03/23] update more images --- docs/docs/images/akkoma_logo_vector_bg_32.png | Bin 0 -> 1474 bytes docs/docs/images/akkoma_logo_vector_nobg.svg | 24 +++++ .../docs/images/pleroma_logo_vector_bg_32.png | Bin 530 -> 0 bytes docs/docs/images/pleroma_logo_vector_nobg.svg | 92 ------------------ docs/mkdocs.yml | 4 +- 5 files changed, 26 insertions(+), 94 deletions(-) create mode 100644 docs/docs/images/akkoma_logo_vector_bg_32.png create mode 100644 docs/docs/images/akkoma_logo_vector_nobg.svg delete mode 100644 docs/docs/images/pleroma_logo_vector_bg_32.png delete mode 100644 docs/docs/images/pleroma_logo_vector_nobg.svg diff --git a/docs/docs/images/akkoma_logo_vector_bg_32.png b/docs/docs/images/akkoma_logo_vector_bg_32.png new file mode 100644 index 0000000000000000000000000000000000000000..002c34c1d5c7349b82b31192c6065e6aa3559437 GIT binary patch literal 1474 zcmb_aX;71A5dH$~1pN#ZgQ1 zfF=L{S~x7407ZjM->we5=mK8TX5x<}I0Hb;_W%%|2motPDSi?FB0&I{_5}cBCIIZC z<4-ie4wVV0${9>1*aEy%3rMivWi*NKaoBS_iI5MfeOY0Tw(Ud)5uj^STZ zs@mU3aOSb8aS!`Chuu$cTV4(3ra!BE&{kjB{p?9+ePz#iRFb5B>>BkRpIhG3E`2WU zTA2Hs8u#dNVbehONNssnS$<=7>eJW|;d{x%VDD%}No#p=%iW9`0l)Sq@?8(xpQS^S zIX9~7t9q)++M8ayy@b8qRR30VzuCo-73|I*>>KsM@Hmmh%S-aBUYXH>dESmG;~!_K zo_9n=&3?{l;^LOeME>L-^KW}Tmgc=q2){o$HkWn%X=Cj`QO>JypR7Q_O+H8LV9KyR z677aez=5$ClNd)c2Ba5~qfjW(#?ckV3lLPjS%3F=ya$ zHxop&GcqqUZ&j{XS(dw6v!ULgF{UueB>kgfA7(u5lO0SL&KB{|Se9g86l=E~f?bEcZ`NeN@pO#cgrN@t4>Ci;jrK~fExR7(VI-A}RY!X+NSM80W?Tn%*9=B#D z7neWFH`X_x9XTFlw!M}Nznc`?s&zDDp0!Ct8AcILa>)1$XmnD^1n~sN!Hh9FJR|?I zMnEP^jW0lpUYuWcIu_s6`d+D2EzB){mVKF>mMtx=l$W&Pt=U*G_UdKg<_Wsd2`*+)amt2X@y$#cgz)GiKX_#z8e3y&*2F z6~fHp&?usHyZ`pat!(yweR~6^ttPz!(uhumQ?(u%gJ^Da5I2tCwZF|v*FShLoBuV> z8+Dp;0f|3#+v2b`2E`<5ZwYupW{;H*CgAk~CTO(raS<(SqM40CkqpIb;m4c3Vi}Lu zR!T`?nz%Zj;O(faEi@RZIj{d=bT_6_ST7J6Syrh%5_;xqbY_P=q_Pe4^z?i+X1~ex zW(f?XPC9#TXy82h2L>V&uJd$)XHf+0VPj4H?B1C?fC$$KbcN7y9`Jo$k`ynR7D83||^5Wv25qXc}&CTLsw*b=Svm8$TlmkH5&T zh-xJiv%ATsZQaP&3wYR+yZ50iq(A0JhZc&GuaEcHe?Yf_K0rxVOSKTN1Ol2**}xVX zO788d8?uXFMBNo_f-Prys#&P6K9;_-*E>z{^2s3_DhI}8mi2S-1=S!srR$g(2eiy8 zFwhN!bBsa6IWB1Fh5k-ARHFII(~1jM>a;quxH7y$X1;yhpyo;9dn)@K%$e8{^4XO0B{hFFa<44 z;Z{Ttj5D9|8ulIHS3qZXZ5F8l234oiL!yydO9DzJ$fkasT1-KWs&;kJr j|6!m9Q^^r@5|#E}68PUFT91?aAPj)RxS$`|`Lh26;2-R& literal 0 HcmV?d00001 diff --git a/docs/docs/images/akkoma_logo_vector_nobg.svg b/docs/docs/images/akkoma_logo_vector_nobg.svg new file mode 100644 index 00000000..1fdf5825 --- /dev/null +++ b/docs/docs/images/akkoma_logo_vector_nobg.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/docs/images/pleroma_logo_vector_bg_32.png b/docs/docs/images/pleroma_logo_vector_bg_32.png deleted file mode 100644 index 7cebcfd7ebdf4291a5407ac4a066261cc1aeaaf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 530 zcmV+t0`2{YP)K@4tAzA0 zIY3C_u{4#JUJZ+p?pAs`0$5flmeC8WAL{^&_l4*T`E7fSub$aC&mr6Z81HLidAb|3 zV0^?j(vPejmH;M)+ZpX?we4BlzGeF?hY&6R3`BzzUkqF9y%O)wrbWfNrE~;JJ)rol zU&-?(tOL{mss><~IGT{M4>+mWFVO-~Ne=;%zUN#v6=(@J0{uXshS&4??B!|v4Xmzv U_kbx2;{X5v07*qoM6N<$f(?$~-2eap diff --git a/docs/docs/images/pleroma_logo_vector_nobg.svg b/docs/docs/images/pleroma_logo_vector_nobg.svg deleted file mode 100644 index 6dd80260..00000000 --- a/docs/docs/images/pleroma_logo_vector_nobg.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 38a02b32..426ddae1 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -1,11 +1,11 @@ site_name: Akkoma-FE Documentation theme: - favicon: 'images/pleroma_logo_vector_bg_32.png' + favicon: 'images/akkoma_logo_vector_bg_32.png' name: 'material' custom_dir: 'theme' # Disable google fonts font: false - logo: 'images/pleroma_logo_vector_nobg.svg' + logo: 'images/akkoma_logo_vector_nobg.svg' features: - tabs palette: From 14ed359c33660c27c3d2d5c62f35a583021e0e14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?SukinoVERS=CE=9E?= Date: Tue, 11 Jul 2023 22:16:37 +0700 Subject: [PATCH 04/23] fix: emoji picker not scrollable on ios --- src/directives/body_scroll_lock.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/directives/body_scroll_lock.js b/src/directives/body_scroll_lock.js index b6d16790..2602ca91 100644 --- a/src/directives/body_scroll_lock.js +++ b/src/directives/body_scroll_lock.js @@ -3,11 +3,13 @@ import * as bodyScrollLock from 'body-scroll-lock' let previousNavPaddingRight let previousAppBgWrapperRight const lockerEls = new Set([]) +const allowedScrollableClasses = ['emoji-tabs-item', 'emoji-item'] const disableBodyScroll = (el) => { const scrollBarGap = window.innerWidth - document.documentElement.clientWidth bodyScrollLock.disableBodyScroll(el, { - reserveScrollBarGap: true + reserveScrollBarGap: true, + allowTouchMove: el => allowedScrollableClasses.includes(el.parentElement.className), }) lockerEls.add(el) setTimeout(() => { From e0a6418e91f7d8a14935a19412ae47cdddb0f25c Mon Sep 17 00:00:00 2001 From: David Date: Thu, 20 Jul 2023 16:14:36 -0700 Subject: [PATCH 05/23] Add prefers-reduced-motion support --- src/components/still-image/still-image.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/still-image/still-image.js b/src/components/still-image/still-image.js index 480de9fa..bed4c314 100644 --- a/src/components/still-image/still-image.js +++ b/src/components/still-image/still-image.js @@ -12,12 +12,16 @@ const StillImage = { data () { return { stopGifs: this.$store.getters.mergedConfig.stopGifs, - isAnimated: false + isAnimated: false, + prefersReducedMotion: false } }, + created () { + this.prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches + }, computed: { animated () { - return this.stopGifs && this.isAnimated + return this.stopGifs && this.isAnimated && this.prefersReducedMotion }, style () { const appendPx = (str) => /\d$/.test(str) ? str + 'px' : str From e2125c57d6bb19b7129cc9e181baf932aa9d60c3 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 20 Jul 2023 16:26:52 -0700 Subject: [PATCH 06/23] Turn on by default --- src/components/still-image/still-image.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/still-image/still-image.js b/src/components/still-image/still-image.js index bed4c314..5a496e70 100644 --- a/src/components/still-image/still-image.js +++ b/src/components/still-image/still-image.js @@ -13,7 +13,7 @@ const StillImage = { return { stopGifs: this.$store.getters.mergedConfig.stopGifs, isAnimated: false, - prefersReducedMotion: false + prefersReducedMotion: true } }, created () { From 91eab22d77be27adc64485961521c4977f853acc Mon Sep 17 00:00:00 2001 From: David Date: Thu, 20 Jul 2023 17:18:59 -0700 Subject: [PATCH 07/23] Simplified and fixed and/or oopsie --- src/components/still-image/still-image.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/components/still-image/still-image.js b/src/components/still-image/still-image.js index 5a496e70..81da126a 100644 --- a/src/components/still-image/still-image.js +++ b/src/components/still-image/still-image.js @@ -11,17 +11,13 @@ const StillImage = { ], data () { return { - stopGifs: this.$store.getters.mergedConfig.stopGifs, + stopGifs: this.$store.getters.mergedConfig.stopGifs || window.matchMedia('(prefers-reduced-motion: reduce)').matches, isAnimated: false, - prefersReducedMotion: true } }, - created () { - this.prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches - }, computed: { animated () { - return this.stopGifs && this.isAnimated && this.prefersReducedMotion + return this.stopGifs && this.isAnimated }, style () { const appendPx = (str) => /\d$/.test(str) ? str + 'px' : str From 32dc55b07c29e3778127d8e4fe102626bfee66ad Mon Sep 17 00:00:00 2001 From: David Date: Thu, 20 Jul 2023 17:20:54 -0700 Subject: [PATCH 08/23] Make emoji reactions use Still-Image functionality --- src/components/emoji_reactions/emoji_reactions.js | 4 +++- src/components/emoji_reactions/emoji_reactions.vue | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/emoji_reactions/emoji_reactions.js b/src/components/emoji_reactions/emoji_reactions.js index 75ab252e..94464bf4 100644 --- a/src/components/emoji_reactions/emoji_reactions.js +++ b/src/components/emoji_reactions/emoji_reactions.js @@ -1,5 +1,6 @@ import UserAvatar from '../user_avatar/user_avatar.vue' import UserListPopover from '../user_list_popover/user_list_popover.vue' +import StillImage from '../still-image/still-image.vue' const EMOJI_REACTION_COUNT_CUTOFF = 12 @@ -12,7 +13,8 @@ const EmojiReactions = { name: 'EmojiReactions', components: { UserAvatar, - UserListPopover + UserListPopover, + StillImage }, props: ['status'], data: () => ({ diff --git a/src/components/emoji_reactions/emoji_reactions.vue b/src/components/emoji_reactions/emoji_reactions.vue index 599611b2..d5e4301e 100644 --- a/src/components/emoji_reactions/emoji_reactions.vue +++ b/src/components/emoji_reactions/emoji_reactions.vue @@ -14,12 +14,13 @@ - + /> {{ reaction.count }} From 0da0e2c814da666ca62919a668d1e60facc02c24 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 24 Jul 2023 01:08:11 -0700 Subject: [PATCH 09/23] Make favicon next to post username use Still-Image functionality --- src/components/status/status.js | 4 +++- src/components/status/status.vue | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/status/status.js b/src/components/status/status.js index a35b5084..9bb3364f 100644 --- a/src/components/status/status.js +++ b/src/components/status/status.js @@ -20,6 +20,7 @@ import generateProfileLink from 'src/services/user_profile_link_generator/user_p import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js' import { muteWordHits } from '../../services/status_parser/status_parser.js' import { unescape, uniqBy } from 'lodash' +import StillImage from '../still-image/still-image.vue' import { library } from '@fortawesome/fontawesome-svg-core' import { @@ -117,7 +118,8 @@ const Status = { RichContent, MentionLink, MentionsLine, - QuoteButton + QuoteButton, + StillImage }, props: [ 'statusoid', diff --git a/src/components/status/status.vue b/src/components/status/status.vue index c9ce4a8a..a54782e3 100644 --- a/src/components/status/status.vue +++ b/src/components/status/status.vue @@ -174,12 +174,12 @@ > @{{ status.user.screen_name_ui }} - + /> From 7c14e1a5bd9c7c7b95923574ae05dec7bbb0df22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ng=C3=B4=20Ng=E1=BB=8Dc=20=C4=90=E1=BB=A9c=20Huy?= Date: Wed, 2 Aug 2023 08:40:19 +0700 Subject: [PATCH 10/23] Add replying info for redraft --- src/components/extra_buttons/extra_buttons.js | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/components/extra_buttons/extra_buttons.js b/src/components/extra_buttons/extra_buttons.js index 14c605fb..b38876b8 100644 --- a/src/components/extra_buttons/extra_buttons.js +++ b/src/components/extra_buttons/extra_buttons.js @@ -136,18 +136,26 @@ const ExtraButtons = { }, doRedraftStatus () { this.$store.dispatch('fetchStatusSource', { id: this.status.id }) - .then(data => this.$store.dispatch('openPostStatusModal', { - isRedraft: true, - statusId: this.status.id, - subject: data.spoiler_text, - statusText: data.text, - statusIsSensitive: this.status.nsfw, - statusPoll: this.status.poll, - statusFiles: [...this.status.attachments], - statusScope: this.status.visibility, - statusLanguage: this.status.language, - statusContentType: data.content_type - })) + .then(data => { + let repliedUserId = this.status.in_reply_to_user_id; + let repliedUser = this.status.attentions.filter(user => + user.id === repliedUserId); + this.$store.dispatch('openPostStatusModal', { + isRedraft: true, + attentions: this.status.attentions, + statusId: this.status.id, + subject: data.spoiler_text, + statusText: data.text, + statusIsSensitive: this.status.nsfw, + statusPoll: this.status.poll, + statusFiles: [...this.status.attachments], + statusScope: this.status.visibility, + statusLanguage: this.status.language, + statusContentType: data.content_type, + replyTo: this.status.in_reply_to_status_id, + repliedUser: repliedUser + }) + }) this.doDeleteStatus() }, showRedraftStatusConfirmDialog () { From 51ebe643d5de3f96cf888ac96b65a3f546b8cc06 Mon Sep 17 00:00:00 2001 From: Yuki Joou Date: Wed, 2 Aug 2023 12:45:18 +0200 Subject: [PATCH 11/23] components: Honour 'prefers reduced motion' setting in many components This helps accessibility for motion-sensitive people such as myself, and can improve battery life in "battery saving" mode on most devices --- src/components/favorite_button/favorite_button.vue | 3 +++ src/components/mobile_nav/mobile_nav.vue | 3 +++ src/components/retweet_button/retweet_button.vue | 3 +++ src/components/side_drawer/side_drawer.vue | 4 ++++ src/components/status_body/status_body.scss | 3 +++ src/components/timeline_menu/timeline_menu.vue | 6 ++++++ 6 files changed, 22 insertions(+) diff --git a/src/components/favorite_button/favorite_button.vue b/src/components/favorite_button/favorite_button.vue index 7d23572e..16bf441e 100644 --- a/src/components/favorite_button/favorite_button.vue +++ b/src/components/favorite_button/favorite_button.vue @@ -55,6 +55,9 @@ .interactive { .svg-inline--fa { + @media (prefers-reduced-motion: reduce) { + animation: unset; + } animation-duration: 0.6s; } diff --git a/src/components/mobile_nav/mobile_nav.vue b/src/components/mobile_nav/mobile_nav.vue index e6a8e694..f5917d57 100644 --- a/src/components/mobile_nav/mobile_nav.vue +++ b/src/components/mobile_nav/mobile_nav.vue @@ -157,6 +157,9 @@ box-shadow: var(--panelShadow); transition-property: transform; transition-duration: 0.25s; + @media (prefers-reduced-motion: reduce) { + transition: unset; + } transform: translateX(0); z-index: 1001; -webkit-overflow-scrolling: touch; diff --git a/src/components/retweet_button/retweet_button.vue b/src/components/retweet_button/retweet_button.vue index c574f4cb..ae044f23 100644 --- a/src/components/retweet_button/retweet_button.vue +++ b/src/components/retweet_button/retweet_button.vue @@ -74,6 +74,9 @@ .interactive { .svg-inline--fa { + @media (prefers-reduced-motion: reduce) { + animation: unset; + } animation-duration: 0.6s; } diff --git a/src/components/side_drawer/side_drawer.vue b/src/components/side_drawer/side_drawer.vue index 86943e27..d031a21e 100644 --- a/src/components/side_drawer/side_drawer.vue +++ b/src/components/side_drawer/side_drawer.vue @@ -268,6 +268,10 @@ .side-drawer { overflow-x: hidden; transition-timing-function: cubic-bezier(0, 1, 0.5, 1); + @media (prefers-reduced-motion: reduce) { + transition-timing-function: unset; + transition: unset; + } transition: 0.35s; transition-property: transform; margin: 0 0 0 -100px; diff --git a/src/components/status_body/status_body.scss b/src/components/status_body/status_body.scss index d618f65e..434cb482 100644 --- a/src/components/status_body/status_body.scss +++ b/src/components/status_body/status_body.scss @@ -17,6 +17,9 @@ .emoji:hover { transform: scale(1.4); + @media (prefers-reduced-motion: reduce) { + transition: unset; + } transition: 0.05s; } diff --git a/src/components/timeline_menu/timeline_menu.vue b/src/components/timeline_menu/timeline_menu.vue index 61119482..2dd52346 100644 --- a/src/components/timeline_menu/timeline_menu.vue +++ b/src/components/timeline_menu/timeline_menu.vue @@ -62,6 +62,9 @@ border-top-right-radius: 0; border-top-left-radius: 0; transform: translateY(-100%); + @media (prefers-reduced-motion: reduce) { + transition: unset; + } transition: transform 100ms; } @@ -89,6 +92,9 @@ svg { margin-left: 0.6em; + @media (prefers-reduced-motion: reduce) { + transition: unset; + } transition: transform 100ms; } From 43d0a2454760f8cf8eae1895b9d8b86e9846b6a8 Mon Sep 17 00:00:00 2001 From: Yuki Joou Date: Thu, 3 Aug 2023 16:03:12 +0200 Subject: [PATCH 12/23] StillImage: Improved animated image detection This patch makes StillImage's animation detection return early in cases where we can't detect the mimetype of the image. It also sets the image as animated in those cases if the user agent wants reduced motion. As reduced motion is an accessibility setting, I think it's best to use a "better safe than sorry" approach, it's better to accidentally mark something as animated that isn't than to have unblocked animations. --- src/components/still-image/still-image.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/components/still-image/still-image.js b/src/components/still-image/still-image.js index 81da126a..9c335d6c 100644 --- a/src/components/still-image/still-image.js +++ b/src/components/still-image/still-image.js @@ -39,12 +39,25 @@ const StillImage = { this.imageLoadError && this.imageLoadError() }, detectAnimation (image) { + // If there are no file extensions, the mimetype isn't set, and no mediaproxy is available, we can't figure out + // the mimetype of the image. + const hasFileExtension = this.src.split('/').pop().includes('.') // TODO: Better check? + const mediaProxyAvailable = this.$store.state.instance.mediaProxyAvailable + if (!hasFileExtension && this.mimetype === undefined && !mediaProxyAvailable) { + // It's a bit aggressive to assume all images we can't find the mimetype of is animated, but necessary for + // people in need of reduced motion accessibility. As such, we'll consider those images animated if the user + // agent is set to prefer reduced motion. Otherwise, it'll just be used as an early exit. + if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) + this.isAnimated = true + return + } + if (this.mimetype === 'image/gif' || this.src.endsWith('.gif')) { this.isAnimated = true return } // harmless CORS errors without-- clean console with - if (!this.$store.state.instance.mediaProxyAvailable) return + if (!mediaProxyAvailable) return // Animated JPEGs? if (!(this.src.endsWith('.webp') || this.src.endsWith('.png'))) return // Browser Cache should ensure image doesn't get loaded twice if cache exists From d8a7217335b37033cdc7876cae15dfbf07a2bfe6 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 4 Aug 2023 13:34:26 +0000 Subject: [PATCH 13/23] Translated using Weblate (Turkish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 9.7% (102 of 1046 strings) Co-authored-by: Hasan Yıldız Co-authored-by: Weblate Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/tr/ Translation: Pleroma fe/pleroma-fe --- src/i18n/tr.json | 82 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/src/i18n/tr.json b/src/i18n/tr.json index 43c498c8..4e36c306 100644 --- a/src/i18n/tr.json +++ b/src/i18n/tr.json @@ -49,6 +49,86 @@ "post_error": "Hata: {error}", "post_form_header": "Post sonrası", "post_placeholder": "Duyuru içeriği", - "published_time_display": "{time} tarihinde yayınlandı" + "published_time_display": "{time} tarihinde yayınlandı", + "start_time_display": "{time} saatinde başlar", + "start_time_prompt": "Başlangıç saati: ", + "submit_edit_action": "Gönder", + "title": "Duyuru" + }, + "chats": { + "chats": "Sohbetler", + "delete": "Sil", + "delete_confirm": "Bu mesajı gerçekten silmek istiyor musun?", + "empty_chat_list_placeholder": "Henüz hiç sohbetiniz yok. Yeni bir sohbet başlatın!", + "empty_message_error": "Boş mesaj gönderilemiyor", + "error_loading_chat": "Sohbet yüklenirken bir şeyler ters gitti.", + "error_sending_message": "Mesajı gönderirken bir şeyler ters gitti.", + "message_user": "{nickname} mesajı", + "more": "Daha", + "new": "Yeni Sohbet", + "you": "Sen:" + }, + "display_date": { + "today": "Bugün" + }, + "domain_mute_card": { + "mute": "Sesini kapat", + "mute_progress": "Ses kapatılıyor…", + "unmute": "Sesini aç", + "unmute_progress": "Sessize alınıyor…" + }, + "emoji": { + "add_emoji": "Emoji ekle", + "custom": "Özel emoji", + "emoji": "Emoji", + "keep_open": "Seçiciyi açık tut", + "load_all": "Tüm {emojiAmount} emoji yükleniyor", + "load_all_hint": "İlk {saneAmount} emoji yüklendi, tüm emojilerin yüklenmesi performans sorunlarına neden olabilir.", + "recent": "Son zamanlarda kullanılmış", + "search_emoji": "Emoji ara", + "stickers": "Çıkartmalar", + "unicode": "Unicode emojisi" + }, + "errors": { + "storage_unavailable": "Pleroma, tarayıcı depolama alanına erişemedi. Oturum açma bilgileriniz veya yerel ayarlarınız kaydedilmeyecek ve beklenmeyen sorunlarla karşılaşabilirsiniz. Çerezleri etkinleştirmeyi deneyin." + }, + "exporter": { + "export": "Dışa aktar", + "processing": "İşleniyor, yakında dosyanızı indirmeniz istenecek" + }, + "features_panel": { + "media_proxy": "Medya proxy'si", + "scope_options": "Kapsam seçenekleri", + "text_limit": "Metin sınırı", + "title": "Özellikler", + "upload_limit": "Yükleme sınırı", + "who_to_follow": "Kimi takip etmeli" + }, + "file_type": { + "audio": "Ses", + "file": "Dosya", + "image": "Resim", + "video": "Video" + }, + "finder": { + "error_fetching_user": "Kullanıcı getirilirken hata oluştu", + "find_user": "Kullanıcı bul" + }, + "general": { + "apply": "Uygula", + "cancel": "İptal", + "close": "Kapalı", + "confirm": "Onayla", + "disable": "Devre dışı bırak", + "dismiss": "Reddetmek", + "enable": "Etkinleştir", + "error_retry": "Lütfen tekrar deneyin", + "flash_content": "Ruffle kullanarak Flash içeriğini göstermek için tıklayın (Deneysel, çalışmayabilir).", + "flash_fail": "Flash içeriği yüklenemedi, ayrıntılar için konsola bakın.", + "flash_security": "Flash içeriği hala isteğe bağlı kod olduğundan, bunun potansiyel olarak tehlikeli olabileceğini unutmayın.", + "generic_error": "Bir hata oluştu", + "loading": "Yükleniyor…", + "more": "Daha", + "optional": "Seçenek" } } From c4e768f97706e85ba0c7d3f88a7dc879d2e95d30 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 4 Aug 2023 13:34:26 +0000 Subject: [PATCH 14/23] Translated using Weblate (Indonesian) Currently translated at 67.8% (710 of 1046 strings) Co-authored-by: Weblate Co-authored-by: Yonle Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/id/ Translation: Pleroma fe/pleroma-fe --- src/i18n/id.json | 46 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/src/i18n/id.json b/src/i18n/id.json index 71e4ef44..86940ff4 100644 --- a/src/i18n/id.json +++ b/src/i18n/id.json @@ -1,11 +1,15 @@ { "about": { + "bubble_instances": "Instance Bubble Lokal", + "bubble_instances_description": "Instansi yang dipilih oleh admin untuk mewakili instance ini", "mrf": { "federation": "Federasi", "keyword": { "ftl_removal": "Penghapusan dari Linimasa \"Jaringan Yang Dikenal\"", "is_replaced_by": "→", - "reject": "Tolak" + "keyword_policies": "Kebijakan Kata Kunci", + "reject": "Tolak", + "replace": "Ganti" }, "mrf_policies": "Kebijakan MRF yang diaktifkan", "mrf_policies_desc": "Kebijakan MRF memanipulasi federasi yang terjadi pada instansi ini. Kebijakan berikut adalah yang aktif:", @@ -80,6 +84,7 @@ "keep_open": "Tetap buka pemilih", "load_all": "Memuat semua {emojiAmount} emoji", "load_all_hint": "Memuat {saneAmount} emoji pertama, memuat semua emoji dapat menyebabkan masalah performa.", + "recent": "Baru-baru ini digunakan", "search_emoji": "Cari emoji", "stickers": "Stiker", "unicode": "Emoji Unicode" @@ -93,9 +98,11 @@ }, "features_panel": { "media_proxy": "Proxy media", + "scope_options": "Opsi cakupan", "text_limit": "Batas teks", "title": "Fitur-fitur", - "upload_limit": "Batas unggahan" + "upload_limit": "Batas unggahan", + "who_to_follow": "Siapa untuk diikuti" }, "file_type": { "audio": "Audio", @@ -113,6 +120,7 @@ "close": "Tutup", "confirm": "Konfirmasi", "disable": "Nonaktifkan", + "dismiss": "Tutup", "enable": "Aktifkan", "error_retry": "Harap coba lagi", "flash_content": "Klik untuk menampilkan konten Flash menggunakan Ruffle (Eksperimental, mungkin tidak bekerja).", @@ -132,7 +140,8 @@ "direct": "Langsung", "local": "Lokal - hanya instansi kamu yang dapat melihat postingan ini", "private": "Hanya pengikut", - "public": "Publik" + "public": "Publik", + "unlisted": "Tidak Tercantum" }, "show_less": "Tampilkan lebih sedikit", "show_more": "Tampilkan lebih banyak", @@ -227,6 +236,7 @@ "lists": { "create": "Buat", "delete": "Hapus daftar", + "following_only": "Batas mengikuti", "lists": "Daftar", "new": "Buat Daftar", "save": "Simpan perubahan", @@ -276,6 +286,7 @@ "note_placeholder": "Tinggalkan catatan", "notes": "{ count } catatan", "reopen": "Buka kembali", + "report": "Laporan di", "reports": "Laporan", "resolve": "Selesaikan", "show_closed": "Tampilkan yang telah ditutup", @@ -291,6 +302,8 @@ "administration": "Administrasi", "announcements": "Pengumuman", "back": "Kembali", + "bookmarks": "Bookmark", + "bubble_timeline": "Timeline Bubble", "bubble_timeline_description": "Postingan dari instansi yang dekat dengan instansimu, yang direkomendasikan oleh admin kamu", "chats": "Obrolan", "dms": "Pesan langsung", @@ -309,7 +322,8 @@ "timelines": "Linimasa", "twkn": "Jaringan Yang Dikenal", "twkn_timeline_description": "Postingan dari seluruh jaringan", - "user_search": "Penelusuran Pengguna" + "user_search": "Penelusuran Pengguna", + "who_to_follow": "Siapa untuk diikuti" }, "notifications": { "broken_favorite": "Postingan tak dikenal, mencarinya…", @@ -385,7 +399,8 @@ "direct": "Langsung - posting hanya kepada pengguna yang disebut", "local": "Lokal - postingan tidak akan difederasi", "private": "Hanya-pengikut - posting hanya kepada pengikut", - "public": "Publik - posting ke linimasa publik" + "public": "Publik - posting ke linimasa publik", + "unlisted": "Tidak Tercantum - Tidak memposting ke timeline publik" }, "scope_notice": { "local": "Postingan ini tidak akan terlihat di instansi lain", @@ -402,6 +417,7 @@ "captcha": "CAPTCHA", "email": "Surel", "email_language": "Dalam bahasa apa kamu ingin menerima surel dari server ini?", + "fullname": "Tampilan Nama", "fullname_placeholder": "cth. Atsuko Kagari", "new_captcha": "Klik gambarnya untuk mendapatkan captcha baru", "password_confirm": "Konfirmasi kata sandi", @@ -424,6 +440,7 @@ }, "remote_user_resolver": { "error": "Tidak ditemukan.", + "remote_user_resolver": "Pencarian pengguna jarak jauh", "searching_for": "Mencari" }, "search": { @@ -437,16 +454,22 @@ "select_all": "Pilih semua" }, "settings": { + "accent": "Aksen", + "account_alias": "Akun 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_privacy": "Privasi", + "add_alias_error": "Gagal menambahkan alias: {error}", "add_backup": "Buat cadangan baru", "add_backup_error": "Gagal menambahkan cadangan baru: {error}", + "added_alias": "Alias telah ditambahkan.", "added_backup": "Cadangan baru ditambahkan.", "allow_following_move": "Ikuti otomatis apabila akun yang diikuti pindah", + "always_show_post_button": "Selalu tampilkan tombol posting baru yang mengambang", "app_name": "Nama aplikasi", "attachmentRadius": "Lampiran", "attachments": "Lampiran", + "autohide_floating_post_button": "Sembunyikan tombol buat posting secara otomatis (Ponsel)", "avatar": "Avatar", "avatarAltRadius": "Avatar (notifikasi)", "avatarRadius": "Avatar", @@ -474,6 +497,8 @@ "changed_password": "Kata sandi berhasil diubah!", "chatMessageRadius": "Pesan obrolan", "checkboxRadius": "Kotak centang", + "collapse_subject": "Tampilkan post dengan peringatan", + "columns": "Kolum", "composing": "Menulis", "confirm_dialogs": "Perlukan konfirmasi sebelum:", "confirm_dialogs_approve_follow": "Menerima permintaan mengikuti", @@ -484,17 +509,23 @@ "confirm_dialogs_repeat": "Mengulangi postingan", "confirm_dialogs_unfollow": "Berhenti mengikuti seseorang", "confirm_new_password": "Konfirmasi kata sandi baru", + "confirmation_dialogs": "Opsi Konfirmasi", "conversation_display": "Gaya tampilan percakapan", + "conversation_display_linear": "Gaya Linier", "conversation_display_tree": "Bercabang", + "conversation_other_replies_button": "Tampilkan tombol \"Balasan lainnya\"", "conversation_other_replies_button_below": "Di bawah postingan", "conversation_other_replies_button_inside": "Di postingan", "current_avatar": "Avatarmu saat ini", + "current_mascot": "Maskot utamamu", "current_password": "Kata sandi saat ini", "data_import_export_tab": "Impor / ekspor data", + "default_vis": "Cakupan visibilitas default", "delete_account": "Hapus akun", "delete_account_description": "Hapus data kamu secara permanen dan nonaktifkan akunmu.", "delete_account_error": "Ada masalah ketika menghapus akun kamu. Jika ini terus terjadi harap hubungi adminstrator instansi kamu.", "delete_account_instructions": "Ketik kata sandi kamu pada input di bawah untuk mengonfirmasi penghapusan akun.", + "disable_sticky_headers": "Jangan tempel tajuk kolom ke bagian atas layar", "discoverable": "Izinkan penelusuran akun ini pada hasil pencarian dan layanan lainnya", "domain_mutes": "Domain", "download_backup": "Unduh", @@ -505,6 +536,7 @@ "expert_mode": "Tampilkan pengaturan lanjutan", "expire_posts_enabled": "Hapus postingan setelah jumlah hari yang ditentukan", "expire_posts_input_placeholder": "Jumlah hari", + "export_theme": "Simpan preset", "file_export_import": { "backup_restore": "Pencadangan pengaturan", "backup_settings": "Cadangkan pengaturan ke berkas", @@ -519,7 +551,11 @@ }, "filtering": "Penyaringan", "filtering_explanation": "Semua postingan yang mengandung kata-kata ini akan dibisukan, satu kata per baris", + "follow_export": "Ekspor Follow", + "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.", "fun": "Seru", "general": "Umum", "greentext": "Panah meme", From cc302fb0e2a2959b73a2c4ab16ea6442f4966806 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 4 Aug 2023 13:34:26 +0000 Subject: [PATCH 15/23] Translated using Weblate (Japanese (ja_EASY)) Currently translated at 72.3% (757 of 1046 strings) Translated using Weblate (Japanese (ja_EASY)) Currently translated at 71.9% (753 of 1046 strings) Co-authored-by: Hikaru Shinagawa Co-authored-by: Weblate 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 --- src/i18n/ja_easy.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/i18n/ja_easy.json b/src/i18n/ja_easy.json index 80fdde44..8dcb6514 100644 --- a/src/i18n/ja_easy.json +++ b/src/i18n/ja_easy.json @@ -4,6 +4,7 @@ "mrf": { "federation": "フェデレーション", "keyword": { + "ftl_removal": "「せつぞくしているすべてのネットワーク」タイムラインからのぞく", "is_replaced_by": "→", "keyword_policies": "キーワードポリシー", "reject": "おことわり", @@ -120,7 +121,7 @@ "error_retry": "もういちど、ためしてください", "flash_content": "クリックすると、Ruffle をつかって、フラッシュさくひんをひょうじします。(うまくうごかないかもしれません)", "flash_fail": "フラッシュさくひんのロードに、しっぱいしました。コンソールに、くわしいことがかかれています。", - "flash_security": "フラッシュさくひんは、あぶないことをしてくるかもしれないので、ちゅういしてください。", + "flash_security": "フラッシュさくひんは、あなたのコンピューターに、あぶないことをしてくるかもしれないので、ちゅういしてください。", "generic_error": "エラーになりました", "loading": "ロードしています…", "more": "つづき", @@ -533,7 +534,7 @@ "expert_mode": "こまかいせっていをひょうじ", "export_theme": "セーブ", "filtering": "フィルタリング", - "filtering_explanation": "これらのことばをふくむすべてのものがミュートされます。1ぎょうに1つのことばをかいてください", + "filtering_explanation": "これらのことばをふくむすべてのとうこうがミュートされます。1ぎょうに1つのことばをかいてください", "follow_export": "フォローのエクスポート", "follow_export_button": "エクスポート", "follow_import": "フォローインポート", @@ -887,6 +888,7 @@ "media": "メディア", "mention": "メンション", "mute": "ミュート", + "mute_domain": "ドメインをブロック", "mute_progress": "ミュートしています…", "muted": "ミュートしています!", "per_day": "/日", @@ -897,6 +899,7 @@ "subscribe": "サブスクライブ", "unblock": "ブロックをやめる", "unblock_progress": "ブロックをとりけしています…", + "unfollow_confirm": "{user}のフォローをやめますか?", "unmute": "ミュートをやめる", "unmute_progress": "ミュートをとりけしています…", "unsubscribe": "サブスクライブをやめる" From 6be003b2f8271646ed21adbdb1759b9878877f1c Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 4 Aug 2023 13:34:26 +0000 Subject: [PATCH 16/23] Translated using Weblate (French) Currently translated at 98.3% (1029 of 1046 strings) Co-authored-by: Thomate Co-authored-by: Weblate Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/fr/ Translation: Pleroma fe/pleroma-fe --- src/i18n/fr.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/i18n/fr.json b/src/i18n/fr.json index 9bc07077..252291ea 100644 --- a/src/i18n/fr.json +++ b/src/i18n/fr.json @@ -425,6 +425,8 @@ "reason_placeholder": "Cette instance modère les inscriptions manuellement.\nExpliquer ce qui motive votre inscription à l'administration.", "register": "Enregistrer", "registration": "Inscription", + "request_sent": "Votre demande d'enregistrement est en attente d'approbation. Vous recevrez un courriel lorsque votre compte sera approuvé.", + "request_sent_title": "Demande d'abonnement envoyée", "token": "Jeton d'invitation", "username_placeholder": "ex : misato", "validations": { From 9b01c312836467c607fc701f77b3ebebb7810b14 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 4 Aug 2023 13:34:26 +0000 Subject: [PATCH 17/23] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (1046 of 1046 strings) Co-authored-by: Poesty Li Co-authored-by: Weblate Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/zh_Hans/ Translation: Pleroma fe/pleroma-fe --- src/i18n/zh.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/i18n/zh.json b/src/i18n/zh.json index 6488d654..7fec7226 100644 --- a/src/i18n/zh.json +++ b/src/i18n/zh.json @@ -926,6 +926,10 @@ "use_blurhash": "对NSFW的缩略图使用模糊处理", "use_contain_fit": "生成缩略图时不要裁剪附件", "use_one_click_nsfw": "点击一次以打开工作场所不适宜(NSFW)的附件", + "user_accepts_direct_messages_from": "允许私信自", + "user_accepts_direct_messages_from_everybody": "所有人", + "user_accepts_direct_messages_from_nobody": "没有人", + "user_accepts_direct_messages_from_people_i_follow": "我关注的人", "user_mutes": "用户", "user_profile_default_tab": "用户资料中的默认标签页", "user_profiles": "用户资料", From dfcbb3c1ec362304735f757aaf7797334b431382 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 4 Aug 2023 13:34:26 +0000 Subject: [PATCH 18/23] Translated using Weblate (Ukrainian) Currently translated at 100.0% (1046 of 1046 strings) Co-authored-by: Denys Nykula Co-authored-by: Weblate Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/uk/ Translation: Pleroma fe/pleroma-fe --- src/i18n/uk.json | 303 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 219 insertions(+), 84 deletions(-) diff --git a/src/i18n/uk.json b/src/i18n/uk.json index 25f4cd3b..08570f9b 100644 --- a/src/i18n/uk.json +++ b/src/i18n/uk.json @@ -23,6 +23,7 @@ "media_nsfw_desc": "Сервер примусово позначає дражливими медіа з таких серверів:", "media_removal": "Видалення медіа", "media_removal_desc": "Сервер вилучає медіа в дописах із таких серверів:", + "not_applicable": "Не застосовується", "quarantine": "Карантин", "quarantine_desc": "Сервер не надсилатиме дописів таким серверам:", "reason": "Підстава", @@ -31,7 +32,7 @@ "simple_policies": "Відносно цілих серверів" } }, - "staff": "Адміністрація" + "staff": "Команда" }, "announcements": { "all_day_prompt": "Триває весь день", @@ -71,10 +72,10 @@ "today": "Сьогодні" }, "domain_mute_card": { - "mute": "Ігнорувати", - "mute_progress": "Вимикаю…", - "unmute": "Вимкнути заглушення", - "unmute_progress": "Вмикаю…" + "mute": "Приглушити", + "mute_progress": "Глушіння…", + "unmute": "Відновити", + "unmute_progress": "Відновлення…" }, "emoji": { "add_emoji": "Додати емоджі", @@ -83,6 +84,7 @@ "keep_open": "Тримати панель відкритою", "load_all": "Всі {emojiAmount} емоджі завантажуються", "load_all_hint": "Завантажено {saneAmount} емоджі, більша кількість може спричинити гальмування.", + "recent": "Нещодавно вжиті", "search_emoji": "Пошук емоджі", "stickers": "Наліпки", "unicode": "Стандартні емоджі" @@ -131,19 +133,19 @@ "peek": "Глянути", "retry": "Спробуйте ще раз", "role": { - "admin": "Адмініструє", - "moderator": "Модерує" + "admin": "Адміністрація", + "moderator": "Модерування" }, "scope_in_timeline": { "direct": "Особисто", "local": "Місцево — допис видно тільки на вашому сервері", "private": "Приватно", "public": "Загальнодоступно", - "unlisted": "Непублічно" + "unlisted": "Приховано" }, "show_less": "Показати менше", "show_more": "Показати більше", - "submit": "Відправити", + "submit": "Надіслати", "verify": "Перевірити" }, "image_cropper": { @@ -154,7 +156,7 @@ }, "importer": { "error": "Під час імпортування файлу сталася помилка.", - "submit": "Відправити", + "submit": "Надіслати", "success": "Імпортовано успішно." }, "interactions": { @@ -164,8 +166,72 @@ "moves": "Переїзди користувач_ок" }, "languages": { + "ar": "арабська", + "az": "азербайджанська", + "bg": "болгарська", + "cs": "чеська", + "da": "данська", + "de": "німецька", + "el": "грецька", "en": "англійська", - "uk": "українська" + "eo": "есперанто", + "es": "іспанська", + "fa": "перська", + "fi": "фінська", + "fr": "французька", + "ga": "ірландська", + "he": "іврит", + "hi": "гінді", + "hu": "угорська", + "id": "індонезійська", + "it": "італійська", + "ja": "японська", + "ko": "корейська", + "lt": "литовська", + "lv": "латвійська", + "nl": "нідерландська", + "pl": "польська", + "pt": "португальська", + "ru": "російська", + "sk": "словацька", + "sv": "шведська", + "tr": "турецька", + "translated_from": { + "ar": "Перекладено з арабської", + "az": "Перекладено з азербайджанської", + "bg": "Перекладено з болгарської", + "cs": "Перекладено з чеської", + "da": "Перекладено з данської", + "de": "Перекладено з німецької", + "el": "Перекладено з грецької", + "en": "Перекладено з англійської", + "eo": "Перекладено з есперанто", + "es": "Перекладено з іспанської", + "fa": "Перекладено з перської", + "fi": "Перекладено з фінської", + "fr": "Перекладено з французької", + "ga": "Перекладено з ірландської", + "he": "Перекладено з івриту", + "hi": "Перекладено з гінді", + "hu": "Перекладено з угорської", + "id": "Перекладено з індонезійської", + "it": "Перекладено з італійської", + "ja": "Перекладено з японської", + "ko": "Перекладено з корейської", + "lt": "Перекладено з литовської", + "lv": "Перекладено з латвійської", + "nl": "Перекладено з нідерландської", + "pl": "Перекладено з польської", + "pt": "Перекладено з португальської", + "ru": "Перекладено з російської", + "sk": "Перекладено зі словацької", + "sv": "Перекладено зі словенської", + "tr": "Перекладено з турецької", + "uk": "Перекладено з української", + "zh": "Перекладено з китайської" + }, + "uk": "українська", + "zh": "китайська" }, "lists": { "create": "Створити", @@ -173,6 +239,7 @@ "following_only": "Лише за ким ви стежите", "lists": "Списки", "new": "Новий список", + "save": "Зберегти зміни", "search": "Знайти користувач_ок", "title": "Назва списку" }, @@ -199,6 +266,7 @@ "username": "Логін" }, "media_modal": { + "counter": "{current} / {total}", "hide": "Закрити медіаперегляд", "next": "Наступна", "previous": "Попередня" @@ -222,7 +290,9 @@ "reports": "Скарги", "resolve": "Вирішено", "show_closed": "Показати закриті", - "statuses": "Дописів: { count } | Дописів: { count }" + "statuses": "Дописів: { count } | Дописів: { count }", + "tag_policy_notice": "Увімкніть MRF TagPolicy, щоб обмежувати окремі обліковки", + "tags": "Обмежити обліковку" }, "statuses": "Дописи", "users": "Користувач_ки" @@ -242,21 +312,21 @@ "home_timeline_description": "Дописи від тих, на кого ви підписані", "interactions": "Взаємодії", "lists": "Списки", - "mentions": "Згадування", + "mentions": "Згадки", "moderation": "Модерування", "preferences": "Налаштування", "public_timeline_description": "Загальнодоступні дописи всіх на цьому сервері", "public_tl": "Спільна стрічка", "search": "Пошук", - "timeline": "Домашня стрічка", + "timeline": "Стрічка", "timelines": "Стрічки", "twkn": "Уся відома мережа", "twkn_timeline_description": "Дописи з усієї мережі", "user_search": "Пошук користувач_ок", - "who_to_follow": "Кого відстежувати" + "who_to_follow": "На кого підписатись" }, "notifications": { - "broken_favorite": "Невідомий допис, шукаю його…", + "broken_favorite": "Допис невідомий, пошук триває…", "error": "Помилка при оновленні сповіщень: {0}", "favorited_you": "вподобує", "follow_request": "хоче підписатись", @@ -285,12 +355,12 @@ "polls": { "add_option": "Додати варіант", "add_poll": "Додати опитування", - "expired": "Опитування закінчилось {0} тому", - "expires_in": "Опитування закінчується через {0}", + "expired": "Завершено {0} тому", + "expires_in": "До кінця {0}", "expiry": "Термін опитування", "multiple_choices": "Декілька варіантів", "not_enough_options": "Замало унікальних варіантів в опитуванні", - "option": "Відповідь", + "option": "Варіант", "people_voted_count": "Осіб: {count} | Осіб: {count}", "single_choice": "Один варіант", "type": "Тип опитування", @@ -322,7 +392,7 @@ "media_not_sensitive_warning": "Ви вказали засторогу, але не позначили вкладення дражливими!", "new_status": "Новий допис", "post": "Розмістити", - "posting": "Відправляється", + "posting": "Розміщення", "preview": "Попередній перегляд", "preview_empty": "Порожньо", "scope": { @@ -340,11 +410,13 @@ } }, "registration": { + "awaiting_email_confirmation": "Вам надіслано лист підтвердження створення обліковки. Перевірте е-пошту, щоб завершити реєстрацію.", + "awaiting_email_confirmation_title": "Очікування підтвердження поштою", "bio": "Опис", "bio_placeholder": "як-от:\nВолинянка. Подорожую.\nДемократична соціалістка. Пишу драматичні поеми. Жити хочу! Геть, думи сумні!", "captcha": "CAPTCHA", "email": "Е-пошта", - "email_language": "Якою мовою отримувати листи з сервера?", + "email_language": "Мова листів сервера", "fullname": "Ім'я", "fullname_placeholder": "як-от Лариса Косач", "new_captcha": "Натисніть на зображення, щоб оновити код, якщо він нерозбірливий", @@ -353,6 +425,8 @@ "reason_placeholder": "Запити на реєстрацію підтверджуються вручну.\nРозкажіть адміністрації, чому хочете зареєструватися.", "register": "Зареєструватися", "registration": "Реєстрація", + "request_sent": "Ваш запит на реєстрацію надіслано на розгляд. Ви отримаєте лист, коли вашу реєстрацію схвалять.", + "request_sent_title": "Запит на реєстрацію надіслано", "token": "Ключ запрошення", "username_placeholder": "як-от lesia", "validations": { @@ -370,7 +444,7 @@ "searching_for": "Шукаю" }, "search": { - "hashtags": "Хештеги", + "hashtags": "Теги", "no_results": "Немає результатів", "people": "Люди", "people_talking": "{count} людей говорять про це", @@ -382,34 +456,34 @@ "settings": { "accent": "Акцент", "account_alias": "Інші обліковки", - "account_alias_table_head": "Нова обліковка", + "account_alias_table_head": "Попередня обліковка", "account_backup": "Резервне копіювання обліковки", "account_backup_description": "Можете завантажити архів даних і дописів своєї обліковки. Але імпортувати їх на іншу обліковку поки неможливо.", "account_backup_table_head": "Резервна копія", "account_privacy": "Приватність", - "add_alias_error": "Помилка додання нової обліковки: {error}", + "add_alias_error": "Помилка додання обліковки: {error}", "add_backup": "Створити резервну копію", "add_backup_error": "Помилка резервного копіювання: {error}", - "added_alias": "Нову обліковку додано.", + "added_alias": "Обліковку додано.", "added_backup": "Резервну копію створено.", "allow_following_move": "Дозволити автостеження при переміщенні на інший інстанс", "always_show_post_button": "Завжди показувати кнопку «Новий допис»", "app_name": "Назва програми", "attachmentRadius": "Вкладення", "attachments": "Вкладення", - "autohide_floating_post_button": "Автоматично ховати кнопку \"Новий допис\" (в мобільній версії)", + "autohide_floating_post_button": "Автоматично ховати кнопку «Новий допис» (на мобільному)", "avatar": "Аватар", "avatarAltRadius": "Аватари у сповіщеннях", "avatarRadius": "Аватари", "avatar_size_instruction": "Рекомендований мінімальний розмір для зображень аватара становить 150x150 пікселів.", - "background": "Обкладинка", + "background": "Тло", "backup_not_ready": "Резервна копія ще не готова.", "bio": "Опис", "block_export": "Експорт блокувань", - "block_export_button": "Експорт блокувань у файл CSV", + "block_export_button": "Експорт блокувань у CSV-файл", "block_import": "Імпорт блокувань", - "block_import_error": "Помилка імпортування блокувань", - "blocks_imported": "Блокування імпортовані! Їх обробка триватиме певний час.", + "block_import_error": "Помилка імпорту блокувань", + "blocks_imported": "Блокування імпортовано! Їх буде застосовано поступово.", "blocks_tab": "Блокування", "bot": "Це обліковка бота", "btnRadius": "Кнопки", @@ -441,6 +515,11 @@ "conversation_display": "Стиль показу розмови", "conversation_display_linear": "Колонка", "conversation_display_tree": "Дерево", + "conversation_other_replies_button": "Кнопка «Переглянути ще»", + "conversation_other_replies_button_below": "Під дописами", + "conversation_other_replies_button_inside": "Всередині дописів", + "current_avatar": "Ваш поточний аватар", + "current_mascot": "Ваш поточний маскот", "current_password": "Поточний пароль", "data_import_export_tab": "Імпорт/експорт даних", "default_vis": "Типовий рівень приватності", @@ -461,24 +540,24 @@ "expire_posts_input_placeholder": "Скільки днів", "export_theme": "Завантажити", "file_export_import": { - "backup_restore": "Резервне копіювання налаштувань", + "backup_restore": "Копія налаштувань", "backup_settings": "Завантажити файл налаштувань", "backup_settings_theme": "Завантажити налаштування й тему", "errors": { - "file_slightly_new": "Другорядна версія файлу відрізняється, деякі налаштування можуть бути не прийняті", - "file_too_new": "Несумісна основна версія: {fileMajor}, ця версія PleromaFE ({feMajor}) занадто стара для його обробки", - "file_too_old": "Несумісна основна версія: {fileMajor}, версія файлу занадто стара і не підтримується (мінімальна версія налаштувань {feMajor})", + "file_slightly_new": "Файл призначено для трохи новішої версії й може спрацювати не повністю", + "file_too_new": "Версія {fileMajor} новіша, ніж ця AkkomaFE ({feMajor}) може обробити", + "file_too_old": "Версія {fileMajor} більше не підтримується (треба {feMajor} чи новіше)", "invalid_file": "Вибраний файл не є резервною копією налаштувань Pleroma. Ніяких змін не було зроблено." }, "restore_settings": "Відновити налаштування з файлу" }, "filtering": "Фільтр", "filtering_explanation": "Усі дописи з цими словами буде сховано. Пишіть кожне слово з нового рядка", - "follow_export": "Експортувати відстежуваних", - "follow_export_button": "Експортувати відстежуваних до csv файлу", - "follow_import": "Імпортувати відстежуваних", - "follow_import_error": "Помилка імпортування відстежуваних", - "follows_imported": "Відстежуваних імпортовано! Їхня обробка потребує часу.", + "follow_export": "Експорт підписок", + "follow_export_button": "Експорт підписок до CSV-файлу", + "follow_import": "Імпорт підписок", + "follow_import_error": "Помилка імпорту підписок", + "follows_imported": "Підписки імпортовано! Їх буде застосовано поступово.", "foreground": "Передній план", "fun": "Іграшки", "general": "Загальні", @@ -497,7 +576,7 @@ "hide_list_aliases_error_action": "Закрити", "hide_media_previews": "Приховати попередній перегляд медіа", "hide_muted_posts": "Ховати повідомлення приглушених користувач_ок", - "hide_muted_threads": "Ховати заглушені гілки", + "hide_muted_threads": "Ховати приглушені гілки", "hide_post_stats": "Ховати статистику дописів (скільки вподобань тощо)", "hide_shoutbox": "Приховати оголошення сервера", "hide_site_favicon": "Вилучити значок сервера з шапки", @@ -506,9 +585,9 @@ "hide_user_stats": "Ховати користувацьку статистику (скільки підписок тощо)", "hide_wallpaper": "Сховати шпалери сервера", "hide_wordfiltered_statuses": "Ховати дописи зі словами з фільтру", - "import_blocks_from_a_csv_file": "Імпортувати заблокованих з csv файлу", - "import_followers_from_a_csv_file": "Імпортувати відстежуваних з csv файлу", - "import_mutes_from_a_csv_file": "Імпорт заглушених з csv файлу", + "import_blocks_from_a_csv_file": "Імпортуйте CSV-файл блокувань", + "import_followers_from_a_csv_file": "Імпортуйте CSV-файл підписок", + "import_mutes_from_a_csv_file": "Імпортуйте CSV-файл приглушень", "import_theme": "Вивантажити", "inputRadius": "Поля вводу", "instance_default": "(усталено: {value})", @@ -518,13 +597,16 @@ "invalid_theme_imported": "Вибраний файл не є темою Pleroma. У вашу тему не внесено жодних змін.", "limited_availability": "Недоступно у вашому браузері", "links": "Посилання", - "list_aliases_error": "Помилка завантаження нових обліковок: {error}", + "list_aliases_error": "Помилка завантаження обліковок: {error}", "list_backups_error": "Помилка завантаження переліку копій: {error}", "lock_account_description": "Показувати лише схваленим підписни_цям", "loop_video": "Зациклити відео", "loop_video_silent_only": "Зациклити відео без звуку (напр. Mastodon \"gifs\")", + "mascot": "Маскот Mastodon FE", + "max_depth_in_thread": "Максимальна кількість типово показаних рівнів гілки обговорення", "max_thumbnails": "Максимальна кількість мініатюр на повідомлення", - "mention_link_display": "Показувати згадування", + "mention_link_bolden_you": "Підсвічувати посилання, коли вас згадують", + "mention_link_display": "Формат посилань згадок", "mention_link_display_full": "завжди повністю (як-от {'@'}lesia{'@'}example.org)", "mention_link_display_full_for_remote": "повністю, якщо це інший сервер (як-от {'@'}lesia{'@'}example.org)", "mention_link_display_short": "завжди коротко (як-от {'@'}lesia)", @@ -557,34 +639,37 @@ "more_settings": "Більше налаштувань", "move_account": "Переїхати", "move_account_error": "Помилка переїзду обліковки: {error}", - "move_account_notes": "Щоб переїхати з цієї обліковки на іншу, вкажіть у її налаштуваннях цю облікову як нову.", + "move_account_notes": "Щоб переїхати з цієї обліковки на іншу, додайте в її налаштуваннях цю обліковку як попередню.", + "move_account_target": "Нова обліковка (як-от {example})", + "moved_account": "Переїзд обліковки виконано.", "mute_bot_posts": "Сховати дописи ботів", - "mute_export": "Експорт ігнорувань", - "mute_export_button": "Експорт заглушених у csv файл", - "mute_import": "Імпорт ігнорувань", - "mute_import_error": "Під час імпорту заглушених сталася помилка", - "mutes_and_blocks": "Заглушення та блокування", - "mutes_imported": "Заглушені імпортовані! Їх обробка триватиме певний час.", - "mutes_tab": "Заглушені", + "mute_export": "Експорт приглушень", + "mute_export_button": "Експорт приглушених у csv файл", + "mute_import": "Імпорт приглушень", + "mute_import_error": "Під час імпорту приглушених сталася помилка", + "mutes_and_blocks": "Приглушення та блокування", + "mutes_imported": "Приглушення імпортовано! Їх буде застосовано поступово.", + "mutes_tab": "Приглушення", "name": "Ім'я", "name_bio": "Особисті дані", - "new_alias_target": "Вкажіть нову обліковку (як-от {example})", + "new_alias_target": "Додайте стару обліковку ({example})", "new_email": "Нова е-пошта", "new_password": "Новий пароль", - "no_blocks": "Блокування відсутні", - "no_mutes": "Заглушені відсутні", + "no_blocks": "Нікого не заблоковано", + "no_mutes": "Нікого не приглушено", "no_rich_text_description": "Видалення всього форматування тексту з усіх дописів", - "notification_blocks": "Блокування користувача зупиняє всі сповіщення від нього, а також скасовує його відстеження.", - "notification_mutes": "Щоб перестати отримувати сповіщення від певного користувача, заглушіть його.", + "notification_blocks": "Щоб не отримувати сповіщень від когось і вилучити їх із підписни_ць, заблокуйте їх.", + "notification_mutes": "Щоб просто не отримувати сповіщень від когось, приглушіть їх.", "notification_setting_block_from_strangers": "Блокувати сповіщення від тих, на кого ви не підписані", "notification_setting_filters": "Фільтри", + "notification_setting_hide_if_cw": "Ховати вміст push-сповіщення за наявності застороги", "notification_setting_hide_notification_contents": "Ховати відправника та вміст push-сповіщень", "notification_setting_privacy": "Приватність", "notification_visibility": "Сповіщати про такі події", "notification_visibility_emoji_reactions": "Реакції", "notification_visibility_follows": "Підписни_ці", "notification_visibility_likes": "Вподобане", - "notification_visibility_mentions": "Згадування", + "notification_visibility_mentions": "Згадки", "notification_visibility_moves": "Переїзди користувач_ок", "notification_visibility_polls": "Результати голосувань", "notification_visibility_repeats": "Поширення", @@ -593,7 +678,7 @@ "oauth_tokens": "OAuth-ключі", "pad_emoji": "Автоматично додавати простір з обидвох сторін емоджі", "panelRadius": "Панелі", - "pause_on_unfocused": "Призупинити трансляцію, коли вкладка неактивна", + "pause_on_unfocused": "Лише коли вкладка активна", "play_videos_in_modal": "Відтворювати відео у спливаючій рамці", "post_look_feel": "Вигляд дописів", "post_status_content_type": "Типова розмітка тексту", @@ -611,7 +696,7 @@ "profile_tab": "Профіль", "radii_help": "Радіус заокруглення кутів інтерфейсу (в пікселях)", "refresh_token": "Оновити ключ", - "remove_alias": "Вилучити нову обліковку", + "remove_alias": "Вилучити обліковку", "remove_backup": "Вилучити", "render_mfm": "Показувати розмітку Misskey", "render_mfm_on_hover": "Анімувати MFM лише при наведенні", @@ -633,13 +718,14 @@ "saving_err": "Помилка при збереженні налаштувань", "saving_ok": "Налаштування збережені", "scope_copy": "Відповідати на тому ж рівні приватності (завжди ввімкнено для особистих повідомлень)", - "search_user_to_block": "Шукайте кого ви хочете заблокувати", - "search_user_to_mute": "Шукайте кого ви хочете заглушити", + "search_user_to_block": "Шукайте, кого слід заблокувати", + "search_user_to_mute": "Шукайте, кого слід приглушити", "security": "Безпека", "security_tab": "Безпека", "sensitive_by_default": "Одразу позначати дописи дражливими", - "sensitive_if_subject": "Позначати зображення дражливими, якщо вказано застереження", + "sensitive_if_subject": "Позначати зображення дражливими, якщо вказано засторогу", "set_new_avatar": "Встановити новий аватар", + "set_new_mascot": "Встановити нового маскота", "set_new_profile_background": "Встановити нову обкладинку профілю", "set_new_profile_banner": "Встановити новий банер", "setting_changed": "Конфігурація відрізняється від типової", @@ -664,6 +750,7 @@ "show_panel_nav_shortcuts": "Ярлики стрічок у заголовку панелі", "show_scrollbars": "Смуги прокрутки в бокових панелях", "show_wider_shortcuts": "Більша відстань між ярликами в заголовку", + "show_yous": "Показувати «(ви)»", "stop_gifs": "Анімувати GIF лише при наведенні", "streaming": "Автоматично показувати нові дописи вгорі стрічки", "style": { @@ -744,10 +831,10 @@ "faint_link": "корисний підручник", "fine_print": "Прочитайте наш {0} аби нічого нового не дізнатись!", "header": "Попередній перегляд", - "header_faint": "Все гаразд", + "header_faint": "Усе гаразд", "input": "Що нового?", "link": "невеличке посилання", - "mono": "змісту", + "mono": "вмісту", "text": "Трохи більше {0} та {1}" }, "radii": { @@ -819,7 +906,7 @@ "subject_line_noop": "не копіювати", "text": "Текст", "theme": "Тема", - "theme_help": "Замініть кольори теми своїми в форматі (#rrggbb).", + "theme_help": "Замініть кольори теми своїми в форматі #rrggbb.", "theme_help_v2_1": "Деякі кольори й прозорості розраховуються автоматично. Позначайте їх пташками, щоб замінити їх вручну. Кнопка «Очистити все» видаляє всі такі заміни.", "theme_help_v2_2": "Значки під кольорами показують, наскільки добре видно текст на тлі. При наведенні побачите деталі. Якщо використовуєте прозорість, буде оцінено найгірший варіант.", "third_column_mode": "Третя панель, якщо достатньо місця", @@ -828,13 +915,21 @@ "third_column_mode_postform": "Новий допис і меню", "token": "Ключ", "tooltipRadius": "Підказки/попередження", - "type_domains_to_mute": "Пошук доменів для заглушення", + "translation_language": "Мова автоматичного перекладу", + "tree_advanced": "Показувати додаткові кнопки відкриття й закриття ланцюгів відповідей у гілках", + "tree_fade_ancestors": "Показувати менш виразно дописи, що передують поточному", + "type_domains_to_mute": "Шукайте домени, які слід приглушити", "upload_a_photo": "Вивантажити фото", "useStreamingApi": "Отримувати дописи та сповіщення наживо", - "useStreamingApiWarning": "(Не рекомендується, експериментально, повідомлення можуть зникати)", - "use_at_icon": "Значок {'@'} замість символа", + "useStreamingApiWarning": "Загалом працює. Якщо не зовсім, спробуєте оновити сторінку?", + "use_at_icon": "Значок {'@'} замість символу", + "use_blurhash": "Показувати дражливі мініатюри (як розмиті кольори)", "use_contain_fit": "Не обрізати краї мініатюр", "use_one_click_nsfw": "Відкривати NSFW вкладення одним кліком миші", + "user_accepts_direct_messages_from": "Приймати особисті повідомлення", + "user_accepts_direct_messages_from_everybody": "Будь-чиї", + "user_accepts_direct_messages_from_nobody": "Нічиї", + "user_accepts_direct_messages_from_people_i_follow": "Від тих, на кого я підписуюсь", "user_mutes": "Користувач_ки", "user_profile_default_tab": "Типова вкладка профілів", "user_profiles": "Користувацькі профілі", @@ -853,8 +948,18 @@ "word_filter": "Фільтр слів", "wordfilter": "Фільтр слів" }, + "settings_profile": { + "creating": "Створення профілю налаштувань «{profile}»…", + "synchronization_error": "Не вдалося синхронізувати налаштування: {err}", + "synchronized": "Налаштування синхронізовано!", + "synchronizing": "Синхронізація профілю налаштувань «{profile}»…" + }, "status": { + "ancestor_follow": "Переглянути ще {numReplies} під цим дописом | Переглянути ще {numReplies} під цим дописом", + "ancestor_follow_with_icon": "{icon} {text}", + "attachment_stop_flash": "Зупинити Flash-плеєр", "bookmark": "Додати до закладок", + "collapse_attachments": "Згорнути вкладення", "copy_link": "Скопіювати посилання на допис", "delete": "Видалити допис", "delete_confirm": "Точно видалити допис?", @@ -868,11 +973,17 @@ "expand": "Розгорнути", "external_source": "Зовнішнє джерело", "favorites": "Вподобане", + "hide_attachment": "Сховати вкладення", "hide_content": "Сховати вміст", - "hide_full_subject": "Сховати всю тему", - "mute_conversation": "Заглушити розмову", + "hide_full_subject": "Згорнути засторогу", + "many_attachments": "Вкладень: {number} | Вкладень: {number}", + "mentions": "Згадки", + "move_down": "Посунути вкладення праворуч", + "move_up": "Посунути вкладення ліворуч", + "mute_conversation": "Приглушити розмову", "nsfw": "Дражливий вміст", "open_gallery": "Відкрити галерею", + "override_translation_source_language": "Замістити початкову мову", "pin": "Закріпити в профілі", "pinned": "Закріплено", "plus_more": "ще {number}", @@ -881,21 +992,33 @@ "redraft_confirm_accept_button": "Так, видалити й переписати", "redraft_confirm_cancel_button": "Ні, лишити оригінал", "redraft_confirm_title": "Підтвердьте видалення й переписання", - "remove_attachment": "Видалити долучення", + "remove_attachment": "Видалити вкладення", + "repeat_confirm": "Точно поширити допис?", + "repeat_confirm_accept_button": "Так, поширити", + "repeat_confirm_cancel_button": "Ні, не поширювати", + "repeat_confirm_title": "Підтвердьте поширення", "repeats": "Поширення", "replies_list": "Відповіді:", + "replies_list_with_others": "Ще відповідей: {numReplies} | Ще відповідей: {numReplies}", "reply_to": "Відповідь", "show_all_attachments": "Показати всі вкладення", + "show_all_conversation": "Показати всю розмову (ще дописів: {numStatus}) | Показати всю розмову (ще дописів: {numStatus})", + "show_all_conversation_with_icon": "{icon} {text}", "show_attachment_description": "Переглянути опис (натисніть саме вкладення, якщо опис не вміщається)", "show_attachment_in_modal": "Показати вкладення у вікні", "show_content": "Показати вміст", "show_full_subject": "Показати всю засторогу", + "show_only_conversation_under_this": "Показати відповіді лише до цього допису", "status_deleted": "Цей допис був видалений", "status_unavailable": "Допис недоступний", + "thread_follow": "Ще відповідей: {numStatus} | Ще відповідей: {numStatus}", + "thread_follow_with_icon": "{icon} {text}", "thread_hide": "Сховати гілку", "thread_muted": "Гілку приглушено", "thread_muted_and_words": ", має слова:", "thread_show": "Показати гілку", + "thread_show_full": "Показати відповіді: {numStatus} | Показати відповіді: {numStatus}", + "thread_show_full_with_icon": "{icon} {text}", "translate": "Перекласти", "translated_from": "В оригіналі: {language}", "unbookmark": "Видалити із закладок", @@ -929,6 +1052,7 @@ "collapse": "Згорнути", "conversation": "Розмова", "error": "Помилка завантаження стрічки: {0}", + "follow_tag": "Підписатись на тег", "load_older": "Завантажити давніші дописи", "no_more_statuses": "Більше немає дописів", "no_retweet_hint": "Допис приватний чи особистий, тож його не можна поширити чи цитувати", @@ -938,8 +1062,12 @@ "show_new": "Показати нові", "socket_broke": "Втрачено з'єднання у реальному часі: код {0}", "socket_reconnected": "Встановлено з'єднання у реальному часі", + "unfollow_tag": "Відписатись від тегу", "up_to_date": "Оновлено" }, + "toast": { + "no_translation_target_set": "Не обрано цільової мови перекладу — може не вдатися. Оберіть у налаштуваннях, на яку мову перекладати." + }, "tool_tip": { "accept_follow_request": "Дозволити підписатись", "add_reaction": "Додати реакцію", @@ -978,14 +1106,14 @@ "disable_remote_subscription": "Заборонити підписуватись користувач_кам з інших серверів", "force_nsfw": "Позначити всі дописи дражливими", "force_unlisted": "Не показувати дописи в стрічці", - "grant_admin": "Надати права адміністратора", - "grant_moderator": "Надати права модератора", + "grant_admin": "Дозволити адміністрування", + "grant_moderator": "Дозволити модерування", "moderation": "Модерування", "quarantine": "Не розповсюджувати дописи на інших інстансах", - "revoke_admin": "Позбавити прав адміністратора", - "revoke_moderator": "Позбавити прав модератора", + "revoke_admin": "Позбавити прав адміністрування", + "revoke_moderator": "Позбавити прав модерування", "sandbox": "Показувати дописи лише підписни_цям", - "strip_media": "Вилучити медіа з дописів користувача" + "strip_media": "Вилучити медіа з дописів" }, "approve": "Дозволити", "approve_confirm": "Точно дозволити користувач_ці на вас підписатись?", @@ -1006,13 +1134,18 @@ "deny_confirm": "Точно відхилити запит на підписку?", "deny_confirm_accept_button": "Так, відхилити", "deny_confirm_cancel_button": "Ні, скасувати", + "deny_confirm_title": "Відхилити запит на підписку", + "domain_muted": "Розблокувати домен", "edit_profile": "Редагувати профіль", "favorites": "Вподобання", "follow": "Підписатись", "follow_cancel": "Скасувати запит", - "follow_progress": "Запитую…", - "follow_sent": "Запит відправлено!", + "follow_progress": "Надсилання…", + "follow_sent": "Запит надіслано!", + "follow_tag": "Підписатись на тег", "follow_unfollow": "Відписатись", + "followed_tags": "Підписки на теги", + "followed_users": "Підписки на користувач_ок", "followees": "Підписки", "followers": "Підписни_ці", "following": "Ви підписані!", @@ -1036,7 +1169,8 @@ "mute_confirm_title": "Приглушення", "mute_domain": "Заблокувати домен", "mute_progress": "Глушимо…", - "muted": "Заглушено", + "muted": "Приглушено", + "not_following_any_hashtags": "У вас нема підписок на теги", "note": "Приватна нотатка", "per_day": "на день", "remote_follow": "Підписатись", @@ -1053,8 +1187,9 @@ "unfollow_confirm_accept_button": "Так, відписатись", "unfollow_confirm_cancel_button": "Ні, не відписуватись", "unfollow_confirm_title": "Відписка", - "unmute": "Зняти глушення", - "unmute_progress": "Знімаємо глушення…", + "unfollow_tag": "Відписатись від тегу", + "unmute": "Відновити", + "unmute_progress": "Відновлення…", "unsubscribe": "Відписатись" }, "user_profile": { @@ -1069,7 +1204,7 @@ "forward_description": "Це обліковка з іншого сервера. Надіслати його адміністрації копію скарги?", "forward_to": "Переслати до {0}", "generic_error": "Виникла помилка під час обробки вашого запиту.", - "submit": "Відправити", + "submit": "Надіслати", "title": "Поскаржитись на {0}" }, "who_to_follow": { From 590380c08441be7fdc59327a6cb40a5d571c0be5 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 4 Aug 2023 13:34:26 +0000 Subject: [PATCH 19/23] Translated using Weblate (Thai) Currently translated at 1.7% (18 of 1046 strings) Added translation using Weblate (Thai) Co-authored-by: Chanakan Mungtin Co-authored-by: Pongsatorn Paewsoongnern Co-authored-by: Weblate Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/th/ Translation: Pleroma fe/pleroma-fe --- src/i18n/th.json | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/i18n/th.json diff --git a/src/i18n/th.json b/src/i18n/th.json new file mode 100644 index 00000000..77f73c2f --- /dev/null +++ b/src/i18n/th.json @@ -0,0 +1,34 @@ +{ + "about": { + "bubble_instances": "เซิร์ฟเวอร์เพื่อนบ้าน", + "bubble_instances_description": "เซิร์ฟเวอร์ที่แอดมินตั้งค่าไว้เพื่อแสดงเป็นเพื่อนบ้าน", + "mrf": { + "keyword": { + "keyword_policies": "นโยบายของคีย์เวิร์ดค้นหา", + "reject": "ไม่อนุมัติ", + "replace": "แทนที่" + }, + "simple": { + "accept": "ยอมรับ", + "accept_desc": "เซิร์ฟเวอร์นี้จะรับข้อความเฉพาะเซิฟร์เวอร์ต่อไปนี้:", + "instance": "เซิฟเวอร์", + "media_nsfw": "มีเดียถูกบังคับตั้งให้เป็น NSFW", + "not_applicable": "ไม่สามารถใช้ได้", + "quarantine": "คัดกรอง", + "reason": "เหตุผล", + "reject": "ปฎิเสธ" + } + }, + "staff": "ผู้ดูแล" + }, + "announcements": { + "cancel_edit_action": "ยกเลิก", + "close_error": "ปิด", + "delete_action": "ลบประกาศ", + "edit_action": "แก้ไขประกาศ", + "end_time_prompt": "เวลาสิ้นสุด: ", + "mark_as_read_action": "ตั้งเป็นอ่านแล้ว", + "page_header": "ประกาศ", + "post_action": "โพสต์" + } +} From 56528206b8cd1aee369f5162690ba0a11986da77 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 4 Aug 2023 13:34:26 +0000 Subject: [PATCH 20/23] Translated using Weblate (Portuguese) Currently translated at 62.7% (656 of 1046 strings) Co-authored-by: Jonathan Soares Co-authored-by: Weblate Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/pt/ Translation: Pleroma fe/pleroma-fe --- src/i18n/pt.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/i18n/pt.json b/src/i18n/pt.json index 5e04c73c..b904c958 100644 --- a/src/i18n/pt.json +++ b/src/i18n/pt.json @@ -30,7 +30,7 @@ "simple_policies": "Políticas especificas do domínio" } }, - "staff": "Staff" + "staff": "Equipe" }, "announcements": { "all_day_prompt": "Este evento dura o dia inteiro", @@ -167,7 +167,7 @@ "password": "Palavra-passe", "placeholder": "ex. lain", "recovery_code": "Código de recuperação", - "register": "Registar", + "register": "Registrar", "username": "Nome de Utilizador" }, "media_modal": { @@ -244,7 +244,7 @@ "text/plain": "Texto puro" }, "content_warning": "Assunto (opcional)", - "default": "Acabei de chegar a Lisboa.", + "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", @@ -268,7 +268,7 @@ }, "registration": { "bio": "Biografia", - "bio_placeholder": "ex.\nOlá, sou a Lain\nSou uma menina de anime que vive no Japão suburbano. Devem conhecer-me do \"the Wired\".", + "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", "fullname": "Nome para exibição", @@ -401,7 +401,7 @@ "scan": { "desc": "Utilizando a sua aplicação de dois fatores, faça scan deste código QR ou insira a chave de texto:", "secret_code": "Chave", - "title": "Scan" + "title": "Escanear" }, "setup_otp": "Configurar palavra-passe de utilização única", "title": "Autenticação de Dois Fatores", @@ -566,7 +566,7 @@ "fine_print": "Leia nosso {0} para não aprender nada!", "header": "Pré-visualizar", "header_faint": "Isto está bem", - "input": "Acabei de chegar a Lisboa.", + "input": "Acabei de chegar na Lua", "link": "um belo link", "mono": "conteúdo", "text": "Vários {0} e {1}" @@ -648,7 +648,7 @@ "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": "(não recomendado, experimental, pode omitir publicações)", + "useStreamingApiWarning": "É legal usar isso. Se der algum problema, atualize, eu acho?", "use_contain_fit": "Não cortar o anexo na miniatura", "use_one_click_nsfw": "Abrir anexos sensíveis com um clique", "user_mutes": "Utilizadores", From 5174b959184bd413c980900e73bd11c347bdb897 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 4 Aug 2023 13:34:26 +0000 Subject: [PATCH 21/23] Translated using Weblate (Greek) Currently translated at 15.4% (162 of 1046 strings) Added translation using Weblate (Greek) Co-authored-by: Weblate Co-authored-by: getimiskon Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/el/ Translation: Pleroma fe/pleroma-fe --- src/i18n/el.json | 215 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 src/i18n/el.json diff --git a/src/i18n/el.json b/src/i18n/el.json new file mode 100644 index 00000000..f09d18a9 --- /dev/null +++ b/src/i18n/el.json @@ -0,0 +1,215 @@ +{ + "about": { + "mrf": { + "keyword": { + "keyword_policies": "Πολιτικές λέξεων-κλειδιών", + "reject": "Απόρριψη", + "replace": "Αντικατάσταση" + }, + "mrf_policies": "Ενεργοποιημένες πολιτικές MRF", + "mrf_policies_desc": "", + "simple": { + "accept": "Αποδοχή", + "accept_desc": "Αυτό το instance αποδέχεται μηνύματα μόνο από τα ακόλουθα instances:", + "ftl_removal": "Αφαίρεση από το χρονολόγιο \"Γνωστού Δίκτυου\"", + "ftl_removal_desc": "Αυτό το instance αφαιρεί αυτά τα instances από το χρονολόγιο \"Γνωστού Δικτύου\":", + "quarantine": "Καραντίνα", + "quarantine_desc": "Αυτό το instance δε θα στέλνει αναρτήσεις στα ακόλουθα instances:", + "reason": "Λόγος", + "simple_policies": "Πολιτικές του instance" + } + } + }, + "announcements": { + "all_day_prompt": "Αυτό είναι ένα ολοήμερο συμβάν", + "cancel_edit_action": "Ακύρωση", + "close_error": "Κλείσιμο", + "delete_action": "Διαγραφή", + "edit_action": "Επεξεργασία", + "end_time_display": "Λήγει στις {time}", + "page_header": "Ανακοινώσεις", + "title": "Ανακοίνωση" + }, + "chats": { + "empty_message_error": "Δε μπορεί να σταλεί κενό μήνυμα", + "error_sending_message": "Κάτι πήγε λάθος κατά την αποστολή του μηνύματος.", + "message_user": "Στείλε μήνυμα στον/στην {nickname}", + "more": "Περισσότερα", + "new": "Νέο Chat", + "you": "Εσείς:" + }, + "display_date": { + "today": "Σήμερα" + }, + "domain_mute_card": { + "mute": "Σίγαση" + }, + "emoji": { + "add_emoji": "Εισαγωγή emoji", + "load_all": "Φόρτωση όλων των {emojiAmount} emoji", + "recent": "Χρησιμοποιήθηκαν πρόσφατα", + "search_emoji": "Αναζήτηση για ένα emoji", + "stickers": "Αυτοκόλλητα" + }, + "errors": { + "storage_unavailable": "Το Pleroma δε μπόρεσε να προσπελάσει τον αποθηκευτικό χώρο του browser. Η σύνδεσή σας ή οι τοπικές ρυθμίσεις σας δε θα αποθηκευτούν και μπορεί να αντιμετωπίσετε απρόοπτα θέματα. Προσπαθήστε να ενεργοποιήσετε τα cookies." + }, + "exporter": { + "export": "Εξαγωγή" + }, + "features_panel": { + "text_limit": "Όριο κειμένου" + }, + "file_type": { + "audio": "Ήχος", + "file": "Αρχείο", + "image": "Εικόνα", + "video": "Βίντεο" + }, + "general": { + "apply": "Εφαρμογή", + "cancel": "Ακύρωση", + "close": "Κλείσιμο", + "disable": "Απενεργοποίηση", + "enable": "Ενεργοποίηση", + "error_retry": "Παρακαλώ δοκιμάστε ξανά", + "flash_content": "Κάντε κλικ για την εμφάνιση Flash περιεχομένου με τη χρήση του Ruffle (Πειραματικό, μπορεί να μη λειτουργεί).", + "loading": "Φόρτωση…", + "more": "Περισσότερα", + "optional": "προαιρετικό", + "retry": "Δοκιμάστε ξανά", + "role": { + "admin": "Διαχειριστής", + "moderator": "Συντονιστής" + }, + "scope_in_timeline": { + "direct": "Άμεσο", + "local": "Τοπικό", + "private": "Μόνο για ακόλουθους", + "public": "Δημόσιο", + "unlisted": "Εκτός Λίστας" + }, + "show_less": "Δείξε λιγότερα", + "show_more": "Δείξε περισσότερα" + }, + "image_cropper": { + "cancel": "Ακύρωση", + "crop_picture": "Περικοπή εικόνας", + "save": "Αποθήκευση", + "save_without_cropping": "Αποθήκευση χωρίς περικοπή" + }, + "importer": { + "success": "Εισήχθη επιτυχώς." + }, + "languages": { + "ar": "Αραβικά", + "az": "Αζερικά", + "bg": "Βουλγαρικά", + "cs": "Τσεχικά", + "da": "Δανικά", + "de": "Γερμανικά", + "el": "Ελληνικά", + "en": "Αγγλικά", + "eo": "Εσπεράντο", + "es": "Ισπανικά", + "fa": "Περσικά", + "fi": "Φινλανδικά", + "fr": "Γαλλικά", + "ga": "Ιρλανδικά", + "he": "Εβραϊκά", + "hi": "Χίντι", + "hu": "Ουγγρικά", + "id": "Ινδονησιακά", + "it": "Ιταλικά", + "ja": "Ιαπωνικά", + "ko": "Κορεατικά", + "lt": "Λιθουανικά", + "lv": "Λετονικά", + "nl": "Ολλανδικά", + "pl": "Πολωνικά", + "pt": "Πορτογαλικά", + "ru": "Ρωσικά", + "sk": "Σλοβακικά", + "sv": "Σουηδικά", + "tr": "Τουρκικά", + "translated_from": { + "ar": "Μεταφράστηκε από τα @:languages.ar", + "az": "Μεταφράστηκε από τα @:languages.az", + "bg": "Μεταφράστηκε από τα @:languages.bg", + "cs": "Μεταφράστηκε από τα @:languages.cs", + "da": "Μεταφράστηκε από τα @:languages.da", + "de": "Μεταφράστηκε από τα @:languages.de", + "el": "Μεταφράστηκε από τα @:languages.el", + "en": "Μεταφράστηκε από τα @:languages.en", + "eo": "Μεταφράστηκε από τα @:languages.eo", + "es": "Μεταφράστηκε από τα @:languages.es", + "fa": "Μεταφράστηκε από τα @:languages.fa", + "fi": "Μεταφράστηκε από τα @:languages.fi", + "fr": "Μεταφράστηκε από τα @:languages.fr", + "ga": "Μεταφράστηκε από τα @:languages.ga", + "he": "Μεταφράστηκε από τα @:languages.he", + "hi": "Μεταφράστηκε από τα @:languages.hi", + "hu": "Μεταφράστηκε από τα @:languages.hu", + "id": "Μεταφράστηκε από τα @:languages.id", + "it": "Μεταφράστηκε από τα @:languages.it", + "ja": "Μεταφράστηκε από τα @:languages.ja", + "ko": "Μεταφράστηκε από τα @:languages.ko", + "lt": "Μεταφράστηκε από τα @:languages.lt", + "lv": "Μεταφράστηκε από τα @:languages.lv", + "nl": "Μεταφράστηκε από τα @:languages.nl", + "pl": "Μεταφράστηκε από τα @:languages.pl", + "pt": "Μεταφράστηκε από τα @:languages.pt", + "ru": "Μεταφράστηκε από τα @:languages.ru", + "sk": "Μεταφράστηκε από τα @:languages.sk", + "sv": "Μεταφράστηκε από τα @:languages.sv", + "tr": "tr", + "uk": "Μεταφράστηκε από τα @:languages.uk", + "zh": "Μεταφράστηκε από τα @:languages.zh" + }, + "uk": "Ουκρανικά", + "zh": "Κινεζικά" + }, + "lists": { + "create": "Δημιουργία", + "delete": "Διαγραφή λίστας", + "lists": "Λίστες", + "new": "Νέα Λίστα", + "save": "Αποθήκευση αλλαγών", + "search": "Αναζήτηση χρηστών", + "title": "Τίτλος λίστας" + }, + "login": { + "authentication_code": "Κωδικός επαλήθευσης", + "description": "Σύνδεση με OAuth", + "enter_recovery_code": "Εισάγετε τον κωδικό ανάκτησης", + "hint": "Συνδεθείτε για να μπείτε στη συζήτηση", + "login": "Σύνδεση", + "logout": "Αποσύνδεση", + "logout_confirm": "Θέλετε σίγουρα να αποσυνδεθείτε;", + "logout_confirm_accept_button": "Αποσύνδεση", + "logout_confirm_cancel_button": "Ακύρωση", + "logout_confirm_title": "Αποσύνδεση", + "password": "Κωδικός πρόσβασης", + "placeholder": "τοονομαχρηστημου", + "recovery_code": "Κωδικός ανάκτησης", + "register": "Εγγραφή", + "username": "Όνομα χρήστη" + }, + "media_modal": { + "next": "Επόμενο", + "previous": "Προηγούμενο" + }, + "moderation": { + "reports": { + "add_note": "Προσθήκη σημείωσης", + "close": "Κλείσιμο", + "delete_note": "Διαγραφή", + "delete_note_accept": "Ναι, διάγραψέ το", + "delete_note_cancel": "Όχι, κράτα το", + "delete_note_confirm": "Θέλετε σίγουρα να διαγράψετε αυτήν τη σημείωση;", + "note_placeholder": "Αφήστε μια σημείωση", + "notes": "{ count } σημείωση | { count } σημειώσεις", + "statuses": "{ count } ανάρτηση| { count } αναρτήσεις" + } + } +} From 29cfdcbbcdb5076e9b2d17c11184c5c59d9fc024 Mon Sep 17 00:00:00 2001 From: tusooa Date: Fri, 4 Aug 2023 15:54:04 +0100 Subject: [PATCH 22/23] Add load more to blocks/mutes --- src/components/list/list.vue | 6 ++- .../tabs/mutes_and_blocks_tab.js | 11 +++-- src/modules/users.js | 42 ++++++++++++++++--- src/services/api/api.service.js | 17 ++++++-- 4 files changed, 61 insertions(+), 15 deletions(-) diff --git a/src/components/list/list.vue b/src/components/list/list.vue index a6223cce..ef66e051 100644 --- a/src/components/list/list.vue +++ b/src/components/list/list.vue @@ -1,9 +1,13 @@