forked from AkkomaGang/akkoma
Compare commits
26 commits
153539a246
...
9f34294332
Author | SHA1 | Date | |
---|---|---|---|
9f34294332 | |||
d3089ec399 | |||
f22c6e4108 | |||
3f03f1df9c | |||
9dc3f8fcdc | |||
3744789710 | |||
ea30d22dfe | |||
|
b4952a81fe | ||
292f0444d0 | |||
a18b5755b4 | |||
ef279ac53f | |||
b4e37b03d8 | |||
f92484fd01 | |||
6e07ed6ea9 | |||
d2b57a7f9e | |||
439e915531 | |||
|
b71db2f82d | ||
aeb68a0ad1 | |||
56c37dc6b3 | |||
3405623d46 | |||
702979bca3 | |||
|
7e3ede02f7 | ||
d601ddeb91 | |||
676cc0d0d7 | |||
|
ce6f652a9a | ||
|
377527ea03 |
29 changed files with 2313 additions and 2037 deletions
|
@ -95,7 +95,7 @@ pipeline:
|
||||||
|
|
||||||
# Canonical amd64
|
# Canonical amd64
|
||||||
ubuntu22:
|
ubuntu22:
|
||||||
image: hexpm/elixir:1.14.2-erlang-25.1.2-ubuntu-jammy-20220428
|
image: hexpm/elixir:1.14.3-erlang-25.2.2-ubuntu-jammy-20221130
|
||||||
<<: *on-release
|
<<: *on-release
|
||||||
environment:
|
environment:
|
||||||
MIX_ENV: prod
|
MIX_ENV: prod
|
||||||
|
@ -122,7 +122,7 @@ pipeline:
|
||||||
- /bin/sh /entrypoint.sh
|
- /bin/sh /entrypoint.sh
|
||||||
|
|
||||||
debian-bullseye:
|
debian-bullseye:
|
||||||
image: hexpm/elixir:1.14.2-erlang-25.1.2-debian-bullseye-20221004
|
image: hexpm/elixir:1.14.3-erlang-25.2.2-debian-bullseye-20230109
|
||||||
<<: *on-release
|
<<: *on-release
|
||||||
environment:
|
environment:
|
||||||
MIX_ENV: prod
|
MIX_ENV: prod
|
||||||
|
@ -151,8 +151,8 @@ pipeline:
|
||||||
|
|
||||||
# Canonical amd64-musl
|
# Canonical amd64-musl
|
||||||
musl:
|
musl:
|
||||||
image: hexpm/elixir:1.14.2-erlang-25.1.2-alpine-3.16.2
|
image: hexpm/elixir:1.14.3-erlang-25.2.2-alpine-3.15.6
|
||||||
<<: *on-stable
|
<<: *on-release
|
||||||
environment:
|
environment:
|
||||||
MIX_ENV: prod
|
MIX_ENV: prod
|
||||||
commands:
|
commands:
|
||||||
|
@ -167,7 +167,7 @@ pipeline:
|
||||||
|
|
||||||
release-musl:
|
release-musl:
|
||||||
image: akkoma/releaser
|
image: akkoma/releaser
|
||||||
<<: *on-stable
|
<<: *on-release
|
||||||
secrets: *scw-secrets
|
secrets: *scw-secrets
|
||||||
commands:
|
commands:
|
||||||
- export SOURCE=akkoma-amd64-musl.zip
|
- export SOURCE=akkoma-amd64-musl.zip
|
||||||
|
|
|
@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
## Fixed
|
||||||
|
|
||||||
|
- Allowed contentMap to be updated on edit
|
||||||
|
|
||||||
|
## 2023.02
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- Prometheus metrics exporting from `/api/v1/akkoma/metrics`
|
- Prometheus metrics exporting from `/api/v1/akkoma/metrics`
|
||||||
- Ability to alter http pool size
|
- Ability to alter http pool size
|
||||||
|
@ -37,6 +43,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- Simplified HTTP signature processing
|
- Simplified HTTP signature processing
|
||||||
- Rich media will now hard-exit after 5 seconds, to prevent timeline hangs
|
- Rich media will now hard-exit after 5 seconds, to prevent timeline hangs
|
||||||
- HTTP Content Security Policy is now far more strict to prevent any potential XSS/CSS leakages
|
- HTTP Content Security Policy is now far more strict to prevent any potential XSS/CSS leakages
|
||||||
|
- Follow requests are now paginated, matches mastodon API spec, so use the Link header to paginate.
|
||||||
|
- `internal.fetch` and `relay` actors are now represented with the actor type `Application`
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- /api/v1/accounts/lookup will now respect restrict\_unauthenticated
|
- /api/v1/accounts/lookup will now respect restrict\_unauthenticated
|
||||||
|
|
|
@ -354,7 +354,7 @@ config :pleroma, :manifest,
|
||||||
|
|
||||||
config :pleroma, :activitypub,
|
config :pleroma, :activitypub,
|
||||||
unfollow_blocked: true,
|
unfollow_blocked: true,
|
||||||
outgoing_blocks: true,
|
outgoing_blocks: false,
|
||||||
blockers_visible: true,
|
blockers_visible: true,
|
||||||
follow_handshake_timeout: 500,
|
follow_handshake_timeout: 500,
|
||||||
note_replies_output_limit: 5,
|
note_replies_output_limit: 5,
|
||||||
|
|
|
@ -790,7 +790,7 @@ config :pleroma, :config_description, [
|
||||||
%{
|
%{
|
||||||
key: :healthcheck,
|
key: :healthcheck,
|
||||||
type: :boolean,
|
type: :boolean,
|
||||||
description: "If enabled, system data will be shown on `/api/pleroma/healthcheck`"
|
description: "If enabled, system data will be shown on `/api/v1/pleroma/healthcheck`"
|
||||||
},
|
},
|
||||||
%{
|
%{
|
||||||
key: :remote_post_retention_days,
|
key: :remote_post_retention_days,
|
||||||
|
|
|
@ -25,7 +25,7 @@ Apps listed here might not support all of Akkoma's features.
|
||||||
- Features: MastoAPI, Streaming Ready, Moderation, Text Formatting
|
- Features: MastoAPI, Streaming Ready, Moderation, Text Formatting
|
||||||
|
|
||||||
### Husky
|
### Husky
|
||||||
- Source code: <https://git.sr.ht/~captainepoch/husky>
|
- Source code: <https://codeberg.org/husky/husky>
|
||||||
- Contact: [@captainepoch@stereophonic.space](https://stereophonic.space/captainepoch)
|
- Contact: [@captainepoch@stereophonic.space](https://stereophonic.space/captainepoch)
|
||||||
- Platforms: Android
|
- Platforms: Android
|
||||||
- Features: MastoAPI, No Streaming, Emoji Reactions, Text Formatting, FE Stickers
|
- Features: MastoAPI, No Streaming, Emoji Reactions, Text Formatting, FE Stickers
|
||||||
|
@ -45,10 +45,10 @@ Apps listed here might not support all of Akkoma's features.
|
||||||
|
|
||||||
## Alternative Web Interfaces
|
## Alternative Web Interfaces
|
||||||
### Pinafore
|
### Pinafore
|
||||||
|
- Note: Pinafore is unmaintained (See [the author's original article](https://nolanlawson.com/2023/01/09/retiring-pinafore/) for details)
|
||||||
- Homepage: <https://pinafore.social/>
|
- Homepage: <https://pinafore.social/>
|
||||||
- Source Code: <https://github.com/nolanlawson/pinafore>
|
- Source Code: <https://github.com/nolanlawson/pinafore>
|
||||||
- Contact: [@pinafore@mastodon.technology](https://mastodon.technology/users/pinafore)
|
- Contact: [@pinafore@mastodon.technology](https://mastodon.technology/users/pinafore)
|
||||||
- Note: Pleroma support is a secondary goal
|
|
||||||
- Features: MastoAPI, No Streaming
|
- Features: MastoAPI, No Streaming
|
||||||
|
|
||||||
### Sengi
|
### Sengi
|
||||||
|
|
|
@ -6,6 +6,31 @@ Akkoma performance is largely dependent on performance of the underlying databas
|
||||||
|
|
||||||
[PgTune](https://pgtune.leopard.in.ua) can be used to get recommended settings. Be sure to set "Number of Connections" to 20, otherwise it might produce settings hurtful to database performance. It is also recommended to not use "Network Storage" option.
|
[PgTune](https://pgtune.leopard.in.ua) can be used to get recommended settings. Be sure to set "Number of Connections" to 20, otherwise it might produce settings hurtful to database performance. It is also recommended to not use "Network Storage" option.
|
||||||
|
|
||||||
|
If your server runs other services, you may want to take that into account. E.g. if you have 4G ram, but 1G of it is already used for other services, it may be better to tell PGTune you only have 3G. In the end, PGTune only provides recomended settings, you can always try to finetune further.
|
||||||
|
|
||||||
|
### Example configurations
|
||||||
|
|
||||||
|
Here are some configuration suggestions for PostgreSQL 10+.
|
||||||
|
|
||||||
|
#### 1GB RAM, 1 CPU
|
||||||
|
```
|
||||||
|
shared_buffers = 256MB
|
||||||
|
effective_cache_size = 768MB
|
||||||
|
maintenance_work_mem = 64MB
|
||||||
|
work_mem = 13107kB
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2GB RAM, 2 CPU
|
||||||
|
```
|
||||||
|
shared_buffers = 512MB
|
||||||
|
effective_cache_size = 1536MB
|
||||||
|
maintenance_work_mem = 128MB
|
||||||
|
work_mem = 26214kB
|
||||||
|
max_worker_processes = 2
|
||||||
|
max_parallel_workers_per_gather = 1
|
||||||
|
max_parallel_workers = 2
|
||||||
|
```
|
||||||
|
|
||||||
## Disable generic query plans
|
## Disable generic query plans
|
||||||
|
|
||||||
When PostgreSQL receives a query, it decides on a strategy for searching the requested data, this is called a query plan. The query planner has two modes: generic and custom. Generic makes a plan for all queries of the same shape, ignoring the parameters, which is then cached and reused. Custom, on the contrary, generates a unique query plan based on query parameters.
|
When PostgreSQL receives a query, it decides on a strategy for searching the requested data, this is called a query plan. The query planner has two modes: generic and custom. Generic makes a plan for all queries of the same shape, ignoring the parameters, which is then cached and reused. Custom, on the contrary, generates a unique query plan based on query parameters.
|
||||||
|
@ -23,26 +48,3 @@ config :pleroma, Pleroma.Repo,
|
||||||
```
|
```
|
||||||
|
|
||||||
A more detailed explaination of the issue can be found at <https://blog.soykaf.com/post/postgresql-elixir-troubles/>.
|
A more detailed explaination of the issue can be found at <https://blog.soykaf.com/post/postgresql-elixir-troubles/>.
|
||||||
|
|
||||||
## Example configurations
|
|
||||||
|
|
||||||
Here are some configuration suggestions for PostgreSQL 10+.
|
|
||||||
|
|
||||||
### 1GB RAM, 1 CPU
|
|
||||||
```
|
|
||||||
shared_buffers = 256MB
|
|
||||||
effective_cache_size = 768MB
|
|
||||||
maintenance_work_mem = 64MB
|
|
||||||
work_mem = 13107kB
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2GB RAM, 2 CPU
|
|
||||||
```
|
|
||||||
shared_buffers = 512MB
|
|
||||||
effective_cache_size = 1536MB
|
|
||||||
maintenance_work_mem = 128MB
|
|
||||||
work_mem = 26214kB
|
|
||||||
max_worker_processes = 2
|
|
||||||
max_parallel_workers_per_gather = 1
|
|
||||||
max_parallel_workers = 2
|
|
||||||
```
|
|
||||||
|
|
|
@ -1 +1,48 @@
|
||||||
This section contains notes and guidelines for developers.
|
# Contributing to Akkoma
|
||||||
|
|
||||||
|
You wish to add a new feature in Akkoma, but don't know how to proceed? This guide takes you through the various steps of the development and contribution process.
|
||||||
|
|
||||||
|
If you're looking for stuff to implement or fix, check the [bug-tracker](https://akkoma.dev/AkkomaGang/akkoma/issues) or [forum](https://meta.akkoma.dev/c/requests/5).
|
||||||
|
|
||||||
|
Come say hi to us in the [#akkoma-dev chat room](./../#irc)!
|
||||||
|
|
||||||
|
## Akkoma Clients
|
||||||
|
|
||||||
|
Akkoma is the back-end. Clients have their own repositories and often separate projects. You can check what clients work with Akkoma [on the clients page](../clients/). If you maintain a working client not listed yet, feel free to make a PR [to these docs](./#docs)!
|
||||||
|
|
||||||
|
For resources on APIs and such, check the sidebar of this page.
|
||||||
|
|
||||||
|
## Docs
|
||||||
|
|
||||||
|
The docs are written in Markdown, including certain extensions, and can be found [in the docs folder of the Akkoma repo](https://akkoma.dev/AkkomaGang/akkoma/src/branch/develop/docs/). The content itself is stored in the `docs` subdirectory.
|
||||||
|
|
||||||
|
## Technology
|
||||||
|
|
||||||
|
Akkoma is written in [Elixir](https://elixir-lang.org/) and uses [Postgresql](https://www.postgresql.org/) for database. We use [Git](https://git-scm.com/) for collaboration and tracking code changes. Furthermore it can typically run on [Unix and Unix-like OS'es](https://en.wikipedia.org/wiki/Unix-like). For development, you should use an OS which [can run Akkoma](../installation/debian_based_en/).
|
||||||
|
|
||||||
|
It's good to have at least some basic understanding of at least Git and Elixir. If this is completely new for you, there's some [videos explaining Git](https://git-scm.com/doc) and Codeberg has a nice article explaining the typical [pull requests Git flow](https://docs.codeberg.org/collaborating/pull-requests-and-git-flow/). For Elixir, you can follow Elixir's own [Getting Started guide](https://elixir-lang.org/getting-started/introduction.html).
|
||||||
|
|
||||||
|
## Setting up a development environment
|
||||||
|
|
||||||
|
The best way to start is getting the software to run from source so you can start poking on it. Check out the [guides for setting up an Akkoma instance for development](setting_up_akkoma_dev/#setting-up-a-akkoma-development-environment).
|
||||||
|
|
||||||
|
## General overview
|
||||||
|
### Modules
|
||||||
|
|
||||||
|
Akkoma has several modules. There are modules for [uploading](https://akkoma.dev/AkkomaGang/akkoma/src/branch/develop/lib/pleroma/uploaders), [upload filters](https://akkoma.dev/AkkomaGang/akkoma/src/branch/develop/lib/pleroma/upload/filter), [translators](https://akkoma.dev/AkkomaGang/akkoma/src/branch/develop/lib/pleroma/akkoma/translators)... The most famous ones are without a doubt the [MRF policies](https://akkoma.dev/AkkomaGang/akkoma/src/branch/develop/lib/pleroma/web/activity_pub/mrf). Modules are often self contained and a good way to start with development because you don't have to think about much more than just the module itself. We even have an example on [writing your own MRF policy](/configuration/mrf/#writing-your-own-mrf-policy)!
|
||||||
|
|
||||||
|
Another easy entry point is the [mix tasks](https://akkoma.dev/AkkomaGang/akkoma/src/branch/develop/lib/mix/tasks/pleroma). They too are often self contained and don't need you to go through much of the code.
|
||||||
|
|
||||||
|
### Activity Streams/Activity Pub
|
||||||
|
|
||||||
|
Akkoma uses Activity Streams for both federation, as well as internal representation. It may be interesting to at least go over the specifications of [Activity Pub](https://www.w3.org/TR/activitypub/), [Activity Streams 2.0](https://www.w3.org/TR/activitystreams-core/), and [Activity Streams Vocabulary](https://www.w3.org/TR/activitystreams-vocabulary/). Note that these are not enough to have a full grasp of how everything works, but should at least give you the basics to understand how messages are passed between and inside Akkoma instances.
|
||||||
|
|
||||||
|
## Don't forget
|
||||||
|
|
||||||
|
When you make changes, you're expected to create [a Pull Request](https://akkoma.dev/AkkomaGang/akkoma/pulls). You don't have to wait until you finish to create the PR, but please do prefix the title of the PR with "WIP: " for as long as you're still working on it. The sooner you create your PR, the sooner people know what you are working on and the sooner you can get feedback and, if needed, help. You can then simply keep working on it until you are finished.
|
||||||
|
|
||||||
|
When doing changes, don't forget to add it to the relevant parts of the [CHANGELOG.md](https://akkoma.dev/AkkomaGang/akkoma/src/branch/develop/CHANGELOG.md).
|
||||||
|
|
||||||
|
You're expected to write [tests](https://elixirschool.com/en/lessons/testing/basics). While code is generally stored in the `lib` directory, tests are stored in the `test` directory using a similar folder structure. Feel free to peak at other tests to see how they are done. Obviously tests are expected to pass and properly test the functionality you added. If you feel really confident, you could even try to [write a test first and then write the code needed to make it pass](https://en.wikipedia.org/wiki/Test-driven_development)!
|
||||||
|
|
||||||
|
Code is formatted using the default formatter that comes with Elixir. You can format a file with e.g. `mix format /path/to/file.ex`. To check if everything is properly formatted, you can run `mix format --check-formatted`.
|
||||||
|
|
|
@ -5,21 +5,36 @@ Akkoma requires some adjustments from the defaults for running the instance loca
|
||||||
## Installing
|
## Installing
|
||||||
|
|
||||||
1. Install Akkoma as explained in [the docs](../installation/debian_based_en.md), with some exceptions:
|
1. Install Akkoma as explained in [the docs](../installation/debian_based_en.md), with some exceptions:
|
||||||
* You can use your own fork of the repository and add akkoma as a remote `git remote add akkoma 'https://akkoma.dev/AkkomaGang/akkoma.git'`
|
|
||||||
* You can skip systemd and nginx and all that stuff
|
|
||||||
* No need to create a dedicated akkoma user, it's easier to just use your own user
|
* No need to create a dedicated akkoma user, it's easier to just use your own user
|
||||||
* For the DB you can still choose a dedicated user, the mix tasks set it up for you so it's no extra work for you
|
* You can use your own fork of the repository and add akkoma as a remote `git remote add akkoma 'https://akkoma.dev/AkkomaGang/akkoma.git'`
|
||||||
* For domain you can use `localhost`
|
* For domain you can use `localhost`
|
||||||
|
* For the DB you can still choose a dedicated user. The mix tasks sets it up, so it's no extra work for you
|
||||||
* instead of creating a `prod.secret.exs`, create `dev.secret.exs`
|
* instead of creating a `prod.secret.exs`, create `dev.secret.exs`
|
||||||
* No need to prefix with `MIX_ENV=prod`. We're using dev and that's the default MIX_ENV
|
* No need to prefix with `MIX_ENV=prod`. We're using dev and that's the default MIX_ENV
|
||||||
|
* You can skip nginx and systemd
|
||||||
|
* For front-end, you'll probably want to install and use the develop branch instead of the stable branch. There's no guarantee that the stable branch of the FE will always work on the develop branch of the BE.
|
||||||
2. Change the dev.secret.exs
|
2. Change the dev.secret.exs
|
||||||
|
* Change the FE settings to use the installed branch (see also [Frontend Management](/configuration/frontend_management/))
|
||||||
* Change the scheme in `config :pleroma, Pleroma.Web.Endpoint` to http (see examples below)
|
* Change the scheme in `config :pleroma, Pleroma.Web.Endpoint` to http (see examples below)
|
||||||
* If you want to change other settings, you can do that too
|
* If you want to change other settings, you can do that too
|
||||||
3. You can now start the server `mix phx.server`. Once it's build and started, you can access the instance on `http://<host>:<port>` (e.g.http://localhost:4000 ) and should be able to do everything locally you normaly can.
|
3. You can now start the server with `mix phx.server`. Once it's build and started, you can access the instance on `http://<host>:<port>` (e.g.http://localhost:4000 ) and should be able to do everything locally you normally can.
|
||||||
|
|
||||||
|
Example on how to install pleroma-fe and admin-fe using it's develop branch
|
||||||
|
```sh
|
||||||
|
mix pleroma.frontend install pleroma-fe --ref develop
|
||||||
|
mix pleroma.frontend install admin-fe --ref develop
|
||||||
|
```
|
||||||
|
|
||||||
|
Example config to use the pleroma-fe and admin-fe installed from the develop branch
|
||||||
|
```elixir
|
||||||
|
config :pleroma, :frontends,
|
||||||
|
primary: %{"name" => "pleroma-fe", "ref" => "develop"},
|
||||||
|
admin: %{"name" => "admin-fe", "ref" => "develop"}
|
||||||
|
```
|
||||||
|
|
||||||
Example config to change the scheme to http. Change the port if you want to run on another port.
|
Example config to change the scheme to http. Change the port if you want to run on another port.
|
||||||
```elixir
|
```elixir
|
||||||
config :pleroma, Pleroma.Web.Endpoint,
|
config :pleroma, Pleroma.Web.Endpoint,
|
||||||
url: [host: "localhost", scheme: "http", port: 4000],
|
url: [host: "localhost", scheme: "http", port: 4000],
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -94,4 +109,4 @@ Update Akkoma as explained in [the docs](../administration/updating.md). Just ma
|
||||||
|
|
||||||
## Working on multiple branches
|
## Working on multiple branches
|
||||||
|
|
||||||
If you develop on a separate branch, it's possible you did migrations that aren't merged into another branch you're working on. If you have multiple things you're working on, it's probably best to set up multiple Akkoma instances each with their own database. If you finished with a branch and want to switch back to develop to start a new branch from there, you can drop the database and recreate the database (e.g. by using `config/setup_db.psql`). The commands to drop and recreate the database can be found in [the docs](../administration/backup.md).
|
If you develop on a separate branch, it's possible you did migrations that aren't merged into another branch you're working on. In that case, it's probably best to set up multiple Akkoma instances each with their own database. If you finished with a branch and want to switch back to develop to start a new branch from there, you can drop the database and recreate the database (e.g. by using `config/setup_db.psql`). The commands to drop and recreate the database can be found in [the docs](../administration/backup.md).
|
||||||
|
|
|
@ -38,7 +38,8 @@ defmodule Pleroma.Constants do
|
||||||
"summary",
|
"summary",
|
||||||
"sensitive",
|
"sensitive",
|
||||||
"attachment",
|
"attachment",
|
||||||
"generator"
|
"generator",
|
||||||
|
"contentMap"
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -155,14 +155,13 @@ defmodule Pleroma.FollowingRelationship do
|
||||||
|> Repo.aggregate(:count, :id)
|
|> Repo.aggregate(:count, :id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_follow_requests(%User{id: id}) do
|
def get_follow_requests_query(%User{id: id}) do
|
||||||
__MODULE__
|
__MODULE__
|
||||||
|> join(:inner, [r], f in assoc(r, :follower))
|
|> join(:inner, [r], f in assoc(r, :follower), as: :follower)
|
||||||
|> where([r], r.state == ^:follow_pending)
|
|> where([r], r.state == ^:follow_pending)
|
||||||
|> where([r], r.following_id == ^id)
|
|> where([r], r.following_id == ^id)
|
||||||
|> where([r, f], f.is_active == true)
|
|> where([r, follower: f], f.is_active == true)
|
||||||
|> select([r, f], f)
|
|> select([r, follower: f], f)
|
||||||
|> Repo.all()
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def following?(%User{id: follower_id}, %User{id: followed_id}) do
|
def following?(%User{id: follower_id}, %User{id: followed_id}) do
|
||||||
|
|
|
@ -124,8 +124,8 @@ defmodule Pleroma.Formatter do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def markdown_to_html(text) do
|
def markdown_to_html(text, opts \\ %{}) do
|
||||||
Earmark.as_html!(text, %Earmark.Options{compact_output: true})
|
Earmark.as_html!(text, %Earmark.Options{compact_output: true} |> Map.merge(opts))
|
||||||
end
|
end
|
||||||
|
|
||||||
def html_escape({text, mentions, hashtags}, type) do
|
def html_escape({text, mentions, hashtags}, type) do
|
||||||
|
|
|
@ -273,7 +273,13 @@ defmodule Pleroma.User do
|
||||||
defdelegate following(user), to: FollowingRelationship
|
defdelegate following(user), to: FollowingRelationship
|
||||||
defdelegate following?(follower, followed), to: FollowingRelationship
|
defdelegate following?(follower, followed), to: FollowingRelationship
|
||||||
defdelegate following_ap_ids(user), to: FollowingRelationship
|
defdelegate following_ap_ids(user), to: FollowingRelationship
|
||||||
defdelegate get_follow_requests(user), to: FollowingRelationship
|
defdelegate get_follow_requests_query(user), to: FollowingRelationship
|
||||||
|
|
||||||
|
def get_follow_requests(user) do
|
||||||
|
get_follow_requests_query(user)
|
||||||
|
|> Repo.all()
|
||||||
|
end
|
||||||
|
|
||||||
defdelegate search(query, opts \\ []), to: User.Search
|
defdelegate search(query, opts \\ []), to: User.Search
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
|
@ -1994,6 +2000,7 @@ defmodule Pleroma.User do
|
||||||
%User{
|
%User{
|
||||||
invisible: true,
|
invisible: true,
|
||||||
local: true,
|
local: true,
|
||||||
|
actor_type: "Application",
|
||||||
ap_id: uri,
|
ap_id: uri,
|
||||||
nickname: nickname,
|
nickname: nickname,
|
||||||
follower_address: uri <> "/followers"
|
follower_address: uri <> "/followers"
|
||||||
|
|
|
@ -104,9 +104,9 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# https://github.com/misskey-dev/misskey/pull/8787
|
# See https://akkoma.dev/FoundKeyGang/FoundKey/issues/343
|
||||||
# Misskey has an awful tendency to drop all custom formatting when it sends remotely
|
# Misskey/Foundkey drops some of the custom formatting when it sends remotely
|
||||||
# So this basically reprocesses their MFM source
|
# So this basically reprocesses the MFM source
|
||||||
defp fix_misskey_content(
|
defp fix_misskey_content(
|
||||||
%{"source" => %{"mediaType" => "text/x.misskeymarkdown", "content" => content}} = object
|
%{"source" => %{"mediaType" => "text/x.misskeymarkdown", "content" => content}} = object
|
||||||
)
|
)
|
||||||
|
@ -121,6 +121,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
|
||||||
Map.put(object, "content", linked)
|
Map.put(object, "content", linked)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# See https://github.com/misskey-dev/misskey/pull/8787
|
||||||
|
# This is for compatibility with older Misskey instances
|
||||||
defp fix_misskey_content(%{"_misskey_content" => content} = object) when is_binary(content) do
|
defp fix_misskey_content(%{"_misskey_content" => content} = object) when is_binary(content) do
|
||||||
mention_handler = fn nick, buffer, opts, acc ->
|
mention_handler = fn nick, buffer, opts, acc ->
|
||||||
remote_mention_resolver(object, nick, buffer, opts, acc)
|
remote_mention_resolver(object, nick, buffer, opts, acc)
|
||||||
|
|
|
@ -19,6 +19,7 @@ defmodule Pleroma.Web.ApiSpec.FollowRequestOperation do
|
||||||
summary: "Retrieve follow requests",
|
summary: "Retrieve follow requests",
|
||||||
security: [%{"oAuth" => ["read:follows", "follow"]}],
|
security: [%{"oAuth" => ["read:follows", "follow"]}],
|
||||||
operationId: "FollowRequestController.index",
|
operationId: "FollowRequestController.index",
|
||||||
|
parameters: pagination_params(),
|
||||||
responses: %{
|
responses: %{
|
||||||
200 =>
|
200 =>
|
||||||
Operation.response("Array of Account", "application/json", %Schema{
|
Operation.response("Array of Account", "application/json", %Schema{
|
||||||
|
@ -62,4 +63,22 @@ defmodule Pleroma.Web.ApiSpec.FollowRequestOperation do
|
||||||
required: true
|
required: true
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp pagination_params do
|
||||||
|
[
|
||||||
|
Operation.parameter(:max_id, :query, :string, "Return items older than this ID"),
|
||||||
|
Operation.parameter(
|
||||||
|
:since_id,
|
||||||
|
:query,
|
||||||
|
:string,
|
||||||
|
"Return the oldest items newer than this ID"
|
||||||
|
),
|
||||||
|
Operation.parameter(
|
||||||
|
:limit,
|
||||||
|
:query,
|
||||||
|
%Schema{type: :integer, default: 20},
|
||||||
|
"Maximum number of items to return. Will be ignored if it's more than 40"
|
||||||
|
)
|
||||||
|
]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -289,7 +289,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do
|
||||||
|
|
||||||
def format_input(text, "text/x.misskeymarkdown", options) do
|
def format_input(text, "text/x.misskeymarkdown", options) do
|
||||||
text
|
text
|
||||||
|> Formatter.markdown_to_html()
|
|> Formatter.markdown_to_html(%{breaks: true})
|
||||||
|> MfmParser.Parser.parse()
|
|> MfmParser.Parser.parse()
|
||||||
|> MfmParser.Encoder.to_html()
|
|> MfmParser.Encoder.to_html()
|
||||||
|> Formatter.linkify(options)
|
|> Formatter.linkify(options)
|
||||||
|
|
|
@ -5,9 +5,13 @@
|
||||||
defmodule Pleroma.Web.MastodonAPI.FollowRequestController do
|
defmodule Pleroma.Web.MastodonAPI.FollowRequestController do
|
||||||
use Pleroma.Web, :controller
|
use Pleroma.Web, :controller
|
||||||
|
|
||||||
|
import Pleroma.Web.ControllerHelper,
|
||||||
|
only: [add_link_headers: 2]
|
||||||
|
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
alias Pleroma.Web.Plugs.OAuthScopesPlug
|
alias Pleroma.Web.Plugs.OAuthScopesPlug
|
||||||
|
alias Pleroma.Pagination
|
||||||
|
|
||||||
plug(Pleroma.Web.ApiSpec.CastAndValidate)
|
plug(Pleroma.Web.ApiSpec.CastAndValidate)
|
||||||
plug(:assign_follower when action != :index)
|
plug(:assign_follower when action != :index)
|
||||||
|
@ -24,10 +28,15 @@ defmodule Pleroma.Web.MastodonAPI.FollowRequestController do
|
||||||
defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.FollowRequestOperation
|
defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.FollowRequestOperation
|
||||||
|
|
||||||
@doc "GET /api/v1/follow_requests"
|
@doc "GET /api/v1/follow_requests"
|
||||||
def index(%{assigns: %{user: followed}} = conn, _params) do
|
def index(%{assigns: %{user: followed}} = conn, params) do
|
||||||
follow_requests = User.get_follow_requests(followed)
|
follow_requests =
|
||||||
|
followed
|
||||||
|
|> User.get_follow_requests_query()
|
||||||
|
|> Pagination.fetch_paginated(params, :keyset, :follower)
|
||||||
|
|
||||||
render(conn, "index.json", for: followed, users: follow_requests, as: :user)
|
conn
|
||||||
|
|> add_link_headers(follow_requests)
|
||||||
|
|> render("index.json", for: followed, users: follow_requests, as: :user)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc "POST /api/v1/follow_requests/:id/authorize"
|
@doc "POST /api/v1/follow_requests/:id/authorize"
|
||||||
|
|
|
@ -334,7 +334,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
|
||||||
%User{id: user_id}
|
%User{id: user_id}
|
||||||
) do
|
) do
|
||||||
count =
|
count =
|
||||||
User.get_follow_requests(user)
|
user
|
||||||
|
|> User.get_follow_requests()
|
||||||
|> length()
|
|> length()
|
||||||
|
|
||||||
data
|
data
|
||||||
|
|
2
mix.exs
2
mix.exs
|
@ -4,7 +4,7 @@ defmodule Pleroma.Mixfile do
|
||||||
def project do
|
def project do
|
||||||
[
|
[
|
||||||
app: :pleroma,
|
app: :pleroma,
|
||||||
version: version("3.5.0"),
|
version: version("3.6.0"),
|
||||||
elixir: "~> 1.12",
|
elixir: "~> 1.12",
|
||||||
elixirc_paths: elixirc_paths(Mix.env()),
|
elixirc_paths: elixirc_paths(Mix.env()),
|
||||||
compilers: [:phoenix] ++ Mix.compilers(),
|
compilers: [:phoenix] ++ Mix.compilers(),
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -10,176 +10,266 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:122
|
#: lib/pleroma/web/api_spec/render_error.ex:122
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - %{count} is not a multiple of %{multiple}."
|
msgid "%{name} - %{count} is not a multiple of %{multiple}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:131
|
#: lib/pleroma/web/api_spec/render_error.ex:131
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - %{value} is larger than exclusive maximum %{max}."
|
msgid "%{name} - %{value} is larger than exclusive maximum %{max}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:140
|
#: lib/pleroma/web/api_spec/render_error.ex:140
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - %{value} is larger than inclusive maximum %{max}."
|
msgid "%{name} - %{value} is larger than inclusive maximum %{max}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:149
|
#: lib/pleroma/web/api_spec/render_error.ex:149
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - %{value} is smaller than exclusive minimum %{min}."
|
msgid "%{name} - %{value} is smaller than exclusive minimum %{min}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:158
|
#: lib/pleroma/web/api_spec/render_error.ex:158
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - %{value} is smaller than inclusive minimum %{min}."
|
msgid "%{name} - %{value} is smaller than inclusive minimum %{min}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:102
|
#: lib/pleroma/web/api_spec/render_error.ex:102
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - Array items must be unique."
|
msgid "%{name} - Array items must be unique."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:114
|
#: lib/pleroma/web/api_spec/render_error.ex:114
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - Array length %{length} is larger than maxItems: %{}."
|
msgid "%{name} - Array length %{length} is larger than maxItems: %{}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:106
|
#: lib/pleroma/web/api_spec/render_error.ex:106
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - Array length %{length} is smaller than minItems: %{min}."
|
msgid "%{name} - Array length %{length} is smaller than minItems: %{min}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:166
|
#: lib/pleroma/web/api_spec/render_error.ex:166
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - Invalid %{type}. Got: %{value}."
|
msgid "%{name} - Invalid %{type}. Got: %{value}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:174
|
#: lib/pleroma/web/api_spec/render_error.ex:174
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - Invalid format. Expected %{format}."
|
msgid "%{name} - Invalid format. Expected %{format}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:51
|
#: lib/pleroma/web/api_spec/render_error.ex:51
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - Invalid schema.type. Got: %{type}."
|
msgid "%{name} - Invalid schema.type. Got: %{type}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:178
|
#: lib/pleroma/web/api_spec/render_error.ex:178
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - Invalid value for enum."
|
msgid "%{name} - Invalid value for enum."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:95
|
#: lib/pleroma/web/api_spec/render_error.ex:95
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - String length is larger than maxLength: %{length}."
|
msgid "%{name} - String length is larger than maxLength: %{length}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:88
|
#: lib/pleroma/web/api_spec/render_error.ex:88
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - String length is smaller than minLength: %{length}."
|
msgid "%{name} - String length is smaller than minLength: %{length}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:63
|
#: lib/pleroma/web/api_spec/render_error.ex:63
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - null value where %{type} expected."
|
msgid "%{name} - null value where %{type} expected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:60
|
#: lib/pleroma/web/api_spec/render_error.ex:60
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{name} - null value."
|
msgid "%{name} - null value."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:182
|
#: lib/pleroma/web/api_spec/render_error.ex:182
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed to cast to any schema in %{polymorphic_type}"
|
msgid "Failed to cast to any schema in %{polymorphic_type}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:71
|
#: lib/pleroma/web/api_spec/render_error.ex:71
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed to cast value as %{invalid_schema}. Value must be castable using `allOf` schemas listed."
|
msgid "Failed to cast value as %{invalid_schema}. Value must be castable using `allOf` schemas listed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:84
|
#: lib/pleroma/web/api_spec/render_error.ex:84
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed to cast value to one of: %{failed_schemas}."
|
msgid "Failed to cast value to one of: %{failed_schemas}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:78
|
#: lib/pleroma/web/api_spec/render_error.ex:78
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Failed to cast value using any of: %{failed_schemas}."
|
msgid "Failed to cast value using any of: %{failed_schemas}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:212
|
#: lib/pleroma/web/api_spec/render_error.ex:212
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Invalid value for header: %{name}."
|
msgid "Invalid value for header: %{name}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:204
|
#: lib/pleroma/web/api_spec/render_error.ex:204
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Missing field: %{name}."
|
msgid "Missing field: %{name}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:208
|
#: lib/pleroma/web/api_spec/render_error.ex:208
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Missing header: %{name}."
|
msgid "Missing header: %{name}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:196
|
#: lib/pleroma/web/api_spec/render_error.ex:196
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No value provided for required discriminator `%{field}`."
|
msgid "No value provided for required discriminator `%{field}`."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:216
|
#: lib/pleroma/web/api_spec/render_error.ex:216
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Object property count %{property_count} is greater than maxProperties: %{max_properties}."
|
msgid "Object property count %{property_count} is greater than maxProperties: %{max_properties}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:224
|
#: lib/pleroma/web/api_spec/render_error.ex:224
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Object property count %{property_count} is less than minProperties: %{min_properties}"
|
msgid "Object property count %{property_count} is less than minProperties: %{min_properties}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/static_fe/static_fe/error.html.eex:2
|
|
||||||
msgid "Oops"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:188
|
#: lib/pleroma/web/api_spec/render_error.ex:188
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Unexpected field: %{name}."
|
msgid "Unexpected field: %{name}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:200
|
#: lib/pleroma/web/api_spec/render_error.ex:200
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Unknown schema: %{name}."
|
msgid "Unknown schema: %{name}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/api_spec/render_error.ex:192
|
#: lib/pleroma/web/api_spec/render_error.ex:192
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Value used as discriminator for `%{field}` matches no schemas."
|
msgid "Value used as discriminator for `%{field}` matches no schemas."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/embed/show.html.eex:43
|
#: lib/pleroma/web/templates/embed/show.html.eex:43
|
||||||
#: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:37
|
#, elixir-autogen, elixir-format
|
||||||
msgid "announces"
|
msgid "announces"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/embed/show.html.eex:44
|
#: lib/pleroma/web/templates/embed/show.html.eex:44
|
||||||
#: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:38
|
#, elixir-autogen, elixir-format
|
||||||
msgid "likes"
|
msgid "likes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/embed/show.html.eex:42
|
#: lib/pleroma/web/templates/embed/show.html.eex:42
|
||||||
#: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:36
|
#, elixir-autogen, elixir-format
|
||||||
msgid "replies"
|
msgid "replies"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/embed/show.html.eex:27
|
#: lib/pleroma/web/templates/embed/show.html.eex:27
|
||||||
#: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:22
|
#, elixir-autogen, elixir-format
|
||||||
msgid "sensitive media"
|
msgid "sensitive media"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/layout/static_fe.html.eex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "About %{instance}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:24
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Admin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:30
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Bot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/conversation.html.eex:3
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Conversation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:59
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Edited %{timeago}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/error.html.eex:3
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:56
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:91
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Followers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:52
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:84
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Following"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:53
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:57
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Hidden"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/_attachment.html.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Hover to show content"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:97
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Media"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:27
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Moderator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:48
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:73
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Posts"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:46
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Reply to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:67
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Show content"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:102
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Show newer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:140
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Show older"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:78
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "With Replies"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:127
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "repeated"
|
||||||
|
msgstr ""
|
||||||
|
|
|
@ -89,376 +89,363 @@ msgstr ""
|
||||||
msgid "must be equal to %{number}"
|
msgid "must be equal to %{number}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:503
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:523
|
|
||||||
msgid "Account not found"
|
msgid "Account not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:263
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:316
|
|
||||||
msgid "Already voted"
|
msgid "Already voted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:427
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:402
|
|
||||||
msgid "Bad request"
|
msgid "Bad request"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/controller_helper.ex:105
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/controller_helper.ex:97
|
|
||||||
#: lib/pleroma/web/controller_helper.ex:103
|
|
||||||
msgid "Can't display this activity"
|
msgid "Can't display this activity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:334
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:325
|
|
||||||
msgid "Can't find user"
|
msgid "Can't find user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:61
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:80
|
|
||||||
msgid "Can't get favorites"
|
msgid "Can't get favorites"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api/utils.ex:473
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api/utils.ex:482
|
|
||||||
msgid "Cannot post an empty status without attachments"
|
msgid "Cannot post an empty status without attachments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api/utils.ex:461
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api/utils.ex:441
|
|
||||||
msgid "Comment must be up to %{max_size} characters"
|
msgid "Comment must be up to %{max_size} characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/config_db.ex:199
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/config_db.ex:200
|
|
||||||
msgid "Config with params %{params} not found"
|
msgid "Config with params %{params} not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:114
|
||||||
|
#: lib/pleroma/web/common_api.ex:118
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:167
|
|
||||||
#: lib/pleroma/web/common_api.ex:171
|
|
||||||
msgid "Could not delete"
|
msgid "Could not delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:164
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:217
|
|
||||||
msgid "Could not favorite"
|
msgid "Could not favorite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:201
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:254
|
|
||||||
msgid "Could not unfavorite"
|
msgid "Could not unfavorite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:149
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:202
|
|
||||||
msgid "Could not unrepeat"
|
msgid "Could not unrepeat"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:510
|
||||||
|
#: lib/pleroma/web/common_api.ex:519
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:530
|
|
||||||
#: lib/pleroma/web/common_api.ex:539
|
|
||||||
msgid "Could not update state"
|
msgid "Could not update state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:245
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:205
|
|
||||||
msgid "Error."
|
msgid "Error."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/twitter_api/twitter_api.ex:104
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/twitter_api/twitter_api.ex:105
|
|
||||||
msgid "Invalid CAPTCHA"
|
msgid "Invalid CAPTCHA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:143
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:660
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:144
|
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:631
|
|
||||||
msgid "Invalid credentials"
|
msgid "Invalid credentials"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/plugs/ensure_authenticated_plug.ex:42
|
#: lib/pleroma/web/plugs/ensure_authenticated_plug.ex:42
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Invalid credentials."
|
msgid "Invalid credentials."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:284
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:337
|
|
||||||
msgid "Invalid indices"
|
msgid "Invalid indices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:29
|
#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Invalid parameters"
|
msgid "Invalid parameters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api/utils.ex:369
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api/utils.ex:349
|
|
||||||
msgid "Invalid password."
|
msgid "Invalid password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:264
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:255
|
|
||||||
msgid "Invalid request"
|
msgid "Invalid request"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/twitter_api/twitter_api.ex:107
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/twitter_api/twitter_api.ex:108
|
|
||||||
msgid "Kocaptcha service unavailable"
|
msgid "Kocaptcha service unavailable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:139
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:140
|
|
||||||
msgid "Missing parameters"
|
msgid "Missing parameters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:151
|
||||||
|
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:177
|
||||||
|
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:219
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api/utils.ex:477
|
|
||||||
msgid "No such conversation"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:171
|
|
||||||
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:197
|
|
||||||
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:239
|
|
||||||
msgid "No such permission_group"
|
msgid "No such permission_group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:502
|
||||||
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:515
|
|
||||||
#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:11
|
#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:11
|
||||||
#: lib/pleroma/web/feed/tag_controller.ex:16
|
#: lib/pleroma/web/feed/tag_controller.ex:16
|
||||||
#: lib/pleroma/web/feed/user_controller.ex:69
|
#: lib/pleroma/web/feed/user_controller.ex:70
|
||||||
#: lib/pleroma/web/o_status/o_status_controller.ex:132
|
#: lib/pleroma/web/o_status/o_status_controller.ex:135
|
||||||
#: lib/pleroma/web/plugs/uploaded_media.ex:84
|
#: lib/pleroma/web/plugs/uploaded_media.ex:83
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Not found"
|
msgid "Not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:255
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:308
|
|
||||||
msgid "Poll's author can't vote"
|
msgid "Poll's author can't vote"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:477
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:20
|
#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:20
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:39
|
#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:39
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:51
|
#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:51
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:52
|
#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:52
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/status_controller.ex:326
|
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:71
|
#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:71
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Record not found"
|
msgid "Record not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:35
|
#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:35
|
||||||
#: lib/pleroma/web/feed/user_controller.ex:78
|
#: lib/pleroma/web/feed/user_controller.ex:79
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:42
|
#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:42
|
||||||
#: lib/pleroma/web/o_status/o_status_controller.ex:138
|
#: lib/pleroma/web/o_status/o_status_controller.ex:141
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Something went wrong"
|
msgid "Something went wrong"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api/activity_draft.ex:156
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api/activity_draft.ex:143
|
|
||||||
msgid "The message visibility must be direct"
|
msgid "The message visibility must be direct"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api/utils.ex:483
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api/utils.ex:492
|
|
||||||
msgid "The status is over the character limit"
|
msgid "The status is over the character limit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/plugs/ensure_public_or_authenticated_plug.ex:36
|
#: lib/pleroma/web/plugs/ensure_public_or_authenticated_plug.ex:36
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "This resource requires authentication."
|
msgid "This resource requires authentication."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/plugs/rate_limiter.ex:214
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/plugs/rate_limiter.ex:208
|
|
||||||
msgid "Throttled"
|
msgid "Throttled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:285
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:338
|
|
||||||
msgid "Too many choices"
|
msgid "Too many choices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:248
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:268
|
|
||||||
msgid "You can't revoke your own admin status."
|
msgid "You can't revoke your own admin status."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:267
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:358
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:243
|
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:333
|
|
||||||
msgid "Your account is currently disabled"
|
msgid "Your account is currently disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:229
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:381
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:205
|
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:356
|
|
||||||
msgid "Your login is missing a confirmed e-mail address"
|
msgid "Your login is missing a confirmed e-mail address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:390
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:403
|
|
||||||
msgid "can't read inbox of %{nickname} as %{as_nickname}"
|
msgid "can't read inbox of %{nickname} as %{as_nickname}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:489
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:502
|
|
||||||
msgid "can't update outbox of %{nickname} as %{as_nickname}"
|
msgid "can't update outbox of %{nickname} as %{as_nickname}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:455
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:475
|
|
||||||
msgid "conversation is already muted"
|
msgid "conversation is already muted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:508
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:521
|
|
||||||
msgid "error"
|
msgid "error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:34
|
#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:34
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "mascots can only be images"
|
msgid "mascots can only be images"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:63
|
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:63
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "not found"
|
msgid "not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:462
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:437
|
|
||||||
msgid "Bad OAuth request."
|
msgid "Bad OAuth request."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/twitter_api/twitter_api.ex:113
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/twitter_api/twitter_api.ex:114
|
|
||||||
msgid "CAPTCHA already used"
|
msgid "CAPTCHA already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/twitter_api/twitter_api.ex:110
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/twitter_api/twitter_api.ex:111
|
|
||||||
msgid "CAPTCHA expired"
|
msgid "CAPTCHA expired"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/plugs/uploaded_media.ex:56
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/plugs/uploaded_media.ex:57
|
|
||||||
msgid "Failed"
|
msgid "Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:478
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:453
|
|
||||||
msgid "Failed to authenticate: %{message}."
|
msgid "Failed to authenticate: %{message}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:509
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:484
|
|
||||||
msgid "Failed to set up user account."
|
msgid "Failed to set up user account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/plugs/o_auth_scopes_plug.ex:37
|
#: lib/pleroma/web/plugs/o_auth_scopes_plug.ex:37
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Insufficient permissions: %{permissions}."
|
msgid "Insufficient permissions: %{permissions}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/plugs/uploaded_media.ex:98
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/plugs/uploaded_media.ex:111
|
|
||||||
msgid "Internal Error"
|
msgid "Internal Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/o_auth/fallback_controller.ex:22
|
#: lib/pleroma/web/o_auth/fallback_controller.ex:22
|
||||||
#: lib/pleroma/web/o_auth/fallback_controller.ex:29
|
#: lib/pleroma/web/o_auth/fallback_controller.ex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Invalid Username/Password"
|
msgid "Invalid Username/Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/twitter_api/twitter_api.ex:116
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/twitter_api/twitter_api.ex:117
|
|
||||||
msgid "Invalid answer data"
|
msgid "Invalid answer data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:130
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:33
|
|
||||||
msgid "Nodeinfo schema version not handled"
|
msgid "Nodeinfo schema version not handled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:194
|
|
||||||
msgid "This action is outside the authorized scopes"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/o_auth/fallback_controller.ex:14
|
#: lib/pleroma/web/o_auth/fallback_controller.ex:14
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Unknown error, please check the details and try again."
|
msgid "Unknown error, please check the details and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:158
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:204
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:136
|
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:180
|
|
||||||
msgid "Unlisted redirect_uri."
|
msgid "Unlisted redirect_uri."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:458
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:433
|
|
||||||
msgid "Unsupported OAuth provider: %{provider}."
|
msgid "Unsupported OAuth provider: %{provider}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/uploaders/uploader.ex:74
|
#: lib/pleroma/uploaders/uploader.ex:74
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Uploader callback timeout"
|
msgid "Uploader callback timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/uploader_controller.ex:23
|
#: lib/pleroma/web/uploader_controller.ex:23
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "bad request"
|
msgid "bad request"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/twitter_api/twitter_api.ex:101
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/twitter_api/twitter_api.ex:102
|
|
||||||
msgid "CAPTCHA Error"
|
msgid "CAPTCHA Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:213
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:266
|
|
||||||
msgid "Could not add reaction emoji"
|
msgid "Could not add reaction emoji"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api.ex:224
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/common_api.ex:277
|
|
||||||
msgid "Could not remove reaction emoji"
|
msgid "Could not remove reaction emoji"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/twitter_api/twitter_api.ex:127
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/twitter_api/twitter_api.ex:128
|
|
||||||
msgid "Invalid CAPTCHA (Missing parameter: %{name})"
|
msgid "Invalid CAPTCHA (Missing parameter: %{name})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/list_controller.ex:96
|
#: lib/pleroma/web/mastodon_api/controllers/list_controller.ex:96
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "List not found"
|
msgid "List not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:150
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:151
|
|
||||||
msgid "Missing parameter: %{name}"
|
msgid "Missing parameter: %{name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:256
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:371
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:232
|
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:346
|
|
||||||
msgid "Password reset is required"
|
msgid "Password reset is required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/tests/auth_test_controller.ex:9
|
#: lib/pleroma/tests/auth_test_controller.ex:9
|
||||||
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:6
|
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:6
|
||||||
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:6
|
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:6
|
||||||
#: lib/pleroma/web/admin_api/controllers/announcement_controller.ex:6
|
#: lib/pleroma/web/admin_api/controllers/announcement_controller.ex:6
|
||||||
#: lib/pleroma/web/admin_api/controllers/chat_controller.ex:6
|
|
||||||
#: lib/pleroma/web/admin_api/controllers/config_controller.ex:6
|
#: lib/pleroma/web/admin_api/controllers/config_controller.ex:6
|
||||||
#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:6
|
#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:6
|
||||||
#: lib/pleroma/web/admin_api/controllers/frontend_controller.ex:6
|
#: lib/pleroma/web/admin_api/controllers/frontend_controller.ex:6
|
||||||
|
@ -471,6 +458,9 @@ msgstr ""
|
||||||
#: lib/pleroma/web/admin_api/controllers/report_controller.ex:6
|
#: lib/pleroma/web/admin_api/controllers/report_controller.ex:6
|
||||||
#: lib/pleroma/web/admin_api/controllers/status_controller.ex:6
|
#: lib/pleroma/web/admin_api/controllers/status_controller.ex:6
|
||||||
#: lib/pleroma/web/admin_api/controllers/user_controller.ex:6
|
#: lib/pleroma/web/admin_api/controllers/user_controller.ex:6
|
||||||
|
#: lib/pleroma/web/akkoma_api/controllers/frontend_settings_controller.ex:2
|
||||||
|
#: lib/pleroma/web/akkoma_api/controllers/metrics_controller.ex:2
|
||||||
|
#: lib/pleroma/web/akkoma_api/controllers/translation_controller.ex:2
|
||||||
#: lib/pleroma/web/controller_helper.ex:6
|
#: lib/pleroma/web/controller_helper.ex:6
|
||||||
#: lib/pleroma/web/embed_controller.ex:6
|
#: lib/pleroma/web/embed_controller.ex:6
|
||||||
#: lib/pleroma/web/fallback/redirect_controller.ex:6
|
#: lib/pleroma/web/fallback/redirect_controller.ex:6
|
||||||
|
@ -478,6 +468,7 @@ msgstr ""
|
||||||
#: lib/pleroma/web/feed/user_controller.ex:6
|
#: lib/pleroma/web/feed/user_controller.ex:6
|
||||||
#: lib/pleroma/web/mailer/subscription_controller.ex:6
|
#: lib/pleroma/web/mailer/subscription_controller.ex:6
|
||||||
#: lib/pleroma/web/manifest_controller.ex:6
|
#: lib/pleroma/web/manifest_controller.ex:6
|
||||||
|
#: lib/pleroma/web/masto_fe_controller.ex:6
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:6
|
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:6
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/announcement_controller.ex:6
|
#: lib/pleroma/web/mastodon_api/controllers/announcement_controller.ex:6
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/app_controller.ex:11
|
#: lib/pleroma/web/mastodon_api/controllers/app_controller.ex:11
|
||||||
|
@ -502,6 +493,7 @@ msgstr ""
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/status_controller.ex:6
|
#: lib/pleroma/web/mastodon_api/controllers/status_controller.ex:6
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:7
|
#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:7
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex:6
|
#: lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex:6
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/tag_controller.ex:3
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:6
|
#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:6
|
||||||
#: lib/pleroma/web/media_proxy/media_proxy_controller.ex:6
|
#: lib/pleroma/web/media_proxy/media_proxy_controller.ex:6
|
||||||
#: lib/pleroma/web/mongoose_im/mongoose_im_controller.ex:6
|
#: lib/pleroma/web/mongoose_im/mongoose_im_controller.ex:6
|
||||||
|
@ -513,7 +505,6 @@ msgstr ""
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:6
|
#: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:6
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/app_controller.ex:6
|
#: lib/pleroma/web/pleroma_api/controllers/app_controller.ex:6
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/backup_controller.ex:6
|
#: lib/pleroma/web/pleroma_api/controllers/backup_controller.ex:6
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/chat_controller.ex:5
|
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex:6
|
#: lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex:6
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex:6
|
#: lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex:6
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:6
|
#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:6
|
||||||
|
@ -522,7 +513,6 @@ msgstr ""
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:6
|
#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:6
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/notification_controller.ex:6
|
#: lib/pleroma/web/pleroma_api/controllers/notification_controller.ex:6
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/report_controller.ex:6
|
#: lib/pleroma/web/pleroma_api/controllers/report_controller.ex:6
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex:6
|
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/two_factor_authentication_controller.ex:7
|
#: lib/pleroma/web/pleroma_api/controllers/two_factor_authentication_controller.ex:7
|
||||||
#: lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex:6
|
#: lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex:6
|
||||||
#: lib/pleroma/web/static_fe/static_fe_controller.ex:6
|
#: lib/pleroma/web/static_fe/static_fe_controller.ex:6
|
||||||
|
@ -532,79 +522,99 @@ msgstr ""
|
||||||
#: lib/pleroma/web/twitter_api/controllers/util_controller.ex:6
|
#: lib/pleroma/web/twitter_api/controllers/util_controller.ex:6
|
||||||
#: lib/pleroma/web/uploader_controller.ex:6
|
#: lib/pleroma/web/uploader_controller.ex:6
|
||||||
#: lib/pleroma/web/web_finger/web_finger_controller.ex:6
|
#: lib/pleroma/web/web_finger/web_finger_controller.ex:6
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Security violation: OAuth scopes check was neither handled nor explicitly skipped."
|
msgid "Security violation: OAuth scopes check was neither handled nor explicitly skipped."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/plugs/ensure_authenticated_plug.ex:32
|
#: lib/pleroma/web/plugs/ensure_authenticated_plug.ex:32
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Two-factor authentication enabled, you must use a access token."
|
msgid "Two-factor authentication enabled, you must use a access token."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:61
|
#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:61
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Web push subscription is disabled on this Pleroma instance"
|
msgid "Web push subscription is disabled on this Pleroma instance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:214
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:234
|
|
||||||
msgid "You can't revoke your own admin/moderator status."
|
msgid "You can't revoke your own admin/moderator status."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:169
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:129
|
|
||||||
msgid "authorization required for timeline view"
|
msgid "authorization required for timeline view"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:24
|
#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:24
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Access denied"
|
msgid "Access denied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:331
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:322
|
|
||||||
msgid "This API requires an authenticated user"
|
msgid "This API requires an authenticated user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/plugs/ensure_staff_privileged_plug.ex:26
|
#: lib/pleroma/web/plugs/ensure_staff_privileged_plug.ex:26
|
||||||
#: lib/pleroma/web/plugs/user_is_admin_plug.ex:21
|
#: lib/pleroma/web/plugs/user_is_admin_plug.ex:21
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "User is not an admin."
|
msgid "User is not an admin."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/user/backup.ex:73
|
||||||
#, elixir-format
|
#, elixir-format
|
||||||
#: lib/pleroma/user/backup.ex:75
|
|
||||||
msgid "Last export was less than a day ago"
|
msgid "Last export was less than a day ago"
|
||||||
msgid_plural "Last export was less than %{days} days ago"
|
msgid_plural "Last export was less than %{days} days ago"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:421
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/user/backup.ex:93
|
|
||||||
msgid "Backups require enabled email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:434
|
|
||||||
msgid "Character limit (%{limit} characters) exceeded, contains %{length} characters"
|
msgid "Character limit (%{limit} characters) exceeded, contains %{length} characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/user/backup.ex:98
|
|
||||||
msgid "Email is required"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/common_api/utils.ex:507
|
|
||||||
msgid "Too many attachments"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/plugs/ensure_staff_privileged_plug.ex:33
|
#: lib/pleroma/web/plugs/ensure_staff_privileged_plug.ex:33
|
||||||
#: lib/pleroma/web/plugs/user_is_staff_plug.ex:20
|
#: lib/pleroma/web/plugs/user_is_staff_plug.ex:20
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgid "User is not a staff member."
|
msgid "User is not a staff member."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:391
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/o_auth/o_auth_controller.ex:366
|
|
||||||
msgid "Your account is awaiting approval."
|
msgid "Your account is awaiting approval."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:255
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:258
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:261
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "File is too large"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/tag_controller.ex:37
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/tag_controller.ex:48
|
||||||
|
#: lib/pleroma/web/mastodon_api/controllers/tag_controller.ex:59
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Hashtag not found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api/activity_draft.ex:144
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Invalid language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/o_auth/o_auth_controller.ex:218
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "This action is outside of authorized scopes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api/activity_draft.ex:129
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You can only quote public or unlisted statuses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/common_api/activity_draft.ex:126
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You can't quote a status that doesn't exist"
|
||||||
|
msgstr ""
|
||||||
|
|
|
@ -10,504 +10,553 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:9
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:9
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow authorization button"
|
msgctxt "remote follow authorization button"
|
||||||
msgid "Authorize"
|
msgid "Authorize"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:2
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:2
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow error"
|
msgctxt "remote follow error"
|
||||||
msgid "Error fetching user"
|
msgid "Error fetching user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:4
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow header"
|
msgctxt "remote follow header"
|
||||||
msgid "Remote follow"
|
msgid "Remote follow"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:8
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "placeholder text for auth code entry"
|
msgctxt "placeholder text for auth code entry"
|
||||||
msgid "Authentication code"
|
msgid "Authentication code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:10
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:10
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "placeholder text for password entry"
|
msgctxt "placeholder text for password entry"
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:8
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "placeholder text for username entry"
|
msgctxt "placeholder text for username entry"
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:13
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:13
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow authorization button for login"
|
msgctxt "remote follow authorization button for login"
|
||||||
msgid "Authorize"
|
msgid "Authorize"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:12
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:12
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow authorization button for mfa"
|
msgctxt "remote follow authorization button for mfa"
|
||||||
msgid "Authorize"
|
msgid "Authorize"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/followed.html.eex:2
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/followed.html.eex:2
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow error"
|
msgctxt "remote follow error"
|
||||||
msgid "Error following account"
|
msgid "Error following account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:4
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow header, need login"
|
msgctxt "remote follow header, need login"
|
||||||
msgid "Log in to follow"
|
msgid "Log in to follow"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:4
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow mfa header"
|
msgctxt "remote follow mfa header"
|
||||||
msgid "Two-factor authentication"
|
msgid "Two-factor authentication"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/remote_follow/followed.html.eex:4
|
#: lib/pleroma/web/templates/twitter_api/remote_follow/followed.html.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow success"
|
msgctxt "remote follow success"
|
||||||
msgid "Account followed!"
|
msgid "Account followed!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
#: lib/pleroma/web/templates/twitter_api/util/status_interact.html.eex:7
|
||||||
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:7
|
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:7
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "placeholder text for account id"
|
msgctxt "placeholder text for account id"
|
||||||
msgid "Your account ID, e.g. lain@quitter.se"
|
msgid "Your account ID, e.g. lain@quitter.se"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:8
|
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow authorization button for following with a remote account"
|
msgctxt "remote follow authorization button for following with a remote account"
|
||||||
msgid "Follow"
|
msgid "Follow"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:2
|
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:2
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow error"
|
msgctxt "remote follow error"
|
||||||
msgid "Error: %{error}"
|
msgid "Error: %{error}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:4
|
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "remote follow header"
|
msgctxt "remote follow header"
|
||||||
msgid "Remotely follow %{nickname}"
|
msgid "Remotely follow %{nickname}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:12
|
#: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:12
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "password reset button"
|
msgctxt "password reset button"
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/password/reset_failed.html.eex:4
|
#: lib/pleroma/web/templates/twitter_api/password/reset_failed.html.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "password reset failed homepage link"
|
msgctxt "password reset failed homepage link"
|
||||||
msgid "Homepage"
|
msgid "Homepage"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/password/reset_failed.html.eex:1
|
#: lib/pleroma/web/templates/twitter_api/password/reset_failed.html.eex:1
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "password reset failed message"
|
msgctxt "password reset failed message"
|
||||||
msgid "Password reset failed"
|
msgid "Password reset failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:8
|
#: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "password reset form confirm password prompt"
|
msgctxt "password reset form confirm password prompt"
|
||||||
msgid "Confirmation"
|
msgid "Confirmation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:4
|
#: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "password reset form password prompt"
|
msgctxt "password reset form password prompt"
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/password/invalid_token.html.eex:1
|
#: lib/pleroma/web/templates/twitter_api/password/invalid_token.html.eex:1
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "password reset invalid token message"
|
msgctxt "password reset invalid token message"
|
||||||
msgid "Invalid Token"
|
msgid "Invalid Token"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/password/reset_success.html.eex:2
|
#: lib/pleroma/web/templates/twitter_api/password/reset_success.html.eex:2
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "password reset successful homepage link"
|
msgctxt "password reset successful homepage link"
|
||||||
msgid "Homepage"
|
msgid "Homepage"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/twitter_api/password/reset_success.html.eex:1
|
#: lib/pleroma/web/templates/twitter_api/password/reset_success.html.eex:1
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "password reset successful message"
|
msgctxt "password reset successful message"
|
||||||
msgid "Password changed!"
|
msgid "Password changed!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/feed/feed/tag.atom.eex:15
|
#: lib/pleroma/web/templates/feed/feed/tag.atom.eex:15
|
||||||
#: lib/pleroma/web/templates/feed/feed/tag.rss.eex:7
|
#: lib/pleroma/web/templates/feed/feed/tag.rss.eex:7
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "tag feed description"
|
msgctxt "tag feed description"
|
||||||
msgid "These are public toots tagged with #%{tag}. You can interact with them if you have an account anywhere in the fediverse."
|
msgid "These are public toots tagged with #%{tag}. You can interact with them if you have an account anywhere in the fediverse."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex:3
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex:1
|
|
||||||
msgctxt "oauth authorization exists page title"
|
msgctxt "oauth authorization exists page title"
|
||||||
msgid "Authorization exists"
|
msgid "Authorization exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:37
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:32
|
|
||||||
msgctxt "oauth authorize approve button"
|
msgctxt "oauth authorize approve button"
|
||||||
msgid "Approve"
|
msgid "Approve"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:35
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:30
|
|
||||||
msgctxt "oauth authorize cancel button"
|
msgctxt "oauth authorize cancel button"
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:26
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:23
|
|
||||||
msgctxt "oauth authorize message"
|
msgctxt "oauth authorize message"
|
||||||
msgid "Application <strong>%{client_name}</strong> is requesting access to your account."
|
msgid "Application <strong>%{client_name}</strong> is requesting access to your account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex:3
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex:1
|
|
||||||
msgctxt "oauth authorized page title"
|
msgctxt "oauth authorized page title"
|
||||||
msgid "Successfully authorized"
|
msgid "Successfully authorized"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex:1
|
#: lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex:1
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth external provider page title"
|
msgctxt "oauth external provider page title"
|
||||||
msgid "Sign in with external provider"
|
msgid "Sign in with external provider"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex:13
|
#: lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex:13
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth external provider sign in button"
|
msgctxt "oauth external provider sign in button"
|
||||||
msgid "Sign in with %{strategy}"
|
msgid "Sign in with %{strategy}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:59
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:54
|
|
||||||
msgctxt "oauth login button"
|
msgctxt "oauth login button"
|
||||||
msgid "Log In"
|
msgid "Log In"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:56
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:51
|
|
||||||
msgctxt "oauth login password prompt"
|
msgctxt "oauth login password prompt"
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:52
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:47
|
|
||||||
msgctxt "oauth login username prompt"
|
msgctxt "oauth login username prompt"
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:44
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:39
|
|
||||||
msgctxt "oauth register nickname prompt"
|
msgctxt "oauth register nickname prompt"
|
||||||
msgid "Pleroma Handle"
|
msgid "Pleroma Handle"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:42
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:37
|
|
||||||
msgctxt "oauth register nickname unchangeable warning"
|
msgctxt "oauth register nickname unchangeable warning"
|
||||||
msgid "Choose carefully! You won't be able to change this later. You will be able to change your display name, though."
|
msgid "Choose carefully! You won't be able to change this later. You will be able to change your display name, though."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:18
|
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:18
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth register page email prompt"
|
msgctxt "oauth register page email prompt"
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:10
|
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:10
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth register page fill form prompt"
|
msgctxt "oauth register page fill form prompt"
|
||||||
msgid "If you'd like to register a new account, please provide the details below."
|
msgid "If you'd like to register a new account, please provide the details below."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:35
|
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:35
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth register page login button"
|
msgctxt "oauth register page login button"
|
||||||
msgid "Proceed as existing user"
|
msgid "Proceed as existing user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:31
|
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:31
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth register page login password prompt"
|
msgctxt "oauth register page login password prompt"
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:24
|
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:24
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth register page login prompt"
|
msgctxt "oauth register page login prompt"
|
||||||
msgid "Alternatively, sign in to connect to existing account."
|
msgid "Alternatively, sign in to connect to existing account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:27
|
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:27
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth register page login username prompt"
|
msgctxt "oauth register page login username prompt"
|
||||||
msgid "Name or email"
|
msgid "Name or email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:14
|
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:14
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth register page nickname prompt"
|
msgctxt "oauth register page nickname prompt"
|
||||||
msgid "Nickname"
|
msgid "Nickname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:22
|
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:22
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth register page register button"
|
msgctxt "oauth register page register button"
|
||||||
msgid "Proceed as new user"
|
msgid "Proceed as new user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:8
|
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth register page title"
|
msgctxt "oauth register page title"
|
||||||
msgid "Registration Details"
|
msgid "Registration Details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:36
|
|
||||||
msgctxt "oauth register page title"
|
|
||||||
msgid "This is the first time you visit! Please enter your Pleroma handle."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/_scopes.html.eex:2
|
#: lib/pleroma/web/templates/o_auth/o_auth/_scopes.html.eex:2
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "oauth scopes message"
|
msgctxt "oauth scopes message"
|
||||||
msgid "The following permissions will be granted"
|
msgid "The following permissions will be granted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex:6
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex:6
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex:2
|
|
||||||
#: lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex:2
|
|
||||||
msgctxt "oauth token code message"
|
msgctxt "oauth token code message"
|
||||||
msgid "Token code is <br>%{token}"
|
msgid "Token code is <br>%{token}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:14
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:12
|
|
||||||
msgctxt "mfa auth code prompt"
|
msgctxt "mfa auth code prompt"
|
||||||
msgid "Authentication code"
|
msgid "Authentication code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:8
|
|
||||||
msgctxt "mfa auth page title"
|
msgctxt "mfa auth page title"
|
||||||
msgid "Two-factor authentication"
|
msgid "Two-factor authentication"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:25
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:23
|
|
||||||
msgctxt "mfa auth page use recovery code link"
|
msgctxt "mfa auth page use recovery code link"
|
||||||
msgid "Enter a two-factor recovery code"
|
msgid "Enter a two-factor recovery code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:22
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:20
|
|
||||||
msgctxt "mfa auth verify code button"
|
msgctxt "mfa auth verify code button"
|
||||||
msgid "Verify"
|
msgid "Verify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:8
|
|
||||||
msgctxt "mfa recover page title"
|
msgctxt "mfa recover page title"
|
||||||
msgid "Two-factor recovery"
|
msgid "Two-factor recovery"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:14
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:12
|
|
||||||
msgctxt "mfa recover recovery code prompt"
|
msgctxt "mfa recover recovery code prompt"
|
||||||
msgid "Recovery code"
|
msgid "Recovery code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:25
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:23
|
|
||||||
msgctxt "mfa recover use 2fa code link"
|
msgctxt "mfa recover use 2fa code link"
|
||||||
msgid "Enter a two-factor code"
|
msgid "Enter a two-factor code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:22
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:20
|
|
||||||
msgctxt "mfa recover verify recovery code button"
|
msgctxt "mfa recover verify recovery code button"
|
||||||
msgid "Verify"
|
msgid "Verify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:42
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:8
|
|
||||||
msgctxt "static fe profile page remote follow button"
|
msgctxt "static fe profile page remote follow button"
|
||||||
msgid "Remote follow"
|
msgid "Remote follow"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/email/digest.html.eex:163
|
#: lib/pleroma/web/templates/email/digest.html.eex:163
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "digest email header line"
|
msgctxt "digest email header line"
|
||||||
msgid "Hey %{nickname}, here is what you've missed!"
|
msgid "Hey %{nickname}, here is what you've missed!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/email/digest.html.eex:544
|
#: lib/pleroma/web/templates/email/digest.html.eex:544
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "digest email receiver address"
|
msgctxt "digest email receiver address"
|
||||||
msgid "The email address you are subscribed as is <a href='mailto:%{@user.email}' style='color: %{color};text-decoration: none;'>%{email}</a>. "
|
msgid "The email address you are subscribed as is <a href='mailto:%{@user.email}' style='color: %{color};text-decoration: none;'>%{email}</a>. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/email/digest.html.eex:538
|
#: lib/pleroma/web/templates/email/digest.html.eex:538
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "digest email sending reason"
|
msgctxt "digest email sending reason"
|
||||||
msgid "You have received this email because you have signed up to receive digest emails from <b>%{instance}</b> Pleroma instance."
|
msgid "You have received this email because you have signed up to receive digest emails from <b>%{instance}</b> Pleroma instance."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/email/digest.html.eex:547
|
#: lib/pleroma/web/templates/email/digest.html.eex:547
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "digest email unsubscribe action"
|
msgctxt "digest email unsubscribe action"
|
||||||
msgid "To unsubscribe, please go %{here}."
|
msgid "To unsubscribe, please go %{here}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/email/digest.html.eex:547
|
#: lib/pleroma/web/templates/email/digest.html.eex:547
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "digest email unsubscribe action link text"
|
msgctxt "digest email unsubscribe action link text"
|
||||||
msgid "here"
|
msgid "here"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/mailer/subscription/unsubscribe_failure.html.eex:1
|
#: lib/pleroma/web/templates/mailer/subscription/unsubscribe_failure.html.eex:1
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "mailer unsubscribe failed message"
|
msgctxt "mailer unsubscribe failed message"
|
||||||
msgid "UNSUBSCRIBE FAILURE"
|
msgid "UNSUBSCRIBE FAILURE"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/mailer/subscription/unsubscribe_success.html.eex:1
|
#: lib/pleroma/web/templates/mailer/subscription/unsubscribe_success.html.eex:1
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "mailer unsubscribe successful message"
|
msgctxt "mailer unsubscribe successful message"
|
||||||
msgid "UNSUBSCRIBE SUCCESSFUL"
|
msgid "UNSUBSCRIBE SUCCESSFUL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-format
|
|
||||||
#: lib/pleroma/web/templates/email/digest.html.eex:385
|
#: lib/pleroma/web/templates/email/digest.html.eex:385
|
||||||
|
#, elixir-format
|
||||||
msgctxt "new followers count header"
|
msgctxt "new followers count header"
|
||||||
msgid "%{count} New Follower"
|
msgid "%{count} New Follower"
|
||||||
msgid_plural "%{count} New Followers"
|
msgid_plural "%{count} New Followers"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:356
|
|
||||||
msgctxt "account archive email body - self-requested"
|
|
||||||
msgid "<p>You requested a full backup of your Pleroma account. It's ready for download:</p>\n<p><a href=\"%{download_url}\">%{download_url}</a></p>\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:384
|
#: lib/pleroma/emails/user_email.ex:384
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "account archive email subject"
|
msgctxt "account archive email subject"
|
||||||
msgid "Your account archive is ready"
|
msgid "Your account archive is ready"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:188
|
#: lib/pleroma/emails/user_email.ex:188
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "approval pending email body"
|
msgctxt "approval pending email body"
|
||||||
msgid "<h3>Awaiting Approval</h3>\n<p>Your account at %{instance_name} is being reviewed by staff. You will receive another email once your account is approved.</p>\n"
|
msgid "<h3>Awaiting Approval</h3>\n<p>Your account at %{instance_name} is being reviewed by staff. You will receive another email once your account is approved.</p>\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:202
|
#: lib/pleroma/emails/user_email.ex:202
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "approval pending email subject"
|
msgctxt "approval pending email subject"
|
||||||
msgid "Your account is awaiting approval"
|
msgid "Your account is awaiting approval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:158
|
#: lib/pleroma/emails/user_email.ex:158
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "confirmation email body"
|
msgctxt "confirmation email body"
|
||||||
msgid "<h3>Thank you for registering on %{instance_name}</h3>\n<p>Email confirmation is required to activate the account.</p>\n<p>Please click the following link to <a href=\"%{confirmation_url}\">activate your account</a>.</p>\n"
|
msgid "<h3>Thank you for registering on %{instance_name}</h3>\n<p>Email confirmation is required to activate the account.</p>\n<p>Please click the following link to <a href=\"%{confirmation_url}\">activate your account</a>.</p>\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:174
|
#: lib/pleroma/emails/user_email.ex:174
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "confirmation email subject"
|
msgctxt "confirmation email subject"
|
||||||
msgid "%{instance_name} account confirmation"
|
msgid "%{instance_name} account confirmation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:310
|
#: lib/pleroma/emails/user_email.ex:310
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "digest email subject"
|
msgctxt "digest email subject"
|
||||||
msgid "Your digest from %{instance_name}"
|
msgid "Your digest from %{instance_name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:81
|
#: lib/pleroma/emails/user_email.ex:81
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "password reset email body"
|
msgctxt "password reset email body"
|
||||||
msgid "<h3>Reset your password at %{instance_name}</h3>\n<p>Someone has requested password change for your account at %{instance_name}.</p>\n<p>If it was you, visit the following link to proceed: <a href=\"%{password_reset_url}\">reset password</a>.</p>\n<p>If it was someone else, nothing to worry about: your data is secure and your password has not been changed.</p>\n"
|
msgid "<h3>Reset your password at %{instance_name}</h3>\n<p>Someone has requested password change for your account at %{instance_name}.</p>\n<p>If it was you, visit the following link to proceed: <a href=\"%{password_reset_url}\">reset password</a>.</p>\n<p>If it was someone else, nothing to worry about: your data is secure and your password has not been changed.</p>\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:98
|
#: lib/pleroma/emails/user_email.ex:98
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "password reset email subject"
|
msgctxt "password reset email subject"
|
||||||
msgid "Password reset"
|
msgid "Password reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:215
|
#: lib/pleroma/emails/user_email.ex:215
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "successful registration email body"
|
msgctxt "successful registration email body"
|
||||||
msgid "<h3>Hello @%{nickname},</h3>\n<p>Your account at %{instance_name} has been registered successfully.</p>\n<p>No further action is required to activate your account.</p>\n"
|
msgid "<h3>Hello @%{nickname},</h3>\n<p>Your account at %{instance_name} has been registered successfully.</p>\n<p>No further action is required to activate your account.</p>\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:231
|
#: lib/pleroma/emails/user_email.ex:231
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "successful registration email subject"
|
msgctxt "successful registration email subject"
|
||||||
msgid "Account registered on %{instance_name}"
|
msgid "Account registered on %{instance_name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:119
|
|
||||||
msgctxt "user invitation email body"
|
|
||||||
msgid "<h3>You are invited to %{instance_name}</h3>\n<p>%{inviter_name} invites you to join %{instance_name}, an instance of Pleroma federated social networking platform.</p>\n<p>Click the following link to register: <a href=\"%{registration_url}\">accept invitation</a>.</p>\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:136
|
#: lib/pleroma/emails/user_email.ex:136
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "user invitation email subject"
|
msgctxt "user invitation email subject"
|
||||||
msgid "Invitation to %{instance_name}"
|
msgid "Invitation to %{instance_name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:53
|
#: lib/pleroma/emails/user_email.ex:53
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "welcome email html body"
|
msgctxt "welcome email html body"
|
||||||
msgid "Welcome to %{instance_name}!"
|
msgid "Welcome to %{instance_name}!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:41
|
#: lib/pleroma/emails/user_email.ex:41
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "welcome email subject"
|
msgctxt "welcome email subject"
|
||||||
msgid "Welcome to %{instance_name}!"
|
msgid "Welcome to %{instance_name}!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:65
|
#: lib/pleroma/emails/user_email.ex:65
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "welcome email text body"
|
msgctxt "welcome email text body"
|
||||||
msgid "Welcome to %{instance_name}!"
|
msgid "Welcome to %{instance_name}!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
#: lib/pleroma/emails/user_email.ex:368
|
#: lib/pleroma/emails/user_email.ex:368
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
msgctxt "account archive email body - admin requested"
|
msgctxt "account archive email body - admin requested"
|
||||||
msgid "<p>Admin @%{admin_nickname} requested a full backup of your Pleroma account. It's ready for download:</p>\n<p><a href=\"%{download_url}\">%{download_url}</a></p>\n"
|
msgid "<p>Admin @%{admin_nickname} requested a full backup of your Akkoma account. It's ready for download:</p>\n<p><a href=\"%{download_url}\">%{download_url}</a></p>\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/emails/user_email.ex:356
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgctxt "account archive email body - self-requested"
|
||||||
|
msgid "<p>You requested a full backup of your Akkoma account. It's ready for download:</p>\n<p><a href=\"%{download_url}\">%{download_url}</a></p>\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:41
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgctxt "oauth register page title"
|
||||||
|
msgid "This is your first visit! Please enter your Akkoma handle."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/twitter_api/controllers/util_controller.ex:123
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgctxt "remote follow error message - unknown error"
|
||||||
|
msgid "Something went wrong."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/twitter_api/controllers/util_controller.ex:67
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgctxt "remote follow error message - user not found"
|
||||||
|
msgid "Could not find user"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/twitter_api/util/status_interact.html.eex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgctxt "status interact authorization button"
|
||||||
|
msgid "Interact"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/twitter_api/util/status_interact.html.eex:2
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgctxt "status interact error"
|
||||||
|
msgid "Error: %{error}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/twitter_api/controllers/util_controller.ex:95
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgctxt "status interact error message - status not found"
|
||||||
|
msgid "Could not find status"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/twitter_api/controllers/util_controller.ex:144
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgctxt "status interact error message - unknown error"
|
||||||
|
msgid "Something went wrong."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/twitter_api/util/status_interact.html.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgctxt "status interact header"
|
||||||
|
msgid "Interacting with %{nickname}'s %{status_link}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/web/templates/twitter_api/util/status_interact.html.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgctxt "status interact header - status link text"
|
||||||
|
msgid "status"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/pleroma/emails/user_email.ex:119
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgctxt "user invitation email body"
|
||||||
|
msgid "<h3>You are invited to %{instance_name}</h3>\n<p>%{inviter_name} invites you to join %{instance_name}, an instance of Akkoma federated social networking platform.</p>\n<p>Click the following link to register: <a href=\"%{registration_url}\">accept invitation</a>.</p>\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
defmodule Pleroma.Repo.Migrations.InstanceActorsToActorTypeApplication do
|
||||||
|
use Ecto.Migration
|
||||||
|
|
||||||
|
def up do
|
||||||
|
execute("""
|
||||||
|
update users
|
||||||
|
set actor_type = 'Application'
|
||||||
|
where local
|
||||||
|
and (ap_id like '%/relay' or ap_id like '%/internal/fetch')
|
||||||
|
""")
|
||||||
|
end
|
||||||
|
|
||||||
|
def down do
|
||||||
|
execute("""
|
||||||
|
update users
|
||||||
|
set actor_type = 'Person'
|
||||||
|
where local
|
||||||
|
and (ap_id like '%/relay' or ap_id like '%/internal/fetch')
|
||||||
|
""")
|
||||||
|
end
|
||||||
|
end
|
2
test/fixtures/misskey/mfm_x_format.json
vendored
2
test/fixtures/misskey/mfm_x_format.json
vendored
|
@ -5,7 +5,7 @@
|
||||||
"summary": null,
|
"summary": null,
|
||||||
"content": "this does not get replaced",
|
"content": "this does not get replaced",
|
||||||
"source": {
|
"source": {
|
||||||
"content": "@akkoma_user @remote_user @full_tag_remote_user@misskey.local.live @oops_not_a_mention linkifylink #dancedance $[jelly mfm goes here] \n\n## aaa",
|
"content": "@akkoma_user @remote_user @full_tag_remote_user@misskey.local.live @oops_not_a_mention linkifylink #dancedance $[jelly mfm goes here] \n\n## aaa\n\nsome text\nnewline",
|
||||||
"mediaType": "text/x.misskeymarkdown"
|
"mediaType": "text/x.misskeymarkdown"
|
||||||
},
|
},
|
||||||
"published": "2022-07-10T15:37:36.368Z",
|
"published": "2022-07-10T15:37:36.368Z",
|
||||||
|
|
|
@ -136,6 +136,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidatorTest
|
||||||
|
|
||||||
assert content =~
|
assert content =~
|
||||||
"<span class=\"mfm _mfm_jelly_\" style=\"display: inline-block; animation: 1s linear 0s infinite normal both running mfm-rubberBand;\">mfm goes here</span> </p>aaa"
|
"<span class=\"mfm _mfm_jelly_\" style=\"display: inline-block; animation: 1s linear 0s infinite normal both running mfm-rubberBand;\">mfm goes here</span> </p>aaa"
|
||||||
|
|
||||||
|
assert content =~ "some text<br/>newline"
|
||||||
end
|
end
|
||||||
|
|
||||||
test "a misskey MFM status with a _misskey_content field should work and be linked", _ do
|
test "a misskey MFM status with a _misskey_content field should work and be linked", _ do
|
||||||
|
|
|
@ -12,6 +12,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidationTest do
|
||||||
|
|
||||||
describe "blocks" do
|
describe "blocks" do
|
||||||
setup do
|
setup do
|
||||||
|
clear_config([:activitypub, :outgoing_blocks], true)
|
||||||
user = insert(:user, local: false)
|
user = insert(:user, local: false)
|
||||||
blocked = insert(:user)
|
blocked = insert(:user)
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,12 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do
|
||||||
assert user.ap_id == "#{Pleroma.Web.Endpoint.url()}/relay"
|
assert user.ap_id == "#{Pleroma.Web.Endpoint.url()}/relay"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "relay actor is an application" do
|
||||||
|
# See <https://www.w3.org/TR/activitystreams-vocabulary/#dfn-application>
|
||||||
|
user = Relay.get_actor()
|
||||||
|
assert user.actor_type == "Application"
|
||||||
|
end
|
||||||
|
|
||||||
test "relay actor is invisible" do
|
test "relay actor is invisible" do
|
||||||
user = Relay.get_actor()
|
user = Relay.get_actor()
|
||||||
assert User.invisible?(user)
|
assert User.invisible?(user)
|
||||||
|
|
|
@ -71,6 +71,7 @@ defmodule Pleroma.Web.CommonAPITest do
|
||||||
|
|
||||||
test "it blocks and federates", %{blocker: blocker, blocked: blocked} do
|
test "it blocks and federates", %{blocker: blocker, blocked: blocked} do
|
||||||
clear_config([:instance, :federating], true)
|
clear_config([:instance, :federating], true)
|
||||||
|
clear_config([:activitypub, :outgoing_blocks], true)
|
||||||
|
|
||||||
with_mock Pleroma.Web.Federator,
|
with_mock Pleroma.Web.Federator,
|
||||||
publish: fn _ -> nil end do
|
publish: fn _ -> nil end do
|
||||||
|
|
|
@ -10,6 +10,11 @@ defmodule Pleroma.Web.MastodonAPI.FollowRequestControllerTest do
|
||||||
|
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
|
||||||
|
defp extract_next_link_header(header) do
|
||||||
|
[_, next_link] = Regex.run(~r{<(?<next_link>.*)>; rel="next"}, header)
|
||||||
|
next_link
|
||||||
|
end
|
||||||
|
|
||||||
describe "locked accounts" do
|
describe "locked accounts" do
|
||||||
setup do
|
setup do
|
||||||
user = insert(:user, is_locked: true)
|
user = insert(:user, is_locked: true)
|
||||||
|
@ -31,6 +36,23 @@ defmodule Pleroma.Web.MastodonAPI.FollowRequestControllerTest do
|
||||||
assert to_string(other_user.id) == relationship["id"]
|
assert to_string(other_user.id) == relationship["id"]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "/api/v1/follow_requests paginates", %{user: user, conn: conn} do
|
||||||
|
for _ <- 1..21 do
|
||||||
|
other_user = insert(:user)
|
||||||
|
{:ok, _, _, _activity} = CommonAPI.follow(other_user, user)
|
||||||
|
{:ok, _, _} = User.follow(other_user, user, :follow_pending)
|
||||||
|
end
|
||||||
|
|
||||||
|
conn = get(conn, "/api/v1/follow_requests")
|
||||||
|
assert length(json_response_and_validate_schema(conn, 200)) == 20
|
||||||
|
assert [link_header] = get_resp_header(conn, "link")
|
||||||
|
assert link_header =~ "rel=\"next\""
|
||||||
|
next_link = extract_next_link_header(link_header)
|
||||||
|
assert next_link =~ "/api/v1/follow_requests"
|
||||||
|
conn = get(conn, next_link)
|
||||||
|
assert length(json_response_and_validate_schema(conn, 200)) == 1
|
||||||
|
end
|
||||||
|
|
||||||
test "/api/v1/follow_requests/:id/authorize works", %{user: user, conn: conn} do
|
test "/api/v1/follow_requests/:id/authorize works", %{user: user, conn: conn} do
|
||||||
other_user = insert(:user)
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue