Merge remote-tracking branch 'upstream/develop' into neckbeard

This commit is contained in:
Your New SJW Waifu 2022-07-26 11:23:05 -05:00
commit 06b6b98cc9
26 changed files with 13568 additions and 335 deletions

View File

@ -1729,6 +1729,11 @@ config :pleroma, :config_description, [
type: :boolean, type: :boolean,
description: "Sign object fetches with HTTP signatures" description: "Sign object fetches with HTTP signatures"
}, },
%{
key: :authorized_fetch_mode,
type: :boolean,
description: "Require HTTP signatures for AP fetches"
},
%{ %{
key: :note_replies_output_limit, key: :note_replies_output_limit,
type: :integer, type: :integer,

View File

@ -1482,15 +1482,28 @@ defmodule Pleroma.User do
notifications? = Map.get(params, :notifications, true) notifications? = Map.get(params, :notifications, true)
expires_in = Map.get(params, :expires_in, 0) expires_in = Map.get(params, :expires_in, 0)
with {:ok, user_mute} <- UserRelationship.create_mute(muter, mutee), expires_at =
if expires_in > 0 do
DateTime.utc_now()
|> DateTime.add(expires_in)
else
nil
end
with {:ok, user_mute} <- UserRelationship.create_mute(muter, mutee, expires_at),
{:ok, user_notification_mute} <- {:ok, user_notification_mute} <-
(notifications? && UserRelationship.create_notification_mute(muter, mutee)) || (notifications? &&
UserRelationship.create_notification_mute(
muter,
mutee,
expires_at
)) ||
{:ok, nil} do {:ok, nil} do
if expires_in > 0 do if expires_in > 0 do
Pleroma.Workers.MuteExpireWorker.enqueue( Pleroma.Workers.MuteExpireWorker.enqueue(
"unmute_user", "unmute_user",
%{"muter_id" => muter.id, "mutee_id" => mutee.id}, %{"muter_id" => muter.id, "mutee_id" => mutee.id},
schedule_in: expires_in scheduled_at: expires_at
) )
end end

View File

@ -18,16 +18,17 @@ defmodule Pleroma.UserRelationship do
belongs_to(:source, User, type: FlakeId.Ecto.CompatType) belongs_to(:source, User, type: FlakeId.Ecto.CompatType)
belongs_to(:target, User, type: FlakeId.Ecto.CompatType) belongs_to(:target, User, type: FlakeId.Ecto.CompatType)
field(:relationship_type, Pleroma.UserRelationship.Type) field(:relationship_type, Pleroma.UserRelationship.Type)
field(:expires_at, :utc_datetime)
timestamps(updated_at: false) timestamps(updated_at: false)
end end
for relationship_type <- Keyword.keys(Pleroma.UserRelationship.Type.__enum_map__()) do for relationship_type <- Keyword.keys(Pleroma.UserRelationship.Type.__enum_map__()) do
# `def create_block/2`, `def create_mute/2`, `def create_reblog_mute/2`, # `def create_block/3`, `def create_mute/3`, `def create_reblog_mute/3`,
# `def create_notification_mute/2`, `def create_inverse_subscription/2`, # `def create_notification_mute/3`, `def create_inverse_subscription/3`,
# `def endorsement/2` # `def endorsement/3`
def unquote(:"create_#{relationship_type}")(source, target), def unquote(:"create_#{relationship_type}")(source, target, expires_at \\ nil),
do: create(unquote(relationship_type), source, target) do: create(unquote(relationship_type), source, target, expires_at)
# `def delete_block/2`, `def delete_mute/2`, `def delete_reblog_mute/2`, # `def delete_block/2`, `def delete_mute/2`, `def delete_reblog_mute/2`,
# `def delete_notification_mute/2`, `def delete_inverse_subscription/2`, # `def delete_notification_mute/2`, `def delete_inverse_subscription/2`,
@ -37,9 +38,15 @@ defmodule Pleroma.UserRelationship do
# `def block_exists?/2`, `def mute_exists?/2`, `def reblog_mute_exists?/2`, # `def block_exists?/2`, `def mute_exists?/2`, `def reblog_mute_exists?/2`,
# `def notification_mute_exists?/2`, `def inverse_subscription_exists?/2`, # `def notification_mute_exists?/2`, `def inverse_subscription_exists?/2`,
# `def inverse_endorsement?/2` # `def inverse_endorsement_exists?/2`
def unquote(:"#{relationship_type}_exists?")(source, target), def unquote(:"#{relationship_type}_exists?")(source, target),
do: exists?(unquote(relationship_type), source, target) do: exists?(unquote(relationship_type), source, target)
# `def get_block_expire_date/2`, `def get_mute_expire_date/2`,
# `def get_reblog_mute_expire_date/2`, `def get_notification_mute_exists?/2`,
# `def get_inverse_subscription_expire_date/2`, `def get_inverse_endorsement_expire_date/2`
def unquote(:"get_#{relationship_type}_expire_date")(source, target),
do: get_expire_date(unquote(relationship_type), source, target)
end end
def user_relationship_types, do: Keyword.keys(user_relationship_mappings()) def user_relationship_types, do: Keyword.keys(user_relationship_mappings())
@ -48,7 +55,7 @@ defmodule Pleroma.UserRelationship do
def changeset(%UserRelationship{} = user_relationship, params \\ %{}) do def changeset(%UserRelationship{} = user_relationship, params \\ %{}) do
user_relationship user_relationship
|> cast(params, [:relationship_type, :source_id, :target_id]) |> cast(params, [:relationship_type, :source_id, :target_id, :expires_at])
|> validate_required([:relationship_type, :source_id, :target_id]) |> validate_required([:relationship_type, :source_id, :target_id])
|> unique_constraint(:relationship_type, |> unique_constraint(:relationship_type,
name: :user_relationships_source_id_relationship_type_target_id_index name: :user_relationships_source_id_relationship_type_target_id_index
@ -62,12 +69,26 @@ defmodule Pleroma.UserRelationship do
|> Repo.exists?() |> Repo.exists?()
end end
def create(relationship_type, %User{} = source, %User{} = target) do def get_expire_date(relationship_type, %User{} = source, %User{} = target) do
%UserRelationship{expires_at: expires_at} =
UserRelationship
|> where(
relationship_type: ^relationship_type,
source_id: ^source.id,
target_id: ^target.id
)
|> Repo.one!()
expires_at
end
def create(relationship_type, %User{} = source, %User{} = target, expires_at \\ nil) do
%UserRelationship{} %UserRelationship{}
|> changeset(%{ |> changeset(%{
relationship_type: relationship_type, relationship_type: relationship_type,
source_id: source.id, source_id: source.id,
target_id: target.id target_id: target.id,
expires_at: expires_at
}) })
|> Repo.insert( |> Repo.insert(
on_conflict: {:replace_all_except, [:id]}, on_conflict: {:replace_all_except, [:id]},

View File

@ -65,6 +65,11 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
defp fix_replies(data), do: data defp fix_replies(data), do: data
def fix_attachments(%{"attachment" => attachment} = data) when is_map(attachment),
do: Map.put(data, "attachment", [attachment])
def fix_attachments(data), do: data
defp fix(data) do defp fix(data) do
data data
|> CommonFixes.fix_actor() |> CommonFixes.fix_actor()
@ -72,6 +77,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
|> fix_url() |> fix_url()
|> fix_tag() |> fix_tag()
|> fix_replies() |> fix_replies()
|> fix_attachments()
|> Transmogrifier.fix_emoji() |> Transmogrifier.fix_emoji()
|> Transmogrifier.fix_content_map() |> Transmogrifier.fix_content_map()
end end

View File

@ -59,7 +59,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator do
end end
def fix_media_type(data) do def fix_media_type(data) do
Map.put_new(data, "mediaType", data["mimeType"]) Map.put_new(data, "mediaType", data["mimeType"] || "application/octet-stream")
end end
defp handle_href(href, mediaType, data) do defp handle_href(href, mediaType, data) do

View File

@ -49,6 +49,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do
defp fix(data) do defp fix(data) do
data = data =
data data
|> fix_emoji_qualification()
|> CommonFixes.fix_actor() |> CommonFixes.fix_actor()
|> CommonFixes.fix_activity_addressing() |> CommonFixes.fix_activity_addressing()
@ -61,6 +62,24 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do
end end
end end
defp fix_emoji_qualification(%{"content" => emoji} = data) do
# Emoji variation sequence
new_emoji = emoji <> "\uFE0F"
cond do
Pleroma.Emoji.is_unicode_emoji?(emoji) ->
data
Pleroma.Emoji.is_unicode_emoji?(new_emoji) ->
data |> Map.put("content", new_emoji)
true ->
data
end
end
defp fix_emoji_qualification(data), do: data
defp validate_emoji(cng) do defp validate_emoji(cng) do
content = get_field(cng, :content) content = get_field(cng, :content)

View File

@ -545,11 +545,19 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
description: "Invite token required when the registrations aren't public" description: "Invite token required when the registrations aren't public"
}, },
birthday: %Schema{ birthday: %Schema{
type: :string,
nullable: true, nullable: true,
description: "User's birthday", description: "User's birthday",
anyOf: [
%Schema{
type: :string,
format: :date format: :date
}, },
%Schema{
type: :string,
maxLength: 0
}
]
},
language: %Schema{ language: %Schema{
type: :string, type: :string,
nullable: true, nullable: true,
@ -733,11 +741,19 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
}, },
actor_type: ActorType, actor_type: ActorType,
birthday: %Schema{ birthday: %Schema{
type: :string,
nullable: true, nullable: true,
description: "User's birthday", description: "User's birthday",
anyOf: [
%Schema{
type: :string,
format: :date format: :date
}, },
%Schema{
type: :string,
maxLength: 0
}
]
},
show_birthday: %Schema{ show_birthday: %Schema{
allOf: [BooleanLike], allOf: [BooleanLike],
nullable: true, nullable: true,

View File

@ -33,6 +33,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do
header: %Schema{type: :string, format: :uri}, header: %Schema{type: :string, format: :uri},
id: FlakeID, id: FlakeID,
locked: %Schema{type: :boolean}, locked: %Schema{type: :boolean},
mute_expires_at: %Schema{type: :string, format: "date-time", nullable: true},
note: %Schema{type: :string, format: :html}, note: %Schema{type: :string, format: :html},
statuses_count: %Schema{type: :integer}, statuses_count: %Schema{type: :integer},
url: %Schema{type: :string, format: :uri}, url: %Schema{type: :string, format: :uri},

View File

@ -499,7 +499,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
users: users, users: users,
for: user, for: user,
as: :user, as: :user,
embed_relationships: embed_relationships?(params) embed_relationships: embed_relationships?(params),
mutes: true
) )
end end

View File

@ -311,6 +311,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
|> maybe_put_unread_conversation_count(user, opts[:for]) |> maybe_put_unread_conversation_count(user, opts[:for])
|> maybe_put_unread_notification_count(user, opts[:for]) |> maybe_put_unread_notification_count(user, opts[:for])
|> maybe_put_email_address(user, opts[:for]) |> maybe_put_email_address(user, opts[:for])
|> maybe_put_mute_expires_at(user, opts[:for], opts)
|> maybe_show_birthday(user, opts[:for]) |> maybe_show_birthday(user, opts[:for])
end end
@ -434,6 +435,16 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
defp maybe_put_email_address(data, _, _), do: data defp maybe_put_email_address(data, _, _), do: data
defp maybe_put_mute_expires_at(data, %User{} = user, target, %{mutes: true}) do
Map.put(
data,
:mute_expires_at,
UserRelationship.get_mute_expire_date(target, user)
)
end
defp maybe_put_mute_expires_at(data, _, _, _), do: data
defp maybe_show_birthday(data, %User{id: user_id} = user, %User{id: user_id}) do defp maybe_show_birthday(data, %User{id: user_id} = user, %User{id: user_id}) do
data data
|> Kernel.put_in([:pleroma, :birthday], user.birthday) |> Kernel.put_in([:pleroma, :birthday], user.birthday)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,212 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-21 23:42+0300\n"
"PO-Revision-Date: 2022-07-22 19:00+0000\n"
"Last-Translator: Haelwenn <contact+git.pleroma.social@hacktivis.me>\n"
"Language-Team: French <http://weblate.pleroma-dev.ebin.club/projects/pleroma/"
"pleroma-backend-domain-default/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.13.1\n"
## This file is a PO Template file.
##
## "msgid"s here are often extracted from source code.
## Add new translations manually only if they're dynamic
## translations that can't be statically extracted.
##
## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here as no
## effect: edit them in PO (.po) files instead.
#: lib/pleroma/web/api_spec/render_error.ex:122
#, elixir-autogen, elixir-format
msgid "%{name} - %{count} is not a multiple of %{multiple}."
msgstr "%{name} - %{count} n'est pas un multiple de %{multiple}."
#: lib/pleroma/web/api_spec/render_error.ex:131
#, elixir-autogen, elixir-format
msgid "%{name} - %{value} is larger than exclusive maximum %{max}."
msgstr "%{name} - %{value} est plus large que %{max}."
#: lib/pleroma/web/api_spec/render_error.ex:140
#, elixir-autogen, elixir-format
msgid "%{name} - %{value} is larger than inclusive maximum %{max}."
msgstr "%{name} - %{value} est plus large que %{max}."
#: lib/pleroma/web/api_spec/render_error.ex:149
#, elixir-autogen, elixir-format
msgid "%{name} - %{value} is smaller than exclusive minimum %{min}."
msgstr "%{name} - %{value} est plus petit que %{min}."
#: lib/pleroma/web/api_spec/render_error.ex:158
#, elixir-autogen, elixir-format
msgid "%{name} - %{value} is smaller than inclusive minimum %{min}."
msgstr "%{name} - %{value} est plus petit que %{min}."
#: lib/pleroma/web/api_spec/render_error.ex:102
#, elixir-autogen, elixir-format
msgid "%{name} - Array items must be unique."
msgstr "%{name} - Les objects de la liste doivent être uniques."
#: lib/pleroma/web/api_spec/render_error.ex:114
#, elixir-autogen, elixir-format
msgid "%{name} - Array length %{length} is larger than maxItems: %{}."
msgstr ""
"%{name} - La longueur %{length} de la liste est supérieure à maxItems: %{}."
#: lib/pleroma/web/api_spec/render_error.ex:106
#, elixir-autogen, elixir-format
msgid "%{name} - Array length %{length} is smaller than minItems: %{min}."
msgstr ""
"%{name} - La longueur %{length} de la liste est inférieure à minItems: "
"%{min}."
#: lib/pleroma/web/api_spec/render_error.ex:166
#, elixir-autogen, elixir-format
msgid "%{name} - Invalid %{type}. Got: %{value}."
msgstr "%{name} - %{type} invalide. Reçu: %{value}."
#: lib/pleroma/web/api_spec/render_error.ex:174
#, elixir-autogen, elixir-format
msgid "%{name} - Invalid format. Expected %{format}."
msgstr "%{name} - Format invalide. Format voulu : %{format}."
#: lib/pleroma/web/api_spec/render_error.ex:51
#, elixir-autogen, elixir-format
msgid "%{name} - Invalid schema.type. Got: %{type}."
msgstr "%{name} - schema.type invalide. Reçu: %{type}."
#: lib/pleroma/web/api_spec/render_error.ex:178
#, elixir-autogen, elixir-format
msgid "%{name} - Invalid value for enum."
msgstr "%{name} - valeur invalide pour enum."
#: lib/pleroma/web/api_spec/render_error.ex:95
#, elixir-autogen, elixir-format
msgid "%{name} - String length is larger than maxLength: %{length}."
msgstr ""
"%{name} - Longueur de chaine de caractères supérieure à maxLength: "
"%{length}."
#: lib/pleroma/web/api_spec/render_error.ex:88
#, elixir-autogen, elixir-format
msgid "%{name} - String length is smaller than minLength: %{length}."
msgstr ""
"%{name} - Longueur de chaine de caractères inférieure à minLength: "
"%{length}."
#: lib/pleroma/web/api_spec/render_error.ex:63
#, elixir-autogen, elixir-format
msgid "%{name} - null value where %{type} expected."
msgstr "%{name} - valeur nulle quand %{type} est requis."
#: lib/pleroma/web/api_spec/render_error.ex:60
#, elixir-autogen, elixir-format
msgid "%{name} - null value."
msgstr "%{name} - valeur nulle."
#: lib/pleroma/web/api_spec/render_error.ex:182
#, elixir-autogen, elixir-format
msgid "Failed to cast to any schema in %{polymorphic_type}"
msgstr "Échec de transformation du schéma en %{polymorphic_type}"
#: 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."
msgstr ""
"Échec de transformation de la valeur en %{invalid_schema}. La valeur doit "
"être transformable dans un des schémas `allOf` listés."
#: lib/pleroma/web/api_spec/render_error.ex:84
#, elixir-autogen, elixir-format
msgid "Failed to cast value to one of: %{failed_schemas}."
msgstr "Échec de transformation de la valeur en un des: %{failed_schemas}."
#: lib/pleroma/web/api_spec/render_error.ex:78
#, elixir-autogen, elixir-format
msgid "Failed to cast value using any of: %{failed_schemas}."
msgstr "Échec de transformation de la valeur en un des: %{failed_schemas}."
#: lib/pleroma/web/api_spec/render_error.ex:212
#, elixir-autogen, elixir-format
msgid "Invalid value for header: %{name}."
msgstr "Valeur invalide pour l'en-tête : %{name}."
#: lib/pleroma/web/api_spec/render_error.ex:204
#, elixir-autogen, elixir-format
msgid "Missing field: %{name}."
msgstr "Champ manquant : %{name}."
#: lib/pleroma/web/api_spec/render_error.ex:208
#, elixir-autogen, elixir-format
msgid "Missing header: %{name}."
msgstr "En-tête manquant : %{name}."
#: lib/pleroma/web/api_spec/render_error.ex:196
#, elixir-autogen, elixir-format
msgid "No value provided for required discriminator `%{field}`."
msgstr "Aucune valeur fournie pour le discriminant `%{field}`."
#: 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}."
msgstr ""
"Le nombre de propriétés, %{property_count} est supérieur à maxProperties: "
"%{max_properties}."
#: 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}"
msgstr ""
"Le nombre de propriétés, %{property_count} est inférieur à minProperties: "
"%{min_properties}"
#: lib/pleroma/web/templates/static_fe/static_fe/error.html.eex:2
#, elixir-autogen, elixir-format
msgid "Oops"
msgstr "Oups"
#: lib/pleroma/web/api_spec/render_error.ex:188
#, elixir-autogen, elixir-format
msgid "Unexpected field: %{name}."
msgstr "Champ inconnu : %{name}."
#: lib/pleroma/web/api_spec/render_error.ex:200
#, elixir-autogen, elixir-format
msgid "Unknown schema: %{name}."
msgstr "Schéma inconnu : %{name}."
#: lib/pleroma/web/api_spec/render_error.ex:192
#, elixir-autogen, elixir-format
msgid "Value used as discriminator for `%{field}` matches no schemas."
msgstr ""
"Valeur utilisée en discriminant de `%{field}` ne correspond à aucun schémas."
#: 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"
msgstr "annonces"
#: 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"
msgstr "favoris"
#: 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"
msgstr "réponses"
#: 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"
msgstr "contenu sensible"

View File

@ -0,0 +1,165 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-22 02:09+0300\n"
"PO-Revision-Date: 2022-07-21 23:35+0000\n"
"Last-Translator: Haelwenn <contact+git.pleroma.social@hacktivis.me>\n"
"Language-Team: French <http://weblate.pleroma-dev.ebin.club/projects/pleroma/"
"pleroma-backend-domain-posix_errors/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.13.1\n"
## This file is a PO Template file.
##
## `msgid`s here are often extracted from source code.
## Add new translations manually only if they're dynamic
## translations that can't be statically extracted.
##
## Run `mix gettext.extract` to bring this file up to
## date. Leave `msgstr`s empty as changing them here as no
## effect: edit them in PO (`.po`) files instead.
msgid "eperm"
msgstr "Opération non permise"
msgid "eacces"
msgstr "Permission refusée"
msgid "eagain"
msgstr "Ressource temporairement indisponible"
msgid "ebadf"
msgstr "Mauvais descripteur de fichier"
msgid "ebadmsg"
msgstr "Mauvais message"
msgid "ebusy"
msgstr "Périphérique ou ressource occupée"
msgid "edeadlk"
msgstr "Interblocage des ressources évité"
msgid "edeadlock"
msgstr "Interblocage des ressources évité"
msgid "edquot"
msgstr "Quota disque dépassé"
msgid "eexist"
msgstr "Fichier existant"
msgid "efault"
msgstr "Mauvaise addresse"
msgid "efbig"
msgstr "Fichier trop gros"
msgid "eftype"
msgstr "Type ou format de fichier inapproprié"
msgid "eintr"
msgstr "Appel système interrompu"
msgid "einval"
msgstr "Argument invalide"
msgid "eio"
msgstr "Erreur entrée/sortie"
msgid "eisdir"
msgstr "Opération non-permise sur un répertoire"
msgid "eloop"
msgstr "Trop de niveau de liens symboliques"
msgid "emfile"
msgstr "Trop de fichiers ouverts"
msgid "emlink"
msgstr "Trop de liens"
msgid "emultihop"
msgstr "Multi-saut essayé"
msgid "enametoolong"
msgstr "Nom de fichier trop long"
msgid "enfile"
msgstr "Trop de fichier ouvert dans le système"
msgid "enobufs"
msgstr "Pas d'espace tampon disponible"
msgid "enodev"
msgstr "Périphérique inexistant"
msgid "enolck"
msgstr "Pas de verrous disponibles"
msgid "enolink"
msgstr "Lien rompus"
msgid "enoent"
msgstr "Fichier ou dossier non trouvé"
msgid "enomem"
msgstr "Échec d'allocation mémoire"
msgid "enospc"
msgstr "Plus de place disponible sur le périphérique"
msgid "enosr"
msgstr "Plus de flux disponibles"
msgid "enostr"
msgstr "Périphérique qui n'est pas un flux"
msgid "enosys"
msgstr "Fonction non implémentée"
msgid "enotblk"
msgstr "Périphérique bloc requis"
msgid "enotdir"
msgstr "Pas un répertoire"
msgid "enotsup"
msgstr "Opération non supportée"
msgid "enxio"
msgstr "Addresse de périphérique inconnue"
msgid "eopnotsupp"
msgstr "Opération non supportée"
msgid "eoverflow"
msgstr "Valeur trop grande pour le type de donnée definit"
msgid "epipe"
msgstr "Tuyaux rompu"
msgid "erange"
msgstr "Valeur numérique hors de l'interval"
msgid "erofs"
msgstr "Système de fichier en lecture-seule"
msgid "espipe"
msgstr "Déplacement interdit"
msgid "esrch"
msgstr "Processus inexistant"
msgid "estale"
msgstr "Descripteur de fichier bouché"
msgid "etxtbsy"
msgstr "Fichier texte occupé"
msgid "exdev"
msgstr "Lien inter-périphérique invalide"

View File

@ -0,0 +1,564 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-21 23:03+0300\n"
"PO-Revision-Date: 2022-07-21 20:44+0000\n"
"Last-Translator: Haelwenn <contact+git.pleroma.social@hacktivis.me>\n"
"Language-Team: French <http://weblate.pleroma-dev.ebin.club/projects/pleroma/"
"pleroma-backend-domain-static_pages/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.13.1\n"
## This file is a PO Template file.
##
## "msgid"s here are often extracted from source code.
## Add new translations manually only if they're dynamic
## translations that can't be statically extracted.
##
## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here as no
## effect: edit them in PO (.po) files instead.
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:9
#, elixir-autogen, elixir-format
msgctxt "remote follow authorization button"
msgid "Authorize"
msgstr "Autoriser"
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:2
#, elixir-autogen, elixir-format
msgctxt "remote follow error"
msgid "Error fetching user"
msgstr "Erreur de requête au compte"
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:4
#, elixir-autogen, elixir-format
msgctxt "remote follow header"
msgid "Remote follow"
msgstr "Suivit distant"
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:8
#, elixir-autogen, elixir-format
msgctxt "placeholder text for auth code entry"
msgid "Authentication code"
msgstr "Code d'Authentification"
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:10
#, elixir-autogen, elixir-format
msgctxt "placeholder text for password entry"
msgid "Password"
msgstr "Mot de passe"
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:8
#, elixir-autogen, elixir-format
msgctxt "placeholder text for username entry"
msgid "Username"
msgstr "Nom d'utilisateur·rice"
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:13
#, elixir-autogen, elixir-format
msgctxt "remote follow authorization button for login"
msgid "Authorize"
msgstr "Autoriser"
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:12
#, elixir-autogen, elixir-format
msgctxt "remote follow authorization button for mfa"
msgid "Authorize"
msgstr "Autoriser"
#: lib/pleroma/web/templates/twitter_api/remote_follow/followed.html.eex:2
#, elixir-autogen, elixir-format
msgctxt "remote follow error"
msgid "Error following account"
msgstr "Erreur de suivi du compte"
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:4
#, elixir-autogen, elixir-format
msgctxt "remote follow header, need login"
msgid "Log in to follow"
msgstr "Authentification pour le suivit"
#: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:4
#, elixir-autogen, elixir-format
msgctxt "remote follow mfa header"
msgid "Two-factor authentication"
msgstr "Authentification à deux facteurs"
#: lib/pleroma/web/templates/twitter_api/remote_follow/followed.html.eex:4
#, elixir-autogen, elixir-format
msgctxt "remote follow success"
msgid "Account followed!"
msgstr "Utilisateur·rice suivi·e !"
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:7
#, elixir-autogen, elixir-format
msgctxt "placeholder text for account id"
msgid "Your account ID, e.g. lain@quitter.se"
msgstr "Votre identifiant, ex. lain@quitter.se"
#: 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"
msgid "Follow"
msgstr "Suivre"
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:2
#, elixir-autogen, elixir-format
msgctxt "remote follow error"
msgid "Error: %{error}"
msgstr "Erreur: %{error}"
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:4
#, elixir-autogen, elixir-format
msgctxt "remote follow header"
msgid "Remotely follow %{nickname}"
msgstr "Suivre %{nickname} à distance"
#: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:12
#, elixir-autogen, elixir-format
msgctxt "password reset button"
msgid "Reset"
msgstr "Changer"
#: lib/pleroma/web/templates/twitter_api/password/reset_failed.html.eex:4
#, elixir-autogen, elixir-format
msgctxt "password reset failed homepage link"
msgid "Homepage"
msgstr "Page d'accueil"
#: lib/pleroma/web/templates/twitter_api/password/reset_failed.html.eex:1
#, elixir-autogen, elixir-format
msgctxt "password reset failed message"
msgid "Password reset failed"
msgstr "Échec de changement du mot de passe"
#: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:8
#, elixir-autogen, elixir-format
msgctxt "password reset form confirm password prompt"
msgid "Confirmation"
msgstr "Confirmation"
#: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:4
#, elixir-autogen, elixir-format
msgctxt "password reset form password prompt"
msgid "Password"
msgstr "Mot de passe"
#: lib/pleroma/web/templates/twitter_api/password/invalid_token.html.eex:1
#, elixir-autogen, elixir-format
msgctxt "password reset invalid token message"
msgid "Invalid Token"
msgstr "Jeton invalide"
#: lib/pleroma/web/templates/twitter_api/password/reset_success.html.eex:2
#, elixir-autogen, elixir-format
msgctxt "password reset successful homepage link"
msgid "Homepage"
msgstr "Page d'accueil"
#: lib/pleroma/web/templates/twitter_api/password/reset_success.html.eex:1
#, elixir-autogen, elixir-format
msgctxt "password reset successful message"
msgid "Password changed!"
msgstr "Mot de passe changé !"
#: lib/pleroma/web/templates/feed/feed/tag.atom.eex:15
#: lib/pleroma/web/templates/feed/feed/tag.rss.eex:7
#, elixir-autogen, elixir-format
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."
msgstr ""
"Ceci sont des messages publics lié à #%{tag}. Vous pouvez intéragir avec si "
"vous avez un compte sur le Fediverse."
#: lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex:1
#, elixir-autogen, elixir-format
msgctxt "oauth authorization exists page title"
msgid "Authorization exists"
msgstr "Autorisation existante"
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:32
#, elixir-autogen, elixir-format
msgctxt "oauth authorize approve button"
msgid "Approve"
msgstr "Approuver"
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:30
#, elixir-autogen, elixir-format
msgctxt "oauth authorize cancel button"
msgid "Cancel"
msgstr "Annuler"
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:23
#, elixir-autogen, elixir-format
msgctxt "oauth authorize message"
msgid "Application <strong>%{client_name}</strong> is requesting access to your account."
msgstr ""
"L'application <strong>%{client_name}</strong> demande un accès à votre "
"compte."
#: lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex:1
#, elixir-autogen, elixir-format
msgctxt "oauth authorized page title"
msgid "Successfully authorized"
msgstr "Autorisé avec succès"
#: lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex:1
#, elixir-autogen, elixir-format
msgctxt "oauth external provider page title"
msgid "Sign in with external provider"
msgstr "Authentication externe"
#: lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex:13
#, elixir-autogen, elixir-format
msgctxt "oauth external provider sign in button"
msgid "Sign in with %{strategy}"
msgstr "Authentification avec %{strategy}"
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:54
#, elixir-autogen, elixir-format
msgctxt "oauth login button"
msgid "Log In"
msgstr "Authentification"
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:51
#, elixir-autogen, elixir-format
msgctxt "oauth login password prompt"
msgid "Password"
msgstr "Mot de passe"
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:47
#, elixir-autogen, elixir-format
msgctxt "oauth login username prompt"
msgid "Username"
msgstr "Nom d'utilisateur·rice"
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:39
#, elixir-autogen, elixir-format
msgctxt "oauth register nickname prompt"
msgid "Pleroma Handle"
msgstr "Pseudo Pleroma"
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:37
#, elixir-autogen, elixir-format
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."
msgstr ""
"Faites attention ! Vous ne pourrez plus le changer plus tard. Mais, vous "
"pourrez changer votre Nom."
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:18
#, elixir-autogen, elixir-format
msgctxt "oauth register page email prompt"
msgid "Email"
msgstr "Courriel"
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:10
#, elixir-autogen, elixir-format
msgctxt "oauth register page fill form prompt"
msgid "If you'd like to register a new account, please provide the details below."
msgstr "Si vous voulez créer un compte, veuillez fournir les détails suivants."
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:35
#, elixir-autogen, elixir-format
msgctxt "oauth register page login button"
msgid "Proceed as existing user"
msgstr "Continuer avec un compte existant"
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:31
#, elixir-autogen, elixir-format
msgctxt "oauth register page login password prompt"
msgid "Password"
msgstr "Mot de passe"
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:24
#, elixir-autogen, elixir-format
msgctxt "oauth register page login prompt"
msgid "Alternatively, sign in to connect to existing account."
msgstr "Alternativement, s'authentifier avec un compte existant."
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:27
#, elixir-autogen, elixir-format
msgctxt "oauth register page login username prompt"
msgid "Name or email"
msgstr "Nom ou courriel"
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:14
#, elixir-autogen, elixir-format
msgctxt "oauth register page nickname prompt"
msgid "Nickname"
msgstr "Pseudonyme"
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:22
#, elixir-autogen, elixir-format
msgctxt "oauth register page register button"
msgid "Proceed as new user"
msgstr "Continuer avec un nouveau compte"
#: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:8
#, elixir-autogen, elixir-format
msgctxt "oauth register page title"
msgid "Registration Details"
msgstr "Détails d'inscriptions"
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:36
#, elixir-autogen, elixir-format
msgctxt "oauth register page title"
msgid "This is the first time you visit! Please enter your Pleroma handle."
msgstr "Ceci est votre première visite! Veuillez entrer votre pseudo."
#: lib/pleroma/web/templates/o_auth/o_auth/_scopes.html.eex:2
#, elixir-autogen, elixir-format
msgctxt "oauth scopes message"
msgid "The following permissions will be granted"
msgstr "Les permissions suivantes seront données"
#: 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
#, elixir-autogen, elixir-format
msgctxt "oauth token code message"
msgid "Token code is <br>%{token}"
msgstr "Le jeton est <br>%{token}"
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:12
#, elixir-autogen, elixir-format
msgctxt "mfa auth code prompt"
msgid "Authentication code"
msgstr "Code d'authentification"
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:8
#, elixir-autogen, elixir-format
msgctxt "mfa auth page title"
msgid "Two-factor authentication"
msgstr "Authentification à double-facteurs"
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:23
#, elixir-autogen, elixir-format
msgctxt "mfa auth page use recovery code link"
msgid "Enter a two-factor recovery code"
msgstr "Entrer un code de récupération de l'authentification à double-facteur"
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:20
#, elixir-autogen, elixir-format
msgctxt "mfa auth verify code button"
msgid "Verify"
msgstr "Vérifier"
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:8
#, elixir-autogen, elixir-format
msgctxt "mfa recover page title"
msgid "Two-factor recovery"
msgstr "Récupération du double-facteur"
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:12
#, elixir-autogen, elixir-format
msgctxt "mfa recover recovery code prompt"
msgid "Recovery code"
msgstr "Code de récupération"
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:23
#, elixir-autogen, elixir-format
msgctxt "mfa recover use 2fa code link"
msgid "Enter a two-factor code"
msgstr "Entrer un code double-facteur"
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:20
#, elixir-autogen, elixir-format
msgctxt "mfa recover verify recovery code button"
msgid "Verify"
msgstr "Vérifier"
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:8
#, elixir-autogen, elixir-format
msgctxt "static fe profile page remote follow button"
msgid "Remote follow"
msgstr "Suivit distant"
#: lib/pleroma/web/templates/email/digest.html.eex:163
#, elixir-autogen, elixir-format
msgctxt "digest email header line"
msgid "Hey %{nickname}, here is what you've missed!"
msgstr "Salut %{nickname}, voici ce que tu as manqué·e !"
#: lib/pleroma/web/templates/email/digest.html.eex:544
#, elixir-autogen, elixir-format
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>. "
msgstr ""
"L'adresse que vous avez enregistré est <a href='mailto:%{@user.email}' "
"style='color: %{color};text-decoration: none;'>%{email}</a>. "
#: lib/pleroma/web/templates/email/digest.html.eex:538
#, elixir-autogen, elixir-format
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."
msgstr ""
"Vous recevez ce courriel parce-que vous avez autorisé les messages-résumés "
"de l'instance pleroma, <b>%{instance}</b>."
#: lib/pleroma/web/templates/email/digest.html.eex:547
#, elixir-autogen, elixir-format
msgctxt "digest email unsubscribe action"
msgid "To unsubscribe, please go %{here}."
msgstr "Pour vous désinscrire, aller %{here}."
#: lib/pleroma/web/templates/email/digest.html.eex:547
#, elixir-autogen, elixir-format
msgctxt "digest email unsubscribe action link text"
msgid "here"
msgstr "ici"
#: lib/pleroma/web/templates/mailer/subscription/unsubscribe_failure.html.eex:1
#, elixir-autogen, elixir-format
msgctxt "mailer unsubscribe failed message"
msgid "UNSUBSCRIBE FAILURE"
msgstr "ÉCHEC DE DÉSINSCRIPTION"
#: lib/pleroma/web/templates/mailer/subscription/unsubscribe_success.html.eex:1
#, elixir-autogen, elixir-format
msgctxt "mailer unsubscribe successful message"
msgid "UNSUBSCRIBE SUCCESSFUL"
msgstr "SUCCÈS DE LA DÉSINSCRIPTION"
#: lib/pleroma/web/templates/email/digest.html.eex:385
#, elixir-format
msgctxt "new followers count header"
msgid "%{count} New Follower"
msgid_plural "%{count} New Followers"
msgstr[0] "%{count} nouveau suivit"
msgstr[1] "%{count} nouveaux suivits"
#: 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 Pleroma account. It's ready for download:</p>\n<p><a href=\"%{download_url}\">%{download_url}</a></p>\n"
msgstr ""
"<p>Vous avez demandé une sauvegarde complète de votre compte Pleroma. Le "
"téléchargement est prêt :</p>\n"
"<p><a href=\"%{download_url}\">%{download_url}</a></p>\n"
#: lib/pleroma/emails/user_email.ex:384
#, elixir-autogen, elixir-format
msgctxt "account archive email subject"
msgid "Your account archive is ready"
msgstr "La sauvegarde de votre compte est prête"
#: lib/pleroma/emails/user_email.ex:188
#, elixir-autogen, elixir-format
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"
msgstr ""
"<h3>En attente d'approbation</h3>\n"
"<p>Votre compte sur %{instance_name} est en revue par l'équipe. Vous "
"recevrez un autre courriel quand le compte sera approuvé.</p>\n"
#: lib/pleroma/emails/user_email.ex:202
#, elixir-autogen, elixir-format
msgctxt "approval pending email subject"
msgid "Your account is awaiting approval"
msgstr "Votre compte est en attente d'approbation"
#: lib/pleroma/emails/user_email.ex:158
#, elixir-autogen, elixir-format
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"
msgstr ""
"<h3>Merci de votre inscription à %{instance_name}</h3>\n"
"<p>Une confirmation du courriel est requise.</p>\n"
"<p>Veuillez cliquer sur <a href=\"%{confirmation_url}\">pour activer votre "
"compte</a>.</p>\n"
#: lib/pleroma/emails/user_email.ex:174
#, elixir-autogen, elixir-format
msgctxt "confirmation email subject"
msgid "%{instance_name} account confirmation"
msgstr "confirmation du compte %{instance_name}"
#: lib/pleroma/emails/user_email.ex:310
#, elixir-autogen, elixir-format
msgctxt "digest email subject"
msgid "Your digest from %{instance_name}"
msgstr "Votre résumé de %{instance_name}"
#: lib/pleroma/emails/user_email.ex:81
#, elixir-autogen, elixir-format
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"
msgstr ""
"<h3>Changement de mot de passe à %{instance_name}</h3>\n"
"<p>Une requête de changement de mot de passe pour votre compte à "
"%{instance_name} à été reçue.</p>\n"
"<p>Si c'était vous, veuillez suivre le lien suivant pour continuer: <a href="
"\"%{password_reset_url}\">changer de mot de passe</a>.</p>\n"
"<p>Si ça n'était pas vous, rien à craindre, vos données sont sécurisés et "
"votre mot de passe n'a pas été changé.</p>\n"
#: lib/pleroma/emails/user_email.ex:98
#, elixir-autogen, elixir-format
msgctxt "password reset email subject"
msgid "Password reset"
msgstr "Changement de mot de passe"
#: lib/pleroma/emails/user_email.ex:215
#, elixir-autogen, elixir-format
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"
msgstr ""
"<h3>Bonjour @%{nickname},</h3>\n"
"<p>Votre compte %{instance_name} à été enregistré avec succès.</p>\n"
"<p>Aucune action suivante est requise.</p>\n"
#: lib/pleroma/emails/user_email.ex:231
#, elixir-autogen, elixir-format
msgctxt "successful registration email subject"
msgid "Account registered on %{instance_name}"
msgstr "Compte enregistré sur %{instance_name}"
#: 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 Pleroma federated social networking platform.</p>\n<p>Click the following link to register: <a href=\"%{registration_url}\">accept invitation</a>.</p>\n"
msgstr ""
"<h3>Vous avez été invité à %{instance_name}</h3>\n"
"<p>%{inviter_name} vous invite à rejoindre %{instance_name}, une instance de "
"Pleroma, réseau social fédéré.</p>\n"
"<p>Cliquer le lien suivant pour vous enregistrer: <a href=\""
"%{registration_url}\">accepter l'invitation</a>.</p>\n"
#: lib/pleroma/emails/user_email.ex:136
#, elixir-autogen, elixir-format
msgctxt "user invitation email subject"
msgid "Invitation to %{instance_name}"
msgstr "Invitation à %{instance_name}"
#: lib/pleroma/emails/user_email.ex:53
#, elixir-autogen, elixir-format
msgctxt "welcome email html body"
msgid "Welcome to %{instance_name}!"
msgstr "Bienvenu·e à %{instance_name}!"
#: lib/pleroma/emails/user_email.ex:41
#, elixir-autogen, elixir-format
msgctxt "welcome email subject"
msgid "Welcome to %{instance_name}!"
msgstr "Bienvenu·e à %{instance_name}!"
#: lib/pleroma/emails/user_email.ex:65
#, elixir-autogen, elixir-format
msgctxt "welcome email text body"
msgid "Welcome to %{instance_name}!"
msgstr "Bienvenu·e à %{instance_name}!"
#: lib/pleroma/emails/user_email.ex:368
#, elixir-autogen, elixir-format
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"
msgstr ""
"<p>L'Admin de @%{admin_nickname} à demandé une sauvegarde complète de votre "
"compte Pleroma. Le téléchargement est prêt:</p>\n"
"<p><a href=\"%{download_url}\">%{download_url}</a></p>\n"

File diff suppressed because it is too large Load Diff

View File

@ -8,179 +8,186 @@
## to merge POT files into PO files. ## to merge POT files into PO files.
msgid "" msgid ""
msgstr "" msgstr ""
"PO-Revision-Date: 2022-07-22 19:00+0000\n"
"Last-Translator: Yating Zhan <thestrandedvalley@protonmail.com>\n"
"Language-Team: Chinese (Simplified) <http://weblate.pleroma-dev.ebin.club/"
"projects/pleroma/pleroma-backend-domain-default/zh_Hans/>\n"
"Language: zh_Hans\n" "Language: zh_Hans\n"
"Plural-Forms: nplurals=1\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.13.1\n"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:122 #: lib/pleroma/web/api_spec/render_error.ex:122
#, elixir-format
msgid "%{name} - %{count} is not a multiple of %{multiple}." msgid "%{name} - %{count} is not a multiple of %{multiple}."
msgstr "" msgstr "%{name} - %{count} 不是 %{multiple} 的倍数。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:131 #: lib/pleroma/web/api_spec/render_error.ex:131
#, elixir-format
msgid "%{name} - %{value} is larger than exclusive maximum %{max}." msgid "%{name} - %{value} is larger than exclusive maximum %{max}."
msgstr "" msgstr "%{name} - %{value} 大于排除性最大值 %{max}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:140 #: lib/pleroma/web/api_spec/render_error.ex:140
#, elixir-format
msgid "%{name} - %{value} is larger than inclusive maximum %{max}." msgid "%{name} - %{value} is larger than inclusive maximum %{max}."
msgstr "" msgstr "%{name} - %{value} 大于包括性最大值 %{max}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:149 #: lib/pleroma/web/api_spec/render_error.ex:149
#, elixir-format
msgid "%{name} - %{value} is smaller than exclusive minimum %{min}." msgid "%{name} - %{value} is smaller than exclusive minimum %{min}."
msgstr "" msgstr "%{name} - %{value} 小于排除性最小值 %{min}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:158 #: lib/pleroma/web/api_spec/render_error.ex:158
#, elixir-format
msgid "%{name} - %{value} is smaller than inclusive minimum %{min}." msgid "%{name} - %{value} is smaller than inclusive minimum %{min}."
msgstr "" msgstr "%{name} - %{value} 小于包括性最小值 %{min}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:102 #: lib/pleroma/web/api_spec/render_error.ex:102
#, elixir-format
msgid "%{name} - Array items must be unique." msgid "%{name} - Array items must be unique."
msgstr "" msgstr "%{name} - 数组项目必须唯一。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:114 #: lib/pleroma/web/api_spec/render_error.ex:114
#, elixir-format
msgid "%{name} - Array length %{length} is larger than maxItems: %{}." msgid "%{name} - Array length %{length} is larger than maxItems: %{}."
msgstr "" msgstr "%{name} - 数组长度 %{length} 大于最大项目数: %{}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:106 #: lib/pleroma/web/api_spec/render_error.ex:106
#, elixir-format
msgid "%{name} - Array length %{length} is smaller than minItems: %{min}." msgid "%{name} - Array length %{length} is smaller than minItems: %{min}."
msgstr "" msgstr "%{name} - 数组长度 %{length} 小于最小项目数: %{min}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:166 #: lib/pleroma/web/api_spec/render_error.ex:166
#, elixir-format
msgid "%{name} - Invalid %{type}. Got: %{value}." msgid "%{name} - Invalid %{type}. Got: %{value}."
msgstr "" msgstr "%{name} - 不合法的 %{type}。得到的是:%{value}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:174 #: lib/pleroma/web/api_spec/render_error.ex:174
#, elixir-format
msgid "%{name} - Invalid format. Expected %{format}." msgid "%{name} - Invalid format. Expected %{format}."
msgstr "" msgstr "%{name} - 不合法的格式。预期是 %{format}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:51 #: lib/pleroma/web/api_spec/render_error.ex:51
#, elixir-format
msgid "%{name} - Invalid schema.type. Got: %{type}." msgid "%{name} - Invalid schema.type. Got: %{type}."
msgstr "" msgstr "%{name} - 不合法的 schema.type。得到的是%{type}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:178 #: lib/pleroma/web/api_spec/render_error.ex:178
#, elixir-format
msgid "%{name} - Invalid value for enum." msgid "%{name} - Invalid value for enum."
msgstr "" msgstr "%{name} - 枚举值不合法。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:95 #: lib/pleroma/web/api_spec/render_error.ex:95
#, elixir-format
msgid "%{name} - String length is larger than maxLength: %{length}." msgid "%{name} - String length is larger than maxLength: %{length}."
msgstr "" msgstr "%{name} - 字串长度大于最大长度:%{length}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:88 #: lib/pleroma/web/api_spec/render_error.ex:88
#, elixir-format
msgid "%{name} - String length is smaller than minLength: %{length}." msgid "%{name} - String length is smaller than minLength: %{length}."
msgstr "" msgstr "%{name} - 字串长度小于最小长度:%{length}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:63 #: lib/pleroma/web/api_spec/render_error.ex:63
#, elixir-format
msgid "%{name} - null value where %{type} expected." msgid "%{name} - null value where %{type} expected."
msgstr "" msgstr "%{name} - null 值,但是预期该是 %{type}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:60 #: lib/pleroma/web/api_spec/render_error.ex:60
#, elixir-format
msgid "%{name} - null value." msgid "%{name} - null value."
msgstr "" msgstr "%{name} - null 值。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:182 #: lib/pleroma/web/api_spec/render_error.ex:182
#, elixir-format
msgid "Failed to cast to any schema in %{polymorphic_type}" msgid "Failed to cast to any schema in %{polymorphic_type}"
msgstr "" msgstr "转换到 %{polymorphic_type} 中的任一 schema 失败"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:71 #: lib/pleroma/web/api_spec/render_error.ex:71
#, 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 "把值转换成 %{invalid_schema} 失败。值必须可以被转换成在列的「所有」schema。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:84 #: lib/pleroma/web/api_spec/render_error.ex:84
#, elixir-format
msgid "Failed to cast value to one of: %{failed_schemas}." msgid "Failed to cast value to one of: %{failed_schemas}."
msgstr "" msgstr "转换值为 %{failed_schemas} 中的一个失败。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:78 #: lib/pleroma/web/api_spec/render_error.ex:78
#, elixir-format
msgid "Failed to cast value using any of: %{failed_schemas}." msgid "Failed to cast value using any of: %{failed_schemas}."
msgstr "" msgstr "转换值为 %{failed_schemas} 中的任意一个失败。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:212 #: lib/pleroma/web/api_spec/render_error.ex:212
#, elixir-format
msgid "Invalid value for header: %{name}." msgid "Invalid value for header: %{name}."
msgstr "" msgstr "头 %{name} 的不合法的值。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:204 #: lib/pleroma/web/api_spec/render_error.ex:204
#, elixir-format
msgid "Missing field: %{name}." msgid "Missing field: %{name}."
msgstr "" msgstr "缺少字段:%{name}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:208 #: lib/pleroma/web/api_spec/render_error.ex:208
msgid "Missing header: %{name}."
msgstr ""
#, elixir-format #, elixir-format
msgid "Missing header: %{name}."
msgstr "缺少头:%{name}。"
#: lib/pleroma/web/api_spec/render_error.ex:196 #: lib/pleroma/web/api_spec/render_error.ex:196
#, elixir-format
msgid "No value provided for required discriminator `%{field}`." msgid "No value provided for required discriminator `%{field}`."
msgstr "" msgstr ""
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:216 #: lib/pleroma/web/api_spec/render_error.ex:216
#, 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-format
#: lib/pleroma/web/api_spec/render_error.ex:224 #: lib/pleroma/web/api_spec/render_error.ex:224
#, 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-format
#: lib/pleroma/web/templates/static_fe/static_fe/error.html.eex:2 #: lib/pleroma/web/templates/static_fe/static_fe/error.html.eex:2
#, elixir-format
msgid "Oops" msgid "Oops"
msgstr "" msgstr "嗨呀"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:188 #: lib/pleroma/web/api_spec/render_error.ex:188
#, elixir-format
msgid "Unexpected field: %{name}." msgid "Unexpected field: %{name}."
msgstr "" msgstr "超出预期的字段:%{name}。"
#, elixir-format
#: lib/pleroma/web/api_spec/render_error.ex:200 #: lib/pleroma/web/api_spec/render_error.ex:200
msgid "Unknown schema: %{name}."
msgstr ""
#, elixir-format #, elixir-format
msgid "Unknown schema: %{name}."
msgstr "未知的 schema%{name}。"
#: lib/pleroma/web/api_spec/render_error.ex:192 #: lib/pleroma/web/api_spec/render_error.ex:192
#, 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-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 #: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:37
msgid "announces"
msgstr ""
#, elixir-format #, elixir-format
msgid "announces"
msgstr "传播"
#: 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 #: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:38
msgid "likes"
msgstr ""
#, elixir-format #, elixir-format
msgid "likes"
msgstr "喜欢"
#: 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 #: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:36
msgid "replies"
msgstr ""
#, elixir-format #, elixir-format
msgid "replies"
msgstr "回复"
#: 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 #: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:22
#, elixir-format
msgid "sensitive media" msgid "sensitive media"
msgstr "" msgstr "敏感媒体"

View File

@ -3,16 +3,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-20 13:18+0000\n" "POT-Creation-Date: 2020-09-20 13:18+0000\n"
"PO-Revision-Date: 2020-12-14 06:00+0000\n" "PO-Revision-Date: 2022-07-22 19:00+0000\n"
"Last-Translator: shironeko <shironeko@tesaguri.club>\n" "Last-Translator: Yating Zhan <thestrandedvalley@protonmail.com>\n"
"Language-Team: Chinese (Simplified) <https://translate.pleroma.social/" "Language-Team: Chinese (Simplified) <http://weblate.pleroma-dev.ebin.club/"
"projects/pleroma/pleroma/zh_Hans/>\n" "projects/pleroma/pleroma-backend-domain-errors/zh_Hans/>\n"
"Language: zh_Hans\n" "Language: zh_Hans\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.0.4\n" "X-Generator: Weblate 4.13.1\n"
## This file is a PO Template file. ## This file is a PO Template file.
## ##
@ -65,7 +65,7 @@ msgstr[0] "应为 %{count} 个字符"
msgid "should have %{count} item(s)" msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)" msgid_plural "should have %{count} item(s)"
msgstr[0] "应有 %{item} 项" msgstr[0] "应有 %{count} 项"
msgid "should be at least %{count} character(s)" msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)" msgid_plural "should be at least %{count} character(s)"
@ -99,371 +99,370 @@ msgstr "必须大于等于 %{number}"
msgid "must be equal to %{number}" msgid "must be equal to %{number}"
msgstr "必须等于 %{number}" msgstr "必须等于 %{number}"
#, elixir-format
#: lib/pleroma/web/common_api.ex:523 #: lib/pleroma/web/common_api.ex:523
#, elixir-format
msgid "Account not found" msgid "Account not found"
msgstr "未找到账号" msgstr "未找到账号"
#, elixir-format
#: lib/pleroma/web/common_api.ex:316 #: lib/pleroma/web/common_api.ex:316
#, elixir-format
msgid "Already voted" msgid "Already voted"
msgstr "已经进行了投票" msgstr "已经进行了投票"
#, elixir-format
#: lib/pleroma/web/o_auth/o_auth_controller.ex:402 #: lib/pleroma/web/o_auth/o_auth_controller.ex:402
#, elixir-format
msgid "Bad request" msgid "Bad request"
msgstr "不正确的请求" msgstr "不正确的请求"
#, elixir-format
#: lib/pleroma/web/controller_helper.ex:97 #: lib/pleroma/web/controller_helper.ex:97
#: lib/pleroma/web/controller_helper.ex:103 #: lib/pleroma/web/controller_helper.ex:103
#, elixir-format
msgid "Can't display this activity" msgid "Can't display this activity"
msgstr "不能显示该活动" msgstr "不能显示该活动"
#, elixir-format
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:324 #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:324
#, elixir-format
msgid "Can't find user" msgid "Can't find user"
msgstr "找不到用户" msgstr "找不到用户"
#, elixir-format
#: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:80 #: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:80
#, elixir-format
msgid "Can't get favorites" msgid "Can't get favorites"
msgstr "不能获取收藏" msgstr "不能获取收藏"
#, elixir-format
#: lib/pleroma/web/common_api/utils.ex:482 #: lib/pleroma/web/common_api/utils.ex:482
#, elixir-format
msgid "Cannot post an empty status without attachments" msgid "Cannot post an empty status without attachments"
msgstr "无法发送空白且不包含附件的状态" msgstr "无法发送空白且不包含附件的状态"
#, elixir-format, fuzzy
#: lib/pleroma/web/common_api/utils.ex:441 #: lib/pleroma/web/common_api/utils.ex:441
#, elixir-format
msgid "Comment must be up to %{max_size} characters" msgid "Comment must be up to %{max_size} characters"
msgstr "评论最多可使用 %{max_size} 字符" msgstr "评论最多可使用 %{max_size} 字符"
#, elixir-format
#: lib/pleroma/config_db.ex:200 #: lib/pleroma/config_db.ex:200
#, elixir-format
msgid "Config with params %{params} not found" msgid "Config with params %{params} not found"
msgstr "无法找到包含参数 %{params} 的配置" msgstr "无法找到包含参数 %{params} 的配置"
#, elixir-format
#: lib/pleroma/web/common_api.ex:167 #: lib/pleroma/web/common_api.ex:167
#: lib/pleroma/web/common_api.ex:171 #: lib/pleroma/web/common_api.ex:171
#, elixir-format
msgid "Could not delete" msgid "Could not delete"
msgstr "无法删除" msgstr "无法删除"
#, elixir-format
#: lib/pleroma/web/common_api.ex:217 #: lib/pleroma/web/common_api.ex:217
#, elixir-format
msgid "Could not favorite" msgid "Could not favorite"
msgstr "无法收藏" msgstr "无法收藏"
#, elixir-format
#: lib/pleroma/web/common_api.ex:254 #: lib/pleroma/web/common_api.ex:254
#, elixir-format
msgid "Could not unfavorite" msgid "Could not unfavorite"
msgstr "无法取消收藏" msgstr "无法取消收藏"
#, elixir-format
#: lib/pleroma/web/common_api.ex:202 #: lib/pleroma/web/common_api.ex:202
#, elixir-format
msgid "Could not unrepeat" msgid "Could not unrepeat"
msgstr "无法取消转发" msgstr "无法取消转发"
#, elixir-format
#: lib/pleroma/web/common_api.ex:530 #: lib/pleroma/web/common_api.ex:530
#: lib/pleroma/web/common_api.ex:539 #: lib/pleroma/web/common_api.ex:539
#, elixir-format
msgid "Could not update state" msgid "Could not update state"
msgstr "无法更新状态" msgstr "无法更新状态"
#, elixir-format
#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:205 #: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:205
#, elixir-format
msgid "Error." msgid "Error."
msgstr "错误。" msgstr "错误。"
#, elixir-format
#: lib/pleroma/web/twitter_api/twitter_api.ex:99 #: lib/pleroma/web/twitter_api/twitter_api.ex:99
#, elixir-format
msgid "Invalid CAPTCHA" msgid "Invalid CAPTCHA"
msgstr "无效的验证码" msgstr "无效的验证码"
#, elixir-format
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:144 #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:144
#: lib/pleroma/web/o_auth/o_auth_controller.ex:631 #: lib/pleroma/web/o_auth/o_auth_controller.ex:631
#, elixir-format
msgid "Invalid credentials" msgid "Invalid credentials"
msgstr "无效的凭据" msgstr "无效的凭据"
#, elixir-format
#: lib/pleroma/web/plugs/ensure_authenticated_plug.ex:42 #: lib/pleroma/web/plugs/ensure_authenticated_plug.ex:42
#, elixir-format
msgid "Invalid credentials." msgid "Invalid credentials."
msgstr "无效的凭据。" msgstr "无效的凭据。"
#, elixir-format
#: lib/pleroma/web/common_api.ex:337 #: lib/pleroma/web/common_api.ex:337
#, elixir-format
msgid "Invalid indices" msgid "Invalid indices"
msgstr "无效的索引" msgstr "无效的索引"
#, elixir-format
#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:29 #: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:29
#, elixir-format
msgid "Invalid parameters" msgid "Invalid parameters"
msgstr "无效的参数" msgstr "无效的参数"
#, elixir-format
#: lib/pleroma/web/common_api/utils.ex:349 #: lib/pleroma/web/common_api/utils.ex:349
#, elixir-format
msgid "Invalid password." msgid "Invalid password."
msgstr "无效的密码。" msgstr "无效的密码。"
#, elixir-format
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:254 #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:254
#, elixir-format
msgid "Invalid request" msgid "Invalid request"
msgstr "无效的请求" msgstr "无效的请求"
#, elixir-format
#: lib/pleroma/web/twitter_api/twitter_api.ex:102 #: lib/pleroma/web/twitter_api/twitter_api.ex:102
#, elixir-format
msgid "Kocaptcha service unavailable" msgid "Kocaptcha service unavailable"
msgstr "Kocaptcha 服务不可用" msgstr "Kocaptcha 服务不可用"
#, elixir-format
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:140 #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:140
#, elixir-format
msgid "Missing parameters" msgid "Missing parameters"
msgstr "缺少参数" msgstr "缺少参数"
#, elixir-format
#: lib/pleroma/web/common_api/utils.ex:477 #: lib/pleroma/web/common_api/utils.ex:477
#, elixir-format
msgid "No such conversation" msgid "No such conversation"
msgstr "没有该对话" msgstr "没有该对话"
#, elixir-format, fuzzy
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:171 #: 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:197
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:239 #: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:239
#, elixir-format
msgid "No such permission_group" msgid "No such permission_group"
msgstr "没有该权限组" msgstr "没有该权限组"
#, elixir-format
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:504 #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:504
#: 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:69
#: lib/pleroma/web/o_status/o_status_controller.ex:132 #: lib/pleroma/web/o_status/o_status_controller.ex:132
#: lib/pleroma/web/plugs/uploaded_media.ex:84 #: lib/pleroma/web/plugs/uploaded_media.ex:84
#, elixir-format
msgid "Not found" msgid "Not found"
msgstr "未找到" msgstr "未找到"
#, elixir-format
#: lib/pleroma/web/common_api.ex:308 #: lib/pleroma/web/common_api.ex:308
#, elixir-format
msgid "Poll's author can't vote" msgid "Poll's author can't vote"
msgstr "投票的发起者不能投票" msgstr "投票的发起者不能投票"
#, elixir-format
#: 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/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-format
msgid "Record not found" msgid "Record not found"
msgstr "未找到该记录" msgstr "未找到该记录"
#, 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:78
#: 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:138
#, elixir-format
msgid "Something went wrong" msgid "Something went wrong"
msgstr "发生了一些错误" msgstr "发生了一些错误"
#, elixir-format
#: lib/pleroma/web/common_api/activity_draft.ex:143 #: lib/pleroma/web/common_api/activity_draft.ex:143
#, elixir-format
msgid "The message visibility must be direct" msgid "The message visibility must be direct"
msgstr "该消息必须为私信" msgstr "该消息必须为私信"
#, elixir-format
#: lib/pleroma/web/common_api/utils.ex:492 #: lib/pleroma/web/common_api/utils.ex:492
#, elixir-format
msgid "The status is over the character limit" msgid "The status is over the character limit"
msgstr "状态超过了字符数限制" msgstr "状态超过了字符数限制"
#, 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-format
msgid "This resource requires authentication." msgid "This resource requires authentication."
msgstr "该资源需要认证。" msgstr "该资源需要认证。"
#, elixir-format, fuzzy
#: lib/pleroma/web/plugs/rate_limiter.ex:208 #: lib/pleroma/web/plugs/rate_limiter.ex:208
msgid "Throttled"
msgstr "节流了"
#, elixir-format #, elixir-format
msgid "Throttled"
msgstr "限流了"
#: lib/pleroma/web/common_api.ex:338 #: lib/pleroma/web/common_api.ex:338
#, elixir-format
msgid "Too many choices" msgid "Too many choices"
msgstr "太多选项" msgstr "太多选项"
#, elixir-format
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:268 #: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:268
#, elixir-format
msgid "You can't revoke your own admin status." msgid "You can't revoke your own admin status."
msgstr "您不能撤消自己的管理员权限。" msgstr "您不能撤消自己的管理员权限。"
#, elixir-format
#: lib/pleroma/web/o_auth/o_auth_controller.ex:243 #: lib/pleroma/web/o_auth/o_auth_controller.ex:243
#: lib/pleroma/web/o_auth/o_auth_controller.ex:333 #: lib/pleroma/web/o_auth/o_auth_controller.ex:333
#, elixir-format
msgid "Your account is currently disabled" msgid "Your account is currently disabled"
msgstr "您的账户已被禁用" msgstr "您的账户已被禁用"
#, elixir-format
#: lib/pleroma/web/o_auth/o_auth_controller.ex:205 #: lib/pleroma/web/o_auth/o_auth_controller.ex:205
#: lib/pleroma/web/o_auth/o_auth_controller.ex:356 #: lib/pleroma/web/o_auth/o_auth_controller.ex:356
#, elixir-format
msgid "Your login is missing a confirmed e-mail address" msgid "Your login is missing a confirmed e-mail address"
msgstr "您的账户缺少已认证的 e-mail 地址" msgstr "您的账户缺少已认证的 e-mail 地址"
#, elixir-format
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:392 #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:392
#, elixir-format
msgid "can't read inbox of %{nickname} as %{as_nickname}" msgid "can't read inbox of %{nickname} as %{as_nickname}"
msgstr "无法以 %{as_nickname} 读取 %{nickname} 的收件箱" msgstr "无法以 %{as_nickname} 读取 %{nickname} 的收件箱"
#, elixir-format
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:491 #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:491
#, elixir-format
msgid "can't update outbox of %{nickname} as %{as_nickname}" msgid "can't update outbox of %{nickname} as %{as_nickname}"
msgstr "无法以 %{as_nickname} 更新 %{nickname} 的出件箱" msgstr "无法以 %{as_nickname} 更新 %{nickname} 的出件箱"
#, elixir-format
#: lib/pleroma/web/common_api.ex:475 #: lib/pleroma/web/common_api.ex:475
#, elixir-format
msgid "conversation is already muted" msgid "conversation is already muted"
msgstr "对话已经被静音" msgstr "对话已经被静音"
#, elixir-format
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:510 #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:510
#, elixir-format
msgid "error" msgid "error"
msgstr "错误" msgstr "错误"
#, elixir-format
#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:34 #: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:34
#, elixir-format
msgid "mascots can only be images" msgid "mascots can only be images"
msgstr "吉祥物只能是图片" msgstr "吉祥物只能是图片"
#, elixir-format
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:63 #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:63
#, elixir-format
msgid "not found" msgid "not found"
msgstr "未找到" msgstr "未找到"
#, elixir-format
#: lib/pleroma/web/o_auth/o_auth_controller.ex:437 #: lib/pleroma/web/o_auth/o_auth_controller.ex:437
#, elixir-format
msgid "Bad OAuth request." msgid "Bad OAuth request."
msgstr "错误的 OAuth 请求。" msgstr "错误的 OAuth 请求。"
#, elixir-format
#: lib/pleroma/web/twitter_api/twitter_api.ex:108 #: lib/pleroma/web/twitter_api/twitter_api.ex:108
#, elixir-format
msgid "CAPTCHA already used" msgid "CAPTCHA already used"
msgstr "验证码已被使用" msgstr "验证码已被使用"
#, elixir-format
#: lib/pleroma/web/twitter_api/twitter_api.ex:105 #: lib/pleroma/web/twitter_api/twitter_api.ex:105
#, elixir-format
msgid "CAPTCHA expired" msgid "CAPTCHA expired"
msgstr "验证码已过期" msgstr "验证码已过期"
#, elixir-format
#: lib/pleroma/web/plugs/uploaded_media.ex:57 #: lib/pleroma/web/plugs/uploaded_media.ex:57
#, elixir-format
msgid "Failed" msgid "Failed"
msgstr "失败" msgstr "失败"
#, elixir-format, fuzzy
#: lib/pleroma/web/o_auth/o_auth_controller.ex:453 #: lib/pleroma/web/o_auth/o_auth_controller.ex:453
msgid "Failed to authenticate: %{message}."
msgstr "认证失败:%{message}。"
#, elixir-format #, elixir-format
msgid "Failed to authenticate: %{message}."
msgstr "鉴权失败:%{message}。"
#: lib/pleroma/web/o_auth/o_auth_controller.ex:484 #: lib/pleroma/web/o_auth/o_auth_controller.ex:484
#, elixir-format
msgid "Failed to set up user account." msgid "Failed to set up user account."
msgstr "建立用户帐号失败。" msgstr "建立用户帐号失败。"
#, elixir-format
#: lib/pleroma/web/plugs/o_auth_scopes_plug.ex:37 #: lib/pleroma/web/plugs/o_auth_scopes_plug.ex:37
#, elixir-format
msgid "Insufficient permissions: %{permissions}." msgid "Insufficient permissions: %{permissions}."
msgstr "权限不足:%{permissions}。" msgstr "权限不足:%{permissions}。"
#, elixir-format
#: lib/pleroma/web/plugs/uploaded_media.ex:111 #: lib/pleroma/web/plugs/uploaded_media.ex:111
#, elixir-format
msgid "Internal Error" msgid "Internal Error"
msgstr "内部错误" msgstr "内部错误"
#, 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-format
msgid "Invalid Username/Password" msgid "Invalid Username/Password"
msgstr "无效的用户名/密码" msgstr "无效的用户名/密码"
#, elixir-format, fuzzy
#: lib/pleroma/web/twitter_api/twitter_api.ex:111 #: lib/pleroma/web/twitter_api/twitter_api.ex:111
#, elixir-format
msgid "Invalid answer data" msgid "Invalid answer data"
msgstr "无效的回答数据" msgstr "无效的回答数据"
#, elixir-format
#: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:33 #: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:33
#, elixir-format, fuzzy
msgid "Nodeinfo schema version not handled" msgid "Nodeinfo schema version not handled"
msgstr "" msgstr "Nodeinfo schema 版本没被处理"
#, elixir-format
#: lib/pleroma/web/o_auth/o_auth_controller.ex:194 #: lib/pleroma/web/o_auth/o_auth_controller.ex:194
#, elixir-format
msgid "This action is outside the authorized scopes" msgid "This action is outside the authorized scopes"
msgstr "此操作在许可范围以外" msgstr "此操作在许可范围以外"
#, elixir-format
#: lib/pleroma/web/o_auth/fallback_controller.ex:14 #: lib/pleroma/web/o_auth/fallback_controller.ex:14
#, elixir-format
msgid "Unknown error, please check the details and try again." msgid "Unknown error, please check the details and try again."
msgstr "未知错误,请检查并重试。" msgstr "未知错误,请检查并重试。"
#, elixir-format
#: lib/pleroma/web/o_auth/o_auth_controller.ex:136 #: lib/pleroma/web/o_auth/o_auth_controller.ex:136
#: lib/pleroma/web/o_auth/o_auth_controller.ex:180 #: lib/pleroma/web/o_auth/o_auth_controller.ex:180
msgid "Unlisted redirect_uri."
msgstr ""
#, elixir-format #, elixir-format
msgid "Unlisted redirect_uri."
msgstr "没被列出的重定向 URIredirect_uri。"
#: lib/pleroma/web/o_auth/o_auth_controller.ex:433 #: lib/pleroma/web/o_auth/o_auth_controller.ex:433
#, elixir-format
msgid "Unsupported OAuth provider: %{provider}." msgid "Unsupported OAuth provider: %{provider}."
msgstr "不支持的 OAuth 提供者:%{provider}。" msgstr "不支持的 OAuth 提供者:%{provider}。"
#, elixir-format, fuzzy
#: lib/pleroma/uploaders/uploader.ex:74 #: lib/pleroma/uploaders/uploader.ex:74
msgid "Uploader callback timeout"
msgstr "上传回复超时"
#, elixir-format #, elixir-format
msgid "Uploader callback timeout"
msgstr "上传器回调超时"
#: lib/pleroma/web/uploader_controller.ex:23 #: lib/pleroma/web/uploader_controller.ex:23
#, elixir-format
msgid "bad request" msgid "bad request"
msgstr "错误的请求" msgstr "错误的请求"
#, elixir-format
#: lib/pleroma/web/twitter_api/twitter_api.ex:96 #: lib/pleroma/web/twitter_api/twitter_api.ex:96
#, elixir-format
msgid "CAPTCHA Error" msgid "CAPTCHA Error"
msgstr "验证码错误" msgstr "验证码错误"
#, elixir-format, fuzzy
#: lib/pleroma/web/common_api.ex:266 #: lib/pleroma/web/common_api.ex:266
#, elixir-format
msgid "Could not add reaction emoji" msgid "Could not add reaction emoji"
msgstr "无法添加表情反应" msgstr "无法添加表情反应"
#, elixir-format
#: lib/pleroma/web/common_api.ex:277 #: lib/pleroma/web/common_api.ex:277
#, elixir-format
msgid "Could not remove reaction emoji" msgid "Could not remove reaction emoji"
msgstr "无法移除表情反应" msgstr "无法移除表情反应"
#, elixir-format
#: lib/pleroma/web/twitter_api/twitter_api.ex:122 #: lib/pleroma/web/twitter_api/twitter_api.ex:122
#, elixir-format
msgid "Invalid CAPTCHA (Missing parameter: %{name})" msgid "Invalid CAPTCHA (Missing parameter: %{name})"
msgstr "无效的验证码(缺少参数:%{name}" msgstr "无效的验证码(缺少参数:%{name}"
#, elixir-format
#: lib/pleroma/web/mastodon_api/controllers/list_controller.ex:96 #: lib/pleroma/web/mastodon_api/controllers/list_controller.ex:96
#, elixir-format
msgid "List not found" msgid "List not found"
msgstr "未找到列表" msgstr "未找到列表"
#, elixir-format
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:151 #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:151
#, elixir-format
msgid "Missing parameter: %{name}" msgid "Missing parameter: %{name}"
msgstr "缺少参数:%{name}" msgstr "缺少参数:%{name}"
#, elixir-format
#: lib/pleroma/web/o_auth/o_auth_controller.ex:232 #: lib/pleroma/web/o_auth/o_auth_controller.ex:232
#: lib/pleroma/web/o_auth/o_auth_controller.ex:346 #: lib/pleroma/web/o_auth/o_auth_controller.ex:346
#, elixir-format
msgid "Password reset is required" msgid "Password reset is required"
msgstr "需要重置密码" msgstr "需要重置密码"
#, 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
@ -540,78 +539,79 @@ 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-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 "安全违例OAuth 域检查既没处理也没显式跳过。"
#, elixir-format, fuzzy
#: lib/pleroma/web/plugs/ensure_authenticated_plug.ex:32 #: lib/pleroma/web/plugs/ensure_authenticated_plug.ex:32
#, 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-format, fuzzy
#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:61 #: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:61
#, elixir-format
msgid "Web push subscription is disabled on this Pleroma instance" msgid "Web push subscription is disabled on this Pleroma instance"
msgstr "此 Pleroma 实例禁用了网页推送订阅" msgstr "此 Pleroma 实例禁用了网页推送订阅"
#, elixir-format
#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:234 #: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:234
#, elixir-format
msgid "You can't revoke your own admin/moderator status." msgid "You can't revoke your own admin/moderator status."
msgstr "您不能撤消自己的管理员权限。" msgstr "您不能撤消自己的管理员权限。"
#, elixir-format
#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:129 #: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:129
#, elixir-format
msgid "authorization required for timeline view" msgid "authorization required for timeline view"
msgstr "浏览时间线需要认证" msgstr "浏览时间线需要认证"
#, elixir-format
#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:24 #: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:24
#, elixir-format
msgid "Access denied" msgid "Access denied"
msgstr "拒绝访问" msgstr "拒绝访问"
#, elixir-format
#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:321 #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:321
#, elixir-format
msgid "This API requires an authenticated user" msgid "This API requires an authenticated user"
msgstr "此 API 需要已认证的用户" msgstr "此 API 需要已认证的用户"
#, 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-format
msgid "User is not an admin." msgid "User is not an admin."
msgstr "该用户不是管理员。" msgstr "该用户不是管理员。"
#, elixir-format
#: lib/pleroma/user/backup.ex:75 #: lib/pleroma/user/backup.ex:75
#, elixir-format
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] "上次导出还不到 %{days} 天前"
#, elixir-format
#: lib/pleroma/user/backup.ex:93 #: lib/pleroma/user/backup.ex:93
#, elixir-format
msgid "Backups require enabled email" msgid "Backups require enabled email"
msgstr "" msgstr "备份要求开启邮件"
#, elixir-format
#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:423 #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:423
msgid "Character limit (%{limit} characters) exceeded, contains %{length} characters"
msgstr ""
#, elixir-format #, elixir-format
msgid "Character limit (%{limit} characters) exceeded, contains %{length} characters"
msgstr "超过字符限制(%{limit} 个字符),包含了 %{length} 个字符"
#: lib/pleroma/user/backup.ex:98 #: lib/pleroma/user/backup.ex:98
#, elixir-format
msgid "Email is required" msgid "Email is required"
msgstr "" msgstr "需要邮箱"
#, elixir-format, fuzzy
#: lib/pleroma/web/common_api/utils.ex:507 #: lib/pleroma/web/common_api/utils.ex:507
#, elixir-format
msgid "Too many attachments" msgid "Too many attachments"
msgstr "太多选项" msgstr "太多附件"
#, elixir-format, fuzzy
#: 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
msgid "User is not a staff member."
msgstr "该用户不是管理员。"
#, elixir-format #, elixir-format
msgid "User is not a staff member."
msgstr "该用户不是运营成员。"
#: lib/pleroma/web/o_auth/o_auth_controller.ex:366 #: lib/pleroma/web/o_auth/o_auth_controller.ex:366
#, elixir-format
msgid "Your account is awaiting approval." msgid "Your account is awaiting approval."
msgstr "" msgstr "你的账号正等待批准。"

View File

@ -8,107 +8,114 @@
## to merge POT files into PO files. ## to merge POT files into PO files.
msgid "" msgid ""
msgstr "" msgstr ""
"PO-Revision-Date: 2022-07-22 19:00+0000\n"
"Last-Translator: Yating Zhan <thestrandedvalley@protonmail.com>\n"
"Language-Team: Chinese (Simplified) <http://weblate.pleroma-dev.ebin.club/"
"projects/pleroma/pleroma-backend-domain-posix_errors/zh_Hans/>\n"
"Language: zh_Hans\n" "Language: zh_Hans\n"
"Plural-Forms: nplurals=1\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.13.1\n"
msgid "eperm" msgid "eperm"
msgstr "" msgstr "不允许的操作"
msgid "eacces" msgid "eacces"
msgstr "" msgstr "权限不够"
msgid "eagain" msgid "eagain"
msgstr "" msgstr "资源暂时不可用"
msgid "ebadf" msgid "ebadf"
msgstr "" msgstr "坏的文件描述符"
msgid "ebadmsg" msgid "ebadmsg"
msgstr "" msgstr "坏讯息"
msgid "ebusy" msgid "ebusy"
msgstr "" msgstr "设备或资源忙"
msgid "edeadlk" msgid "edeadlk"
msgstr "" msgstr "避免了资源死锁"
msgid "edeadlock" msgid "edeadlock"
msgstr "" msgstr "避免了资源死锁"
msgid "edquot" msgid "edquot"
msgstr "" msgstr "超出了磁盘配额"
msgid "eexist" msgid "eexist"
msgstr "" msgstr "文件存在"
msgid "efault" msgid "efault"
msgstr "" msgstr "坏地址"
msgid "efbig" msgid "efbig"
msgstr "" msgstr "文件太大"
msgid "eftype" msgid "eftype"
msgstr "" msgstr "不合适的文件类型或格式"
msgid "eintr" msgid "eintr"
msgstr "" msgstr "系统调用被中断"
msgid "einval" msgid "einval"
msgstr "" msgstr "不合法的参数"
msgid "eio" msgid "eio"
msgstr "" msgstr "输入/输出错误"
msgid "eisdir" msgid "eisdir"
msgstr "" msgstr "在目录上非法操作"
msgid "eloop" msgid "eloop"
msgstr "" msgstr "太多层符号链接"
msgid "emfile" msgid "emfile"
msgstr "" msgstr "太多打开的文件"
msgid "emlink" msgid "emlink"
msgstr "" msgstr "太多链接"
msgid "emultihop" msgid "emultihop"
msgstr "" msgstr ""
msgid "enametoolong" msgid "enametoolong"
msgstr "" msgstr "文件名太长"
msgid "enfile" msgid "enfile"
msgstr "" msgstr "系统里太多打开的文件"
msgid "enobufs" msgid "enobufs"
msgstr "" msgstr "没有可用的缓冲空间"
msgid "enodev" msgid "enodev"
msgstr "" msgstr "没这设备"
msgid "enolck" msgid "enolck"
msgstr "" msgstr "没有可用的锁"
msgid "enolink" msgid "enolink"
msgstr "" msgstr "链接被切断了"
msgid "enoent" msgid "enoent"
msgstr "" msgstr "没这文件或目录"
msgid "enomem" msgid "enomem"
msgstr "" msgstr "不能分配内存"
msgid "enospc" msgid "enospc"
msgstr "" msgstr "设备上没剩余空间"
msgid "enosr" msgid "enosr"
msgstr "" msgstr ""
msgid "enostr" msgid "enostr"
msgstr "" msgstr "设备不是流"
msgid "enosys" msgid "enosys"
msgstr "" msgstr "功能没实现"
msgid "enotblk" msgid "enotblk"
msgstr "" msgstr ""
@ -117,16 +124,16 @@ msgid "enotdir"
msgstr "" msgstr ""
msgid "enotsup" msgid "enotsup"
msgstr "" msgstr "不受支持的操作"
msgid "enxio" msgid "enxio"
msgstr "" msgstr "该设备或路径不存在"
msgid "eopnotsupp" msgid "eopnotsupp"
msgstr "" msgstr "不受支持的操作"
msgid "eoverflow" msgid "eoverflow"
msgstr "" msgstr "请为给定类型的数据指定较小的数值"
msgid "epipe" msgid "epipe"
msgstr "" msgstr ""
@ -135,19 +142,19 @@ msgid "erange"
msgstr "" msgstr ""
msgid "erofs" msgid "erofs"
msgstr "" msgstr "只读权限文件系统"
msgid "espipe" msgid "espipe"
msgstr "" msgstr ""
msgid "esrch" msgid "esrch"
msgstr "" msgstr "具体进程不存在"
msgid "estale" msgid "estale"
msgstr "" msgstr ""
msgid "etxtbsy" msgid "etxtbsy"
msgstr "" msgstr "文本文件忙碌"
msgid "exdev" msgid "exdev"
msgstr "" msgstr "该多设备链接不可用"

View File

@ -2,459 +2,464 @@
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2022-04-07 17:40-0400\n" "PO-Revision-Date: 2022-07-21 23:35+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: tusooa <tusooa@kazv.moe>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: Chinese (Simplified) <http://weblate.pleroma-dev.ebin.club/"
"projects/pleroma/pleroma-backend-domain-static_pages/zh_Hans/>\n"
"Language: zh_Hans\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.13.1\n"
#~ ## "msgid"s in this file come from POT (.pot) files. ## "msgid"s in this file come from POT (.pot) files.
#~ ## ##
#~ ## Do not add, change, or remove "msgid"s manually here as ## Do not add, change, or remove "msgid"s manually here as
#~ ## they're tied to the ones in the corresponding POT file ## they're tied to the ones in the corresponding POT file
#~ ## (with the same domain). ## (with the same domain).
#~ ## ##
#~ ## Use "mix gettext.extract --merge" or "mix gettext.merge" ## Use "mix gettext.extract --merge" or "mix gettext.merge"
#~ ## to merge POT files into PO files. ## to merge POT files into PO files.
#~ msgid "" #~ msgid ""
#~ msgstr "" #~ msgstr ""
#~ "Language: zh_Hans\n" #~ "Language: zh_Hans\n"
#~ "Plural-Forms: nplurals=1\n" #~ "Plural-Forms: nplurals=1\n"
#, 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-format
msgctxt "remote follow authorization button" msgctxt "remote follow authorization button"
msgid "Authorize" msgid "Authorize"
msgstr "授权" msgstr "授权"
#, 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-format
msgctxt "remote follow error" msgctxt "remote follow error"
msgid "Error fetching user" msgid "Error fetching user"
msgstr "获取用户时出错" msgstr "获取用户时出错"
#, 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-format
msgctxt "remote follow header" msgctxt "remote follow header"
msgid "Remote follow" msgid "Remote follow"
msgstr "远程关注" msgstr "远程关注"
#, 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-format
msgctxt "placeholder text for auth code entry" msgctxt "placeholder text for auth code entry"
msgid "Authentication code" msgid "Authentication code"
msgstr "授权代码" msgstr "授权代码"
#, 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-format
msgctxt "placeholder text for password entry" msgctxt "placeholder text for password entry"
msgid "Password" msgid "Password"
msgstr "密码" msgstr "密码"
#, 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-format
msgctxt "placeholder text for username entry" msgctxt "placeholder text for username entry"
msgid "Username" msgid "Username"
msgstr "用户名" msgstr "用户名"
#, 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-format
msgctxt "remote follow authorization button for login" msgctxt "remote follow authorization button for login"
msgid "Authorize" msgid "Authorize"
msgstr "授权" msgstr "授权"
#, 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-format
msgctxt "remote follow authorization button for mfa" msgctxt "remote follow authorization button for mfa"
msgid "Authorize" msgid "Authorize"
msgstr "授权" msgstr "授权"
#, 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-format
msgctxt "remote follow error" msgctxt "remote follow error"
msgid "Error following account" msgid "Error following account"
msgstr "关注用户时出错" msgstr "关注用户时出错"
#, 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-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-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-format
msgctxt "remote follow mfa header" msgctxt "remote follow mfa header"
msgid "Two-factor authentication" msgid "Two-factor authentication"
msgstr "两步鉴权" msgstr "两步鉴权"
#, 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-format
msgctxt "remote follow success" msgctxt "remote follow success"
msgid "Account followed!" msgid "Account followed!"
msgstr "已经关注了账号!" msgstr "已经关注了账号!"
#, elixir-format
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:7 #: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:7
#, 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 "你的账户 ID如 lain@quitter.se" msgstr "你的账户 ID如 lain@quitter.se"
#, 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-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-format
#: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:2 #: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:2
#, elixir-format
msgctxt "remote follow error" msgctxt "remote follow error"
msgid "Error: %{error}" msgid "Error: %{error}"
msgstr "错误:%{error}" msgstr "错误:%{error}"
#, 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-format
msgctxt "remote follow header" msgctxt "remote follow header"
msgid "Remotely follow %{nickname}" msgid "Remotely follow %{nickname}"
msgstr "远程关注 %{nickname}" msgstr "远程关注 %{nickname}"
#, 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-format
msgctxt "password reset button" msgctxt "password reset button"
msgid "Reset" msgid "Reset"
msgstr "重置" msgstr "重置"
#, 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-format
msgctxt "password reset failed homepage link" msgctxt "password reset failed homepage link"
msgid "Homepage" msgid "Homepage"
msgstr "回主页" msgstr "回主页"
#, 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-format
msgctxt "password reset failed message" msgctxt "password reset failed message"
msgid "Password reset failed" msgid "Password reset failed"
msgstr "密码重置失败" msgstr "密码重置失败"
#, 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-format
msgctxt "password reset form confirm password prompt" msgctxt "password reset form confirm password prompt"
msgid "Confirmation" msgid "Confirmation"
msgstr "确认密码" msgstr "确认密码"
#, 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-format
msgctxt "password reset form password prompt" msgctxt "password reset form password prompt"
msgid "Password" msgid "Password"
msgstr "密码" msgstr "密码"
#, 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-format
msgctxt "password reset invalid token message" msgctxt "password reset invalid token message"
msgid "Invalid Token" msgid "Invalid Token"
msgstr "无效的令牌" msgstr "无效的令牌"
#, 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-format
msgctxt "password reset successful homepage link" msgctxt "password reset successful homepage link"
msgid "Homepage" msgid "Homepage"
msgstr "回主页" msgstr "回主页"
#, 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-format
msgctxt "password reset successful message" msgctxt "password reset successful message"
msgid "Password changed!" msgid "Password changed!"
msgstr "密码已经修改了!" msgstr "密码已经修改了!"
#, 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-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 "这些是标了 #%{tag} 签的公开文章。你要是在联邦宇宙的任何地方有账号,就能和它们互动。" msgstr "这些是标了 #%{tag} 签的公开文章。你要是在联邦宇宙的任何地方有账号,就能和它们互动。"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex:1 #: lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex:1
#, elixir-format
msgctxt "oauth authorization exists page title" msgctxt "oauth authorization exists page title"
msgid "Authorization exists" msgid "Authorization exists"
msgstr "授权已经存在" msgstr "授权已经存在"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:32 #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:32
#, elixir-format
msgctxt "oauth authorize approve button" msgctxt "oauth authorize approve button"
msgid "Approve" msgid "Approve"
msgstr "批准" msgstr "批准"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:30 #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:30
#, elixir-format
msgctxt "oauth authorize cancel button" msgctxt "oauth authorize cancel button"
msgid "Cancel" msgid "Cancel"
msgstr "取消" msgstr "取消"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:23 #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:23
#, elixir-format
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 "应用程序 <strong>%{client_name}</strong> 在请求访问你的账号。" msgstr "应用程序 <strong>%{client_name}</strong> 在请求访问你的账号。"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex:1 #: lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex:1
#, elixir-format
msgctxt "oauth authorized page title" msgctxt "oauth authorized page title"
msgid "Successfully authorized" msgid "Successfully authorized"
msgstr "成功授权" msgstr "成功授权"
#, 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-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-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-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 "通过 %{strategy} 登录" msgstr "通过 %{strategy} 登录"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:54 #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:54
#, elixir-format
msgctxt "oauth login button" msgctxt "oauth login button"
msgid "Log In" msgid "Log In"
msgstr "登录" msgstr "登录"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:51 #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:51
#, elixir-format
msgctxt "oauth login password prompt" msgctxt "oauth login password prompt"
msgid "Password" msgid "Password"
msgstr "密码" msgstr "密码"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:47 #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:47
#, elixir-format
msgctxt "oauth login username prompt" msgctxt "oauth login username prompt"
msgid "Username" msgid "Username"
msgstr "用户名" msgstr "用户名"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:39 #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:39
#, elixir-format
msgctxt "oauth register nickname prompt" msgctxt "oauth register nickname prompt"
msgid "Pleroma Handle" msgid "Pleroma Handle"
msgstr "Pleroma 用户名" msgstr "Pleroma 用户名"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:37 #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:37
#, elixir-format
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-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-format
msgctxt "oauth register page email prompt" msgctxt "oauth register page email prompt"
msgid "Email" msgid "Email"
msgstr "邮箱" msgstr "邮箱"
#, 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-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-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-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-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-format
msgctxt "oauth register page login password prompt" msgctxt "oauth register page login password prompt"
msgid "Password" msgid "Password"
msgstr "密码" msgstr "密码"
#, 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-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-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-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-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-format
msgctxt "oauth register page nickname prompt" msgctxt "oauth register page nickname prompt"
msgid "Nickname" msgid "Nickname"
msgstr "昵称" msgstr "昵称"
#, 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-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-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-format
msgctxt "oauth register page title" msgctxt "oauth register page title"
msgid "Registration Details" msgid "Registration Details"
msgstr "注册详情" msgstr "注册详情"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:36 #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:36
#, elixir-format
msgctxt "oauth register page title" msgctxt "oauth register page title"
msgid "This is the first time you visit! Please enter your Pleroma handle." msgid "This is the first time you visit! Please enter your Pleroma handle."
msgstr "这是你第一次访问。请输入 Pleroma 用户名。" msgstr "这是你第一次访问。请输入 Pleroma 用户名。"
#, 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-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 "将要允许如下权限"
#, 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_authorization_created.html.eex:2
#: lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex:2 #: lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex:2
#, elixir-format
msgctxt "oauth token code message" msgctxt "oauth token code message"
msgid "Token code is <br>%{token}" msgid "Token code is <br>%{token}"
msgstr "令牌代码是<br>%{token}" msgstr "令牌代码是<br>%{token}"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:12 #: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:12
#, elixir-format
msgctxt "mfa auth code prompt" msgctxt "mfa auth code prompt"
msgid "Authentication code" msgid "Authentication code"
msgstr "鉴权代码" msgstr "鉴权代码"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:8 #: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:8
#, elixir-format
msgctxt "mfa auth page title" msgctxt "mfa auth page title"
msgid "Two-factor authentication" msgid "Two-factor authentication"
msgstr "两步鉴权" msgstr "两步鉴权"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:23 #: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:23
#, elixir-format
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 "输入两步恢复码"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:20 #: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:20
#, elixir-format
msgctxt "mfa auth verify code button" msgctxt "mfa auth verify code button"
msgid "Verify" msgid "Verify"
msgstr "验证" msgstr "验证"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:8 #: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:8
#, elixir-format
msgctxt "mfa recover page title" msgctxt "mfa recover page title"
msgid "Two-factor recovery" msgid "Two-factor recovery"
msgstr "两步恢复" msgstr "两步恢复"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:12 #: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:12
#, elixir-format
msgctxt "mfa recover recovery code prompt" msgctxt "mfa recover recovery code prompt"
msgid "Recovery code" msgid "Recovery code"
msgstr "恢复码" msgstr "恢复码"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:23 #: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:23
#, elixir-format
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 "输入鉴权码"
#, elixir-format
#: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:20 #: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:20
#, elixir-format
msgctxt "mfa recover verify recovery code button" msgctxt "mfa recover verify recovery code button"
msgid "Verify" msgid "Verify"
msgstr "验证" msgstr "验证"
#, elixir-format
#: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:8 #: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:8
#, elixir-format
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-format
#: lib/pleroma/web/templates/email/digest.html.eex:163 #: lib/pleroma/web/templates/email/digest.html.eex:163
#, 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 "早 %{nickname},你刚错过这些!" msgstr "早 %{nickname},你刚错过这些!"
#, elixir-format
#: lib/pleroma/web/templates/email/digest.html.eex:544 #: lib/pleroma/web/templates/email/digest.html.eex:544
#, 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 "你订阅的邮箱地址是 <a href='mailto:%{@user.email}' style='color: %{color};text-decoration: none;'>%{email}</a>。" msgstr ""
"你订阅的邮箱地址是 <a href='mailto:%{@user.email}' style='color: %{color"
"};text-decoration: none;'>%{email}</a>。 "
#, elixir-format
#: lib/pleroma/web/templates/email/digest.html.eex:538 #: lib/pleroma/web/templates/email/digest.html.eex:538
#, 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 "因为你选择了收取来自 <b>%{instance}</b> 的摘要邮件,所以你会收到这封邮件。" msgstr "因为你选择了收取来自 <b>%{instance}</b> 的摘要邮件,所以你会收到这封邮件。"
#, elixir-format
#: lib/pleroma/web/templates/email/digest.html.eex:547 #: lib/pleroma/web/templates/email/digest.html.eex:547
#, 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 "要取消订阅,请去%{here}" msgstr "要取消订阅,请去%{here}"
#, elixir-format
#: lib/pleroma/web/templates/email/digest.html.eex:547 #: lib/pleroma/web/templates/email/digest.html.eex:547
#, elixir-format
msgctxt "digest email unsubscribe action link text" msgctxt "digest email unsubscribe action link text"
msgid "here" msgid "here"
msgstr "此处" msgstr "此处"
#, 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-format
msgctxt "mailer unsubscribe failed message" msgctxt "mailer unsubscribe failed message"
msgid "UNSUBSCRIBE FAILURE" msgid "UNSUBSCRIBE FAILURE"
msgstr "取消订阅失败" msgstr "取消订阅失败"
#, 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-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] "%{count} 个新关注者" msgstr[0] "%{count} 个新关注者"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:356 #: lib/pleroma/emails/user_email.ex:356
#, elixir-format
msgctxt "account archive email body - self-requested" 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" 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 "" msgstr ""
"<p>你之前要了一份你的 Pleroma 账号的完整备份。现在可以下载了:</p>\n" "<p>你之前要了一份你的 Pleroma 账号的完整备份。现在可以下载了:</p>\n"
"<p><a href=\"%{download_url}\">%{download_url}</a></p>\n" "<p><a href=\"%{download_url}\">%{download_url}</a></p>\n"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:384 #: lib/pleroma/emails/user_email.ex:384
#, 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-format
#: lib/pleroma/emails/user_email.ex:188 #: lib/pleroma/emails/user_email.ex:188
#, 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 ""
"<h3>等待批准</h3>\n" "<h3>等待批准</h3>\n"
"<p>管理人员正在审核你在 %{instance_name} 的账号。等账号批准之后你会收到另一封邮件。</p>\n" "<p>管理人员正在审核你在 %{instance_name} 的账号。等账号批准之后你会收到另一封邮件。</p>\n"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:202 #: lib/pleroma/emails/user_email.ex:202
#, 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-format
#: lib/pleroma/emails/user_email.ex:158 #: lib/pleroma/emails/user_email.ex:158
#, 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 ""
@ -462,20 +467,20 @@ msgstr ""
"<p>要激活账号,必须验证邮箱。</p>\n" "<p>要激活账号,必须验证邮箱。</p>\n"
"<p>请点如下链接来<a href=\"%{confirmation_url}\">激活账号</a>。</p>\n" "<p>请点如下链接来<a href=\"%{confirmation_url}\">激活账号</a>。</p>\n"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:174 #: lib/pleroma/emails/user_email.ex:174
#, elixir-format
msgctxt "confirmation email subject" msgctxt "confirmation email subject"
msgid "%{instance_name} account confirmation" msgid "%{instance_name} account confirmation"
msgstr "%{instance_name} 账号激活" msgstr "%{instance_name} 账号激活"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:310 #: lib/pleroma/emails/user_email.ex:310
#, elixir-format
msgctxt "digest email subject" msgctxt "digest email subject"
msgid "Your digest from %{instance_name}" msgid "Your digest from %{instance_name}"
msgstr "来自 %{instance_name} 的摘要" msgstr "来自 %{instance_name} 的摘要"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:81 #: lib/pleroma/emails/user_email.ex:81
#, 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 ""
@ -484,14 +489,14 @@ msgstr ""
"<p>如果那是你,访问如下链接以继续:<a href=\"%{password_reset_url}\">重置密码</a>。</p>\n" "<p>如果那是你,访问如下链接以继续:<a href=\"%{password_reset_url}\">重置密码</a>。</p>\n"
"<p>如果是别人,不必担心:你的数据很安全,密码也没变。</p>\n" "<p>如果是别人,不必担心:你的数据很安全,密码也没变。</p>\n"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:98 #: lib/pleroma/emails/user_email.ex:98
#, elixir-format
msgctxt "password reset email subject" msgctxt "password reset email subject"
msgid "Password reset" msgid "Password reset"
msgstr "密码重置" msgstr "密码重置"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:215 #: lib/pleroma/emails/user_email.ex:215
#, 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 ""
@ -499,14 +504,14 @@ msgstr ""
"<p>你在 %{instance_name} 上的账号已经成功注册了。</p>\n" "<p>你在 %{instance_name} 上的账号已经成功注册了。</p>\n"
"<p>你的账号已经激活,无需再做任何操作。</p>\n" "<p>你的账号已经激活,无需再做任何操作。</p>\n"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:231 #: lib/pleroma/emails/user_email.ex:231
#, 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 "在 %{instance_name} 上注册了账号" msgstr "在 %{instance_name} 上注册了账号"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:119 #: lib/pleroma/emails/user_email.ex:119
#, elixir-format
msgctxt "user invitation email body" 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" 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 "" msgstr ""
@ -514,32 +519,32 @@ msgstr ""
"<p>%{inviter_name} 邀请你去 %{instance_name}。这是社交网络平台 Pleroma 的一个实例。</p>\n" "<p>%{inviter_name} 邀请你去 %{instance_name}。这是社交网络平台 Pleroma 的一个实例。</p>\n"
"<p>点如下链接以注册:<a href=\"%{registration_url}\">接受邀请</a>。</p>\n" "<p>点如下链接以注册:<a href=\"%{registration_url}\">接受邀请</a>。</p>\n"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:136 #: lib/pleroma/emails/user_email.ex:136
#, elixir-format
msgctxt "user invitation email subject" msgctxt "user invitation email subject"
msgid "Invitation to %{instance_name}" msgid "Invitation to %{instance_name}"
msgstr "去 %{instance_name} 的邀请" msgstr "去 %{instance_name} 的邀请"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:53 #: lib/pleroma/emails/user_email.ex:53
#, elixir-format
msgctxt "welcome email html body" msgctxt "welcome email html body"
msgid "Welcome to %{instance_name}!" msgid "Welcome to %{instance_name}!"
msgstr "欢迎来到 %{instance_name}" msgstr "欢迎来到 %{instance_name}"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:41 #: lib/pleroma/emails/user_email.ex:41
#, elixir-format
msgctxt "welcome email subject" msgctxt "welcome email subject"
msgid "Welcome to %{instance_name}!" msgid "Welcome to %{instance_name}!"
msgstr "欢迎来到 %{instance_name}" msgstr "欢迎来到 %{instance_name}"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:65 #: lib/pleroma/emails/user_email.ex:65
#, elixir-format
msgctxt "welcome email text body" msgctxt "welcome email text body"
msgid "Welcome to %{instance_name}!" msgid "Welcome to %{instance_name}!"
msgstr "欢迎来到 %{instance_name}" msgstr "欢迎来到 %{instance_name}"
#, elixir-format
#: lib/pleroma/emails/user_email.ex:368 #: lib/pleroma/emails/user_email.ex:368
#, 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 Pleroma account. It's ready for download:</p>\n<p><a href=\"%{download_url}\">%{download_url}</a></p>\n"
msgstr "" msgstr ""

View File

@ -0,0 +1,13 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Repo.Migrations.AddExpiresAtToUserRelationships do
use Ecto.Migration
def change do
alter table(:user_relationships) do
add_if_not_exists(:expires_at, :utc_datetime)
end
end
end

View File

@ -0,0 +1,30 @@
{
"type": "EmojiReact",
"signature": {
"type": "RsaSignature2017",
"signatureValue": "fdxMfQSMwbC6wP6sh6neS/vM5879K67yQkHTbiT5Npr5wAac0y6+o3Ij+41tN3rL6wfuGTosSBTHOtta6R4GCOOhCaCSLMZKypnp1VltCzLDoyrZELnYQIC8gpUXVmIycZbREk22qWUe/w7DAFaKK4UscBlHDzeDVcA0K3Se5Sluqi9/Zh+ldAnEzj/rSEPDjrtvf5wGNf3fHxbKSRKFt90JvKK6hS+vxKUhlRFDf6/SMETw+EhwJSNW4d10yMUakqUWsFv4Acq5LW7l+HpYMvlYY1FZhNde1+uonnCyuQDyvzkff8zwtEJmAXC4RivO/VVLa17SmqheJZfI8oluVg==",
"creator": "http://mastodon.example.org/users/admin#main-key",
"created": "2018-02-17T18:57:49Z"
},
"object": "http://localtesting.pleroma.lol/objects/eb92579d-3417-42a8-8652-2492c2d4f454",
"content": "❤",
"nickname": "lain",
"id": "http://mastodon.example.org/users/admin#reactions/2",
"actor": "http://mastodon.example.org/users/admin",
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"toot": "http://joinmastodon.org/ns#",
"sensitive": "as:sensitive",
"ostatus": "http://ostatus.org#",
"movedTo": "as:movedTo",
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
"inReplyToAtomUri": "ostatus:inReplyToAtomUri",
"conversation": "ostatus:conversation",
"atomUri": "ostatus:atomUri",
"Hashtag": "as:Hashtag",
"Emoji": "toot:Emoji"
}
]
}

View File

@ -0,0 +1,31 @@
{
"attachment": {
"content": "Live stream preview",
"type": "Image",
"url": "https://owncast.localhost.localdomain/preview.gif?us=KjfNX387gm"
},
"attributedTo": "https://owncast.localhost.localdomain/federation/user/streamer",
"audience": "https://www.w3.org/ns/activitystreams#Public",
"content": "<p>I've gone live!</p><p></p><p><a class=\"hashtag\" href=\"https://directory.owncast.online/tags/owncast\">#owncast</a> <a class=\"hashtag\" href=\"https://directory.owncast.online/tags/streaming\">#streaming</a></p><a href=\"https://owncast.localhost.localdomain\">https://owncast.localhost.localdomain</a>",
"id": "https://owncast.localhost.localdomain/federation/KjBNuq8ng",
"published": "2022-04-17T15:42:03Z",
"tag": [
{
"href": "https://directory.owncast.online/tags/owncast",
"name": "#owncast",
"type": "Hashtag"
},
{
"href": "https://directory.owncast.online/tags/streaming",
"name": "#streaming",
"type": "Hashtag"
},
{
"href": "https://directory.owncast.online/tags/owncast",
"name": "#owncast",
"type": "Hashtag"
}
],
"to": "https://www.w3.org/ns/activitystreams#Public",
"type": "Note"
}

View File

@ -43,4 +43,15 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidatorTest
%{valid?: true} = ArticleNotePageValidator.cast_and_validate(note) %{valid?: true} = ArticleNotePageValidator.cast_and_validate(note)
end end
test "a note with an attachment should work", _ do
insert(:user, %{ap_id: "https://owncast.localhost.localdomain/federation/user/streamer"})
note =
"test/fixtures/owncast-note-with-attachment.json"
|> File.read!()
|> Jason.decode!()
%{valid?: true} = ArticleNotePageValidator.cast_and_validate(note)
end
end end

View File

@ -37,6 +37,32 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.EmojiReactHandlingTest do
assert match?([["👌", _]], object.data["reactions"]) assert match?([["👌", _]], object.data["reactions"])
end end
test "it works for incoming unqualified emoji reactions" do
user = insert(:user)
other_user = insert(:user, local: false)
{:ok, activity} = CommonAPI.post(user, %{status: "hello"})
data =
File.read!("test/fixtures/emoji-reaction-unqualified.json")
|> Jason.decode!()
|> Map.put("object", activity.data["object"])
|> Map.put("actor", other_user.ap_id)
{:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
assert data["actor"] == other_user.ap_id
assert data["type"] == "EmojiReact"
assert data["id"] == "http://mastodon.example.org/users/admin#reactions/2"
assert data["object"] == activity.data["object"]
# heart emoji with added emoji variation sequence
assert data["content"] == "\uFE0F"
object = Object.get_by_ap_id(data["object"])
assert object.data["reaction_count"] == 1
assert match?([["\uFE0F", _]], object.data["reactions"])
end
test "it reject invalid emoji reactions" do test "it reject invalid emoji reactions" do
user = insert(:user) user = insert(:user)
other_user = insert(:user, local: false) other_user = insert(:user, local: false)

View File

@ -390,6 +390,20 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do
assert user_data["source"]["pleroma"]["show_birthday"] == true assert user_data["source"]["pleroma"]["show_birthday"] == true
end end
test "unsets birth date", %{conn: conn} do
patch(conn, "/api/v1/accounts/update_credentials", %{
"birthday" => "2001-02-12"
})
res =
patch(conn, "/api/v1/accounts/update_credentials", %{
"birthday" => ""
})
assert user_data = json_response_and_validate_schema(res, 200)
assert user_data["pleroma"]["birthday"] == nil
end
test "emojis in fields labels", %{conn: conn} do test "emojis in fields labels", %{conn: conn} do
fields = [ fields = [
%{"name" => ":firefox:", "value" => "is best 2hu"}, %{"name" => ":firefox:", "value" => "is best 2hu"},

View File

@ -634,4 +634,21 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
|> assert() |> assert()
end end
end end
test "renders mute expiration date" do
user = insert(:user)
other_user = insert(:user)
{:ok, _user_relationships} =
User.mute(user, other_user, %{notifications: true, expires_in: 24 * 60 * 60})
%{
mute_expires_at: mute_expires_at
} = AccountView.render("show.json", %{user: other_user, for: user, mutes: true})
assert DateTime.diff(
mute_expires_at,
DateTime.utc_now() |> DateTime.add(24 * 60 * 60)
) in -3..3
end
end end