mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-12-31 12:28:43 +00:00
Merge remote-tracking branch 'origin/develop' into todo-fixes
This commit is contained in:
commit
b5814dc9b3
13 changed files with 613 additions and 266 deletions
0
changelog.d/docs-fix.skip
Normal file
0
changelog.d/docs-fix.skip
Normal file
1
changelog.d/user-imports.fix
Normal file
1
changelog.d/user-imports.fix
Normal file
|
@ -0,0 +1 @@
|
|||
Imports of blocks, mutes, and follows would retry repeatedly due to incorrect error handling and all work executed in a single job
|
|
@ -433,7 +433,7 @@ Response:
|
|||
* On success: URL of the unfollowed relay
|
||||
|
||||
```json
|
||||
{"https://example.com/relay"}
|
||||
"https://example.com/relay"
|
||||
```
|
||||
|
||||
## `POST /api/v1/pleroma/admin/users/invite_token`
|
||||
|
@ -1193,20 +1193,23 @@ Loads json generated from `config/descriptions.exs`.
|
|||
- Response:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": 1234,
|
||||
"data": {
|
||||
"actor": {
|
||||
"id": 1,
|
||||
"nickname": "lain"
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"id": 1234,
|
||||
"data": {
|
||||
"actor": {
|
||||
"id": 1,
|
||||
"nickname": "lain"
|
||||
},
|
||||
"action": "relay_follow"
|
||||
},
|
||||
"action": "relay_follow"
|
||||
},
|
||||
"time": 1502812026, // timestamp
|
||||
"message": "[2017-08-15 15:47:06] @nick0 followed relay: https://example.org/relay" // log message
|
||||
}
|
||||
]
|
||||
"time": 1502812026, // timestamp
|
||||
"message": "[2017-08-15 15:47:06] @nick0 followed relay: https://example.org/relay" // log message
|
||||
}
|
||||
],
|
||||
"total": 1
|
||||
}
|
||||
```
|
||||
|
||||
## `POST /api/v1/pleroma/admin/reload_emoji`
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
defmodule Pleroma.User.Import do
|
||||
use Ecto.Schema
|
||||
|
||||
alias Pleroma.Repo
|
||||
alias Pleroma.User
|
||||
alias Pleroma.Web.CommonAPI
|
||||
alias Pleroma.Workers.BackgroundWorker
|
||||
|
@ -12,80 +13,99 @@ defmodule Pleroma.User.Import do
|
|||
require Logger
|
||||
|
||||
@spec perform(atom(), User.t(), list()) :: :ok | list() | {:error, any()}
|
||||
def perform(:mutes_import, %User{} = user, [_ | _] = identifiers) do
|
||||
Enum.map(
|
||||
identifiers,
|
||||
fn identifier ->
|
||||
with {:ok, %User{} = muted_user} <- User.get_or_fetch(identifier),
|
||||
{:ok, _} <- User.mute(user, muted_user) do
|
||||
muted_user
|
||||
else
|
||||
error -> handle_error(:mutes_import, identifier, error)
|
||||
end
|
||||
end
|
||||
)
|
||||
def perform(:mute_import, %User{} = user, actor) do
|
||||
with {:ok, %User{} = muted_user} <- User.get_or_fetch(actor),
|
||||
{_, false} <- {:existing_mute, User.mutes_user?(user, muted_user)},
|
||||
{:ok, _} <- User.mute(user, muted_user) do
|
||||
{:ok, muted_user}
|
||||
else
|
||||
{:existing_mute, true} -> :ok
|
||||
error -> handle_error(:mutes_import, actor, error)
|
||||
end
|
||||
end
|
||||
|
||||
def perform(:blocks_import, %User{} = blocker, [_ | _] = identifiers) do
|
||||
Enum.map(
|
||||
identifiers,
|
||||
fn identifier ->
|
||||
with {:ok, %User{} = blocked} <- User.get_or_fetch(identifier),
|
||||
{:ok, _block} <- CommonAPI.block(blocked, blocker) do
|
||||
blocked
|
||||
else
|
||||
error -> handle_error(:blocks_import, identifier, error)
|
||||
end
|
||||
end
|
||||
)
|
||||
def perform(:block_import, %User{} = user, actor) do
|
||||
with {:ok, %User{} = blocked} <- User.get_or_fetch(actor),
|
||||
{_, false} <- {:existing_block, User.blocks_user?(user, blocked)},
|
||||
{:ok, _block} <- CommonAPI.block(blocked, user) do
|
||||
{:ok, blocked}
|
||||
else
|
||||
{:existing_block, true} -> :ok
|
||||
error -> handle_error(:blocks_import, actor, error)
|
||||
end
|
||||
end
|
||||
|
||||
def perform(:follow_import, %User{} = follower, [_ | _] = identifiers) do
|
||||
Enum.map(
|
||||
identifiers,
|
||||
fn identifier ->
|
||||
with {:ok, %User{} = followed} <- User.get_or_fetch(identifier),
|
||||
{:ok, follower, followed} <- User.maybe_direct_follow(follower, followed),
|
||||
{:ok, _, _, _} <- CommonAPI.follow(followed, follower) do
|
||||
followed
|
||||
else
|
||||
error -> handle_error(:follow_import, identifier, error)
|
||||
end
|
||||
end
|
||||
)
|
||||
def perform(:follow_import, %User{} = user, actor) do
|
||||
with {:ok, %User{} = followed} <- User.get_or_fetch(actor),
|
||||
{_, false} <- {:existing_follow, User.following?(user, followed)},
|
||||
{:ok, user, followed} <- User.maybe_direct_follow(user, followed),
|
||||
{:ok, _, _, _} <- CommonAPI.follow(followed, user) do
|
||||
{:ok, followed}
|
||||
else
|
||||
{:existing_follow, true} -> :ok
|
||||
error -> handle_error(:follow_import, actor, error)
|
||||
end
|
||||
end
|
||||
|
||||
def perform(_, _, _), do: :ok
|
||||
|
||||
defp handle_error(op, user_id, error) do
|
||||
Logger.debug("#{op} failed for #{user_id} with: #{inspect(error)}")
|
||||
error
|
||||
end
|
||||
|
||||
def blocks_import(%User{} = blocker, [_ | _] = identifiers) do
|
||||
BackgroundWorker.new(%{
|
||||
"op" => "blocks_import",
|
||||
"user_id" => blocker.id,
|
||||
"identifiers" => identifiers
|
||||
})
|
||||
|> Oban.insert()
|
||||
def blocks_import(%User{} = user, [_ | _] = actors) do
|
||||
jobs =
|
||||
Repo.checkout(fn ->
|
||||
Enum.reduce(actors, [], fn actor, acc ->
|
||||
{:ok, job} =
|
||||
BackgroundWorker.new(%{
|
||||
"op" => "block_import",
|
||||
"user_id" => user.id,
|
||||
"actor" => actor
|
||||
})
|
||||
|> Oban.insert()
|
||||
|
||||
acc ++ [job]
|
||||
end)
|
||||
end)
|
||||
|
||||
{:ok, jobs}
|
||||
end
|
||||
|
||||
def follow_import(%User{} = follower, [_ | _] = identifiers) do
|
||||
BackgroundWorker.new(%{
|
||||
"op" => "follow_import",
|
||||
"user_id" => follower.id,
|
||||
"identifiers" => identifiers
|
||||
})
|
||||
|> Oban.insert()
|
||||
def follows_import(%User{} = user, [_ | _] = actors) do
|
||||
jobs =
|
||||
Repo.checkout(fn ->
|
||||
Enum.reduce(actors, [], fn actor, acc ->
|
||||
{:ok, job} =
|
||||
BackgroundWorker.new(%{
|
||||
"op" => "follow_import",
|
||||
"user_id" => user.id,
|
||||
"actor" => actor
|
||||
})
|
||||
|> Oban.insert()
|
||||
|
||||
acc ++ [job]
|
||||
end)
|
||||
end)
|
||||
|
||||
{:ok, jobs}
|
||||
end
|
||||
|
||||
def mutes_import(%User{} = user, [_ | _] = identifiers) do
|
||||
BackgroundWorker.new(%{
|
||||
"op" => "mutes_import",
|
||||
"user_id" => user.id,
|
||||
"identifiers" => identifiers
|
||||
})
|
||||
|> Oban.insert()
|
||||
def mutes_import(%User{} = user, [_ | _] = actors) do
|
||||
jobs =
|
||||
Repo.checkout(fn ->
|
||||
Enum.reduce(actors, [], fn actor, acc ->
|
||||
{:ok, job} =
|
||||
BackgroundWorker.new(%{
|
||||
"op" => "mute_import",
|
||||
"user_id" => user.id,
|
||||
"actor" => actor
|
||||
})
|
||||
|> Oban.insert()
|
||||
|
||||
acc ++ [job]
|
||||
end)
|
||||
end)
|
||||
|
||||
{:ok, jobs}
|
||||
end
|
||||
end
|
||||
|
|
|
@ -38,8 +38,8 @@ defmodule Pleroma.Web.PleromaAPI.UserImportController do
|
|||
|> Enum.map(&(&1 |> String.trim() |> String.trim_leading("@")))
|
||||
|> Enum.reject(&(&1 == ""))
|
||||
|
||||
User.Import.follow_import(follower, identifiers)
|
||||
json(conn, "job started")
|
||||
User.Import.follows_import(follower, identifiers)
|
||||
json(conn, "jobs started")
|
||||
end
|
||||
|
||||
def blocks(
|
||||
|
@ -55,7 +55,7 @@ defmodule Pleroma.Web.PleromaAPI.UserImportController do
|
|||
|
||||
defp do_block(%{assigns: %{user: blocker}} = conn, list) do
|
||||
User.Import.blocks_import(blocker, prepare_user_identifiers(list))
|
||||
json(conn, "job started")
|
||||
json(conn, "jobs started")
|
||||
end
|
||||
|
||||
def mutes(
|
||||
|
@ -71,7 +71,7 @@ defmodule Pleroma.Web.PleromaAPI.UserImportController do
|
|||
|
||||
defp do_mute(%{assigns: %{user: user}} = conn, list) do
|
||||
User.Import.mutes_import(user, prepare_user_identifiers(list))
|
||||
json(conn, "job started")
|
||||
json(conn, "jobs started")
|
||||
end
|
||||
|
||||
defp prepare_user_identifiers(list) do
|
||||
|
|
|
@ -19,10 +19,10 @@ defmodule Pleroma.Workers.BackgroundWorker do
|
|||
User.perform(:force_password_reset, user)
|
||||
end
|
||||
|
||||
def perform(%Job{args: %{"op" => op, "user_id" => user_id, "identifiers" => identifiers}})
|
||||
when op in ["blocks_import", "follow_import", "mutes_import"] do
|
||||
def perform(%Job{args: %{"op" => op, "user_id" => user_id, "actor" => actor}})
|
||||
when op in ["block_import", "follow_import", "mute_import"] do
|
||||
user = User.get_cached_by_id(user_id)
|
||||
{:ok, User.Import.perform(String.to_existing_atom(op), user, identifiers)}
|
||||
User.Import.perform(String.to_existing_atom(op), user, actor)
|
||||
end
|
||||
|
||||
def perform(%Job{
|
||||
|
|
|
@ -3,9 +3,9 @@ msgstr ""
|
|||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-07-21 04:21+0300\n"
|
||||
"PO-Revision-Date: 2022-07-24 10:04+0000\n"
|
||||
"Last-Translator: Yating Zhan <thestrandedvalley@protonmail.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <http://weblate.pleroma-dev.ebin.club/"
|
||||
"PO-Revision-Date: 2024-08-02 09:02+0000\n"
|
||||
"Last-Translator: Eric Zhang <ericzhang456@disroot.org>\n"
|
||||
"Language-Team: Chinese (Simplified) <https://translate.pleroma.social/"
|
||||
"projects/pleroma/pleroma-backend-domain-config_descriptions/zh_Hans/>\n"
|
||||
"Language: zh_Hans\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
@ -49,6 +49,8 @@ msgstr "Mime 类型设置"
|
|||
msgctxt "config description at :pleroma"
|
||||
msgid "Allows setting a token that can be used to authenticate requests with admin privileges without a normal user account token. Append the `admin_token` parameter to requests to utilize it. (Please reconsider using HTTP Basic Auth or OAuth-based authentication if possible)"
|
||||
msgstr ""
|
||||
"允许设置令牌以不使用普通用户令牌来授权管理员权限。在参数后加上 `admin_token` "
|
||||
"来启用该功能。(可用时可以考虑使用 HTTP Basic Auth 或 基于 OAuth 的鉴定方式)"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -126,7 +128,7 @@ msgstr "ActivityPub 相关设置"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:assets"
|
||||
msgid "This section configures assets to be used with various frontends. Currently the only option relates to mascots on the mastodon frontend"
|
||||
msgstr ""
|
||||
msgstr "该部分配置不同前端使用的资源。目前该选项只对 Mastodon 前端的吉祥物有效"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -138,7 +140,7 @@ msgstr "鉴权/授权设置"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:connections_pool"
|
||||
msgid "Advanced settings for `Gun` connections pool"
|
||||
msgstr "「Gun」连接池的高级设置"
|
||||
msgstr "`Gun` 连接池的高级设置"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -183,7 +185,7 @@ msgstr "Gopher 设置"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:hackney_pools"
|
||||
msgid "Advanced settings for `Hackney` connections pools"
|
||||
msgstr "「Hackney」连接池的高级设置"
|
||||
msgstr "`Hackney` 连接池的高级设置"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -226,7 +228,7 @@ msgid "Majic/libmagic configuration"
|
|||
msgstr "Majic/libmagic 配置"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:manifest"
|
||||
msgid "This section describe PWA manifest instance-specific values. Currently this option relate only for MastoFE."
|
||||
msgstr "此处提供针对特定实例的 PWA manifest 数值。目前相关设定尚只支持 MastoFE。"
|
||||
|
@ -244,10 +246,10 @@ msgid "Media proxy"
|
|||
msgstr "媒体代理"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:modules"
|
||||
msgid "Custom Runtime Modules"
|
||||
msgstr "自定义 Runtime 模块"
|
||||
msgstr "自定义运行库模块"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -299,7 +301,7 @@ msgstr "拒绝提及特定用户的讯息"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_normalize_markup"
|
||||
msgid "MRF NormalizeMarkup settings. Scrub configured hypertext markup."
|
||||
msgstr ""
|
||||
msgstr "MRF NomalizeMarkup 设置。清楚超文本标记。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -317,7 +319,7 @@ msgstr "RejectNonPublic 丢弃有非公开的可见性设置的文章。"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_simple"
|
||||
msgid "Simple ingress policies"
|
||||
msgstr ""
|
||||
msgstr "简单入口流量控制"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -326,10 +328,11 @@ msgid "Steals emojis from selected instances when it sees them."
|
|||
msgstr "从选择的实例偷取看到的 emoji。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgctxt "config description at :pleroma-:mrf_subchain"
|
||||
msgid "This policy processes messages through an alternate pipeline when a given message matches certain criteria. All criteria are configured as a map of regular expressions to lists of policy modules."
|
||||
msgstr ""
|
||||
msgstr "此策略将会把满足特定条件的信息通过另一管线处理。所有条件都以正则表达式来对应"
|
||||
"列出的策略模块配置。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -347,13 +350,13 @@ msgstr "配置 OAuth 2 提供者的能力"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:pools"
|
||||
msgid "Advanced settings for `Gun` workers pools"
|
||||
msgstr "「Gun」工人池的高级设置"
|
||||
msgstr "`Gun` worker 池的高级设置"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:populate_hashtags_table"
|
||||
msgid "`populate_hashtags_table` background migration settings"
|
||||
msgstr "「populate_hashtags_table」后台迁移设置"
|
||||
msgstr "`populate_hashtags_table` 后台迁移设置"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -395,13 +398,13 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:uri_schemes"
|
||||
msgid "URI schemes related settings"
|
||||
msgstr ""
|
||||
msgstr "URI scheme 相关设置"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:web_cache_ttl"
|
||||
msgid "The expiration time for the web responses cache. Values should be in milliseconds or `nil` to disable expiration."
|
||||
msgstr "web 回应缓存的过期时间。值应该以毫秒为单位,或者用「nil」来禁用过期。"
|
||||
msgstr "网页回应缓存的过期时间。以毫秒为单位,或者用 `nil` 来禁用过期。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -413,7 +416,7 @@ msgstr "欢迎讯息设置"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:workers"
|
||||
msgid "Includes custom worker options not interpretable directly by `Oban`"
|
||||
msgstr "包含不能直接被「Oban」解读的自定工人选项"
|
||||
msgstr "包含不能直接被 `Oban` 解读的自定 worker 选项"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -488,7 +491,7 @@ msgstr "过滤器将会匿名化上传文件的文件名"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-Pleroma.Upload.Filter.Mogrify"
|
||||
msgid "Uploads mogrify filter settings"
|
||||
msgstr ""
|
||||
msgstr "morgify 上传过滤器设置"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -531,6 +534,9 @@ msgstr "元数据相关设定"
|
|||
msgctxt "config description at :pleroma-Pleroma.Web.Plugs.RemoteIp"
|
||||
msgid "`Pleroma.Web.Plugs.RemoteIp` is a shim to call [`RemoteIp`](https://git.pleroma.social/pleroma/remote_ip) but with runtime configuration.\n**If your instance is not behind at least one reverse proxy, you should not enable this plug.**\n"
|
||||
msgstr ""
|
||||
"`Pleroma.Web.Plugs.RemoteIp` 是一个呼叫 [`RemoteIp`](https://git.pleroma."
|
||||
"social/pleroma/remote_ip) 的 shim 但是包含运行库配置。\n"
|
||||
"**如果您的实例不在至少一个反向代理后面,您不应该启用这个插件。**\n"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -548,13 +554,13 @@ msgstr "失效活动设定"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :prometheus-Pleroma.Web.Endpoint.MetricsExporter"
|
||||
msgid "Prometheus app metrics endpoint configuration"
|
||||
msgstr ""
|
||||
msgstr "Prometheus 服务监控端点配置"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :web_push_encryption-:vapid_details"
|
||||
msgid "Web Push Notifications configuration. You can use the mix task mix web_push.gen.keypair to generate it."
|
||||
msgstr ""
|
||||
msgstr "网页推送通知配置。您可以使用 mix task mix web_push.gen.keypair 来生成它。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -584,7 +590,7 @@ msgstr "ActivityPub"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:assets"
|
||||
msgid "Assets"
|
||||
msgstr ""
|
||||
msgstr "资源"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -608,13 +614,13 @@ msgstr "邮件通知"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:emoji"
|
||||
msgid "Emoji"
|
||||
msgstr "Emoji"
|
||||
msgstr "表情符号"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:features"
|
||||
msgid "Features"
|
||||
msgstr "特性"
|
||||
msgstr "功能"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -644,7 +650,7 @@ msgstr "Gopher"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:hackney_pools"
|
||||
msgid "Hackney pools"
|
||||
msgstr ""
|
||||
msgstr "Hackney 池"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -674,25 +680,25 @@ msgstr "实例图标"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:ldap"
|
||||
msgid "LDAP"
|
||||
msgstr ""
|
||||
msgstr "LDAP"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:majic_pool"
|
||||
msgid "Majic pool"
|
||||
msgstr ""
|
||||
msgstr "Majic 池"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:manifest"
|
||||
msgid "Manifest"
|
||||
msgstr ""
|
||||
msgstr "Manifest"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:markup"
|
||||
msgid "Markup Settings"
|
||||
msgstr ""
|
||||
msgstr "标记设置"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -710,25 +716,25 @@ msgstr "媒体文件代理"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:modules"
|
||||
msgid "Modules"
|
||||
msgstr ""
|
||||
msgstr "模块"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:mrf"
|
||||
msgid "MRF"
|
||||
msgstr ""
|
||||
msgstr "MRF"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:mrf_activity_expiration"
|
||||
msgid "MRF Activity Expiration Policy"
|
||||
msgstr ""
|
||||
msgstr "MRF 活动过期策略"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:mrf_follow_bot"
|
||||
msgid "MRF FollowBot Policy"
|
||||
msgstr ""
|
||||
msgstr "MRF FollowBot 策略"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -740,49 +746,49 @@ msgstr "MRF 标签"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:mrf_hellthread"
|
||||
msgid "MRF Hellthread"
|
||||
msgstr ""
|
||||
msgstr "MRF Hellthread"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:mrf_keyword"
|
||||
msgid "MRF Keyword"
|
||||
msgstr ""
|
||||
msgstr "MRF 关键词"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:mrf_mention"
|
||||
msgid "MRF Mention"
|
||||
msgstr ""
|
||||
msgstr "MRF 提及"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:mrf_normalize_markup"
|
||||
msgid "MRF Normalize Markup"
|
||||
msgstr ""
|
||||
msgstr "MRF 标记标准化"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:mrf_object_age"
|
||||
msgid "MRF Object Age"
|
||||
msgstr ""
|
||||
msgstr "MRF 对象年龄"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:mrf_rejectnonpublic"
|
||||
msgid "MRF Reject Non Public"
|
||||
msgstr ""
|
||||
msgstr "MRF 拒绝非公开帖子"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:mrf_simple"
|
||||
msgid "MRF Simple"
|
||||
msgstr ""
|
||||
msgstr "MRF 简单"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:mrf_steal_emoji"
|
||||
msgid "MRF Emojis"
|
||||
msgstr ""
|
||||
msgstr "MRF 表情符号"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -800,13 +806,13 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:oauth2"
|
||||
msgid "OAuth2"
|
||||
msgstr ""
|
||||
msgstr "OAuth2"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:pools"
|
||||
msgid "Pools"
|
||||
msgstr ""
|
||||
msgstr "池"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -818,13 +824,13 @@ msgstr "本站话题标签列表"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:rate_limit"
|
||||
msgid "Rate limit"
|
||||
msgstr ""
|
||||
msgstr "限流"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:restrict_unauthenticated"
|
||||
msgid "Restrict Unauthenticated"
|
||||
msgstr ""
|
||||
msgstr "限制未授权用户"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -842,7 +848,7 @@ msgstr "留言板"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:static_fe"
|
||||
msgid "Static FE"
|
||||
msgstr ""
|
||||
msgstr "静态 FE"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -854,7 +860,7 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:uri_schemes"
|
||||
msgid "URI Schemes"
|
||||
msgstr ""
|
||||
msgstr "URI Schemes"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -866,7 +872,7 @@ msgstr "用户"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:web_cache_ttl"
|
||||
msgid "Web cache TTL"
|
||||
msgstr ""
|
||||
msgstr "网页缓存 TTL"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -878,13 +884,13 @@ msgstr "欢迎"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:workers"
|
||||
msgid "Workers"
|
||||
msgstr "工人"
|
||||
msgstr "Workers"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-ConcurrentLimiter"
|
||||
msgid "ConcurrentLimiter"
|
||||
msgstr ""
|
||||
msgstr "ConcurrentLimiter"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -896,133 +902,133 @@ msgstr "Oban"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Captcha"
|
||||
msgid "Pleroma.Captcha"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Captcha"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Captcha.Kocaptcha"
|
||||
msgid "Pleroma.Captcha.Kocaptcha"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Captcha.Kocaptcha"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Emails.Mailer"
|
||||
msgid "Pleroma.Emails.Mailer"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Emails.Mailer"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Emails.NewUsersDigestEmail"
|
||||
msgid "Pleroma.Emails.NewUsersDigestEmail"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Emails.NewUsersDigestEmail"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Emails.UserEmail"
|
||||
msgid "Pleroma.Emails.UserEmail"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Emails.UserEmail"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Formatter"
|
||||
msgid "Linkify"
|
||||
msgstr ""
|
||||
msgstr "Linkify"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.ScheduledActivity"
|
||||
msgid "Pleroma.ScheduledActivity"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.ScheduledActivity"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Upload"
|
||||
msgid "Pleroma.Upload"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Upload"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Upload.Filter.AnonymizeFilename"
|
||||
msgid "Pleroma.Upload.Filter.AnonymizeFilename"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Upload.Filter.AnonymizeFilename"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Upload.Filter.Mogrify"
|
||||
msgid "Pleroma.Upload.Filter.Mogrify"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Upload.Filter.Mogrify"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Uploaders.Local"
|
||||
msgid "Pleroma.Uploaders.Local"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Uploaders.Local"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Uploaders.S3"
|
||||
msgid "Pleroma.Uploaders.S3"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Uploaders.S3"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.User"
|
||||
msgid "Pleroma.User"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.User"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.User.Backup"
|
||||
msgid "Pleroma.User.Backup"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.User.Backup"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Web.ApiSpec.CastAndValidate"
|
||||
msgid "Pleroma.Web.ApiSpec.CastAndValidate"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Web.ApiSpec.CastAndValidate"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Http"
|
||||
msgid "Pleroma.Web.MediaProxy.Invalidation.Http"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Web.MediaProxy.Invalidation.Http"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Script"
|
||||
msgid "Pleroma.Web.MediaProxy.Invalidation.Script"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Web.MediaProxy.Invalidation.Script"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Web.Metadata"
|
||||
msgid "Pleroma.Web.Metadata"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Web.Metadata"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Web.Plugs.RemoteIp"
|
||||
msgid "Pleroma.Web.Plugs.RemoteIp"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Web.Plugs.RemoteIp"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Web.Preload"
|
||||
msgid "Pleroma.Web.Preload"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Web.Preload"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-Pleroma.Workers.PurgeExpiredActivity"
|
||||
msgid "Pleroma.Workers.PurgeExpiredActivity"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Workers.PurgeExpiredActivity"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :prometheus-Pleroma.Web.Endpoint.MetricsExporter"
|
||||
msgid "Pleroma.Web.Endpoint.MetricsExporter"
|
||||
msgstr ""
|
||||
msgstr "Pleroma.Web.Endpoint.MetricsExporter"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1064,37 +1070,39 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :ex_aws-:s3 > :access_key_id"
|
||||
msgid "S3 access key ID"
|
||||
msgstr ""
|
||||
msgstr "S3 访问密钥 ID"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :ex_aws-:s3 > :host"
|
||||
msgid "S3 host"
|
||||
msgstr ""
|
||||
msgstr "S3 主机"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :ex_aws-:s3 > :region"
|
||||
msgid "S3 region (for AWS)"
|
||||
msgstr ""
|
||||
msgstr "S3 区域(AWS)"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :ex_aws-:s3 > :secret_access_key"
|
||||
msgid "Secret access key"
|
||||
msgstr ""
|
||||
msgstr "访问密钥"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :logger > :backends"
|
||||
msgid "Where logs will be sent, :console - send logs to stdout, { ExSyslogger, :ex_syslogger } - to syslog, Quack.Logger - to Slack."
|
||||
msgstr ""
|
||||
"日志发送的地点,:console - 将日志发送到 stdout, { ExSyslogger, :ex_syslogger "
|
||||
"} - 发送到 syslog, Quack.Logger - 发送到 Slack."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :logger-:console > :format"
|
||||
msgid "Default: \"$date $time [$level] $levelpad$node $metadata $message\""
|
||||
msgstr ""
|
||||
msgstr "默认:\"$date $time [$level] $levelpad$node $metadata $message\""
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1106,13 +1114,13 @@ msgstr "日志等级"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :logger-:ex_syslogger > :format"
|
||||
msgid "Default: \"$date $time [$level] $levelpad$node $metadata $message\""
|
||||
msgstr ""
|
||||
msgstr "默认:\"$date $time [$level] $levelpad$node $metadata $message\""
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :logger-:ex_syslogger > :ident"
|
||||
msgid "A string that's prepended to every message, and is typically set to the app name"
|
||||
msgstr ""
|
||||
msgstr "注入在每一个消息前面的字符串,通常设为应用程序的名称"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1148,13 +1156,13 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:activitypub > :outgoing_blocks"
|
||||
msgid "Whether to federate blocks to other instances"
|
||||
msgstr ""
|
||||
msgstr "是否与其他实例同步屏蔽列表"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:activitypub > :sign_object_fetches"
|
||||
msgid "Sign object fetches with HTTP signatures"
|
||||
msgstr ""
|
||||
msgstr "为对象获取进行 HTTP 签名"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1166,7 +1174,7 @@ msgstr "屏蔽对象时是否同时取消对其的关注"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:assets > :default_mascot"
|
||||
msgid "This will be used as the default mascot on MastoFE. Default: `:pleroma_fox_tan`"
|
||||
msgstr ""
|
||||
msgstr "这将是 MastoFE 的默认吉祥物。默认:`:pleroma_fox_tan`"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1178,13 +1186,15 @@ msgstr "默认用户头像的网址"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:assets > :mascots"
|
||||
msgid "Keyword of mascots, each element must contain both an URL and a mime_type key"
|
||||
msgstr ""
|
||||
msgstr "吉祥物关键词,每一个元素必须包含一个 URL 和 mine_type 值"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:auth > :auth_template"
|
||||
msgid "Authentication form template. By default it's `show.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/show.html.ee`."
|
||||
msgstr ""
|
||||
"授权表达模板。默认是 `show.html`,对应于 `lib/pleroma/web/templates/o_auth/"
|
||||
"o_auth/show.html.ee`。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1208,7 +1218,7 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:connections_pool > :connect_timeout"
|
||||
msgid "Timeout while `gun` will wait until connection is up. Default: 5000ms."
|
||||
msgstr "「Gun」等待连接时触发超时的上限。默认为5000ms。"
|
||||
msgstr "`gun` 等待连接时触发超时的上限。默认:5000ms。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1226,7 +1236,7 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:connections_pool > :max_connections"
|
||||
msgid "Maximum number of connections in the pool. Default: 250 connections."
|
||||
msgstr ""
|
||||
msgstr "池的最大连接数量。默认:250 连接。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1262,13 +1272,15 @@ msgstr "单个用户每次收到摘要邮件的间隔"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:email_notifications > :digest > :schedule"
|
||||
msgid "When to send digest email, in crontab format. \"0 0 0\" is the default, meaning \"once a week at midnight on Sunday morning\"."
|
||||
msgstr ""
|
||||
msgstr "发送摘要邮件的时间,以 crontab 格式。默认为“0 0 "
|
||||
"0”,意味着“每周在周日的午夜时分”。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:emoji > :default_manifest"
|
||||
msgid "Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download. Currently only one manifest can be added (no arrays)."
|
||||
msgstr ""
|
||||
msgstr "JSON-manifest 的位置。manifest 包含您可以下载的表情包信息。目前只能添加一个 "
|
||||
"manifest(无数列)。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1286,7 +1298,7 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:emoji > :shortcode_globs"
|
||||
msgid "Location of custom emoji files. * can be used as a wildcard."
|
||||
msgstr ""
|
||||
msgstr "自定义表情符号位置。* 可以当作通配符使用。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1298,7 +1310,7 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:feed > :post_title"
|
||||
msgid "Configure title rendering"
|
||||
msgstr ""
|
||||
msgstr "配置标题渲染"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1468,7 +1480,7 @@ msgstr "管理员前端"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:frontends > :admin > name"
|
||||
msgid "Name of the installed frontend. Valid config must include both `Name` and `Reference` values."
|
||||
msgstr "已安装的前端名称。只有包含了「名称」与「引用」数值才能被算作有效配置。"
|
||||
msgstr "已安装的前端名称。有效配置必须包含 `Name` 和 `Reference` 数值。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1498,13 +1510,13 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:frontends > :available > custom-http-headers"
|
||||
msgid "The custom HTTP headers for the frontend"
|
||||
msgstr ""
|
||||
msgstr "前端的自定义 HTTP 响应头"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:frontends > :available > git"
|
||||
msgid "URL of the git repository of the frontend"
|
||||
msgstr ""
|
||||
msgstr "前端 git 仓库的 URL"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1522,13 +1534,13 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:frontends > :primary"
|
||||
msgid "Primary frontend, the one that is served for all pages by default"
|
||||
msgstr ""
|
||||
msgstr "主要前端,这是默认服务所有页面的前端"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:frontends > :primary > name"
|
||||
msgid "Name of the installed frontend. Valid config must include both `Name` and `Reference` values."
|
||||
msgstr "已安装的前端名称。只有包含了「名称」与「引用」数值才能被算作有效配置。"
|
||||
msgstr "已安装的前端名称。有效配置必须包含 `Name` 和 `Reference` 数值。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1540,7 +1552,7 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:gopher > :dstport"
|
||||
msgid "Port advertised in URLs (optional, defaults to port)"
|
||||
msgstr ""
|
||||
msgstr "URL 中宣传的端口(可选,默认为端口)"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1570,7 +1582,7 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:hackney_pools > :federation > :max_connections"
|
||||
msgid "Number workers in the pool."
|
||||
msgstr "池内的工人数量。"
|
||||
msgstr "池内的 worker 数量。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1588,7 +1600,7 @@ msgstr "媒体池设定。"
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:hackney_pools > :media > :max_connections"
|
||||
msgid "Number workers in the pool."
|
||||
msgstr "池内的工人数量。"
|
||||
msgstr "池内的 worker 数量。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1600,7 +1612,7 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:hackney_pools > :upload"
|
||||
msgid "Settings for upload pool."
|
||||
msgstr ""
|
||||
msgstr "上传池设置。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1780,7 +1792,7 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:instance > :email"
|
||||
msgid "Email used to reach an Administrator/Moderator of the instance"
|
||||
msgstr ""
|
||||
msgstr "用于联系实例管理员/监管员的电子邮箱"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1813,10 +1825,10 @@ msgid "Timeout (in days) of each external federation target being unreachable pr
|
|||
msgstr ""
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:instance > :healthcheck"
|
||||
msgid "If enabled, system data will be shown on `/api/pleroma/healthcheck`"
|
||||
msgstr "若启用,「/api/pleroma/healthcheck」下将显示系统数据"
|
||||
msgstr "若启用,`/api/pleroma/healthcheck` 下将显示系统数据"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1828,7 +1840,7 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:instance > :invites_enabled"
|
||||
msgid "Enable user invitations for admins (depends on `registrations_open` being disabled)"
|
||||
msgstr "只有管理员邀请的用户方能注册(需要关闭「registrations_open」选项)"
|
||||
msgstr "只有管理员邀请的用户才能注册(需要关闭 `registrations_open` 选项)"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1900,13 +1912,13 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:instance > :multi_factor_authentication > :backup_codes > :number"
|
||||
msgid "Number of backup codes to generate."
|
||||
msgstr ""
|
||||
msgstr "生成的备份密钥数目。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:instance > :multi_factor_authentication > :totp"
|
||||
msgid "TOTP settings"
|
||||
msgstr ""
|
||||
msgstr "TOTP 设置"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -1973,7 +1985,7 @@ msgstr "允许管理员访问敏感信息(例,更新用户凭据、取得密
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:instance > :profile_directory"
|
||||
msgid "Enable profile directory."
|
||||
msgstr ""
|
||||
msgstr "启用用户主页配置。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -2020,10 +2032,10 @@ msgstr ""
|
|||
"用户(例,“@admin 请留意 @bad_actor”)。默认下为关闭状态"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:instance > :show_reactions"
|
||||
msgid "Let favourites and emoji reactions be viewed through the API."
|
||||
msgstr "允许通过此API来看见喜欢数量与表情反应。"
|
||||
msgstr "允许通过此 API 来看见喜欢数量与表情回应。"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -3607,7 +3619,7 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma-:assets > :mascots"
|
||||
msgid "Mascots"
|
||||
msgstr ""
|
||||
msgstr "吉祥物"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
## to merge POT files into PO files.
|
||||
msgid ""
|
||||
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/"
|
||||
"PO-Revision-Date: 2024-08-02 09:02+0000\n"
|
||||
"Last-Translator: Eric Zhang <ericzhang456@disroot.org>\n"
|
||||
"Language-Team: Chinese (Simplified) <https://translate.pleroma.social/"
|
||||
"projects/pleroma/pleroma-backend-domain-default/zh_Hans/>\n"
|
||||
"Language: zh_Hans\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
@ -106,7 +106,7 @@ msgstr "转换到 %{polymorphic_type} 中的任一 schema 失败"
|
|||
#: 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."
|
||||
msgstr "把值转换成 %{invalid_schema} 失败。值必须可以被转换成在列的「所有」schema。"
|
||||
msgstr "把值转换成 %{invalid_schema} 失败。值必须可以被转换成在列的 `allOf` schema。"
|
||||
|
||||
#: lib/pleroma/web/api_spec/render_error.ex:84
|
||||
#, elixir-format
|
||||
|
@ -136,17 +136,17 @@ msgstr "缺少头:%{name}。"
|
|||
#: lib/pleroma/web/api_spec/render_error.ex:196
|
||||
#, elixir-format
|
||||
msgid "No value provided for required discriminator `%{field}`."
|
||||
msgstr ""
|
||||
msgstr "没有提供给鉴别器 `%{field}` 提供所需要的值。"
|
||||
|
||||
#: lib/pleroma/web/api_spec/render_error.ex:216
|
||||
#, elixir-format
|
||||
msgid "Object property count %{property_count} is greater than maxProperties: %{max_properties}."
|
||||
msgstr ""
|
||||
msgstr "对象属性数 %{property_count} 大于 maxProperties: %{max_properties}。"
|
||||
|
||||
#: lib/pleroma/web/api_spec/render_error.ex:224
|
||||
#, elixir-format
|
||||
msgid "Object property count %{property_count} is less than minProperties: %{min_properties}"
|
||||
msgstr ""
|
||||
msgstr "对象属性数 %{property_count} 小于 minProperties: %{min_properties}"
|
||||
|
||||
#: lib/pleroma/web/templates/static_fe/static_fe/error.html.eex:2
|
||||
#, elixir-format
|
||||
|
@ -166,7 +166,7 @@ msgstr "未知的 schema:%{name}。"
|
|||
#: lib/pleroma/web/api_spec/render_error.ex:192
|
||||
#, elixir-format
|
||||
msgid "Value used as discriminator for `%{field}` matches no schemas."
|
||||
msgstr ""
|
||||
msgstr "用于 `%{field}` 鉴别器的值无法匹配到任何 schema。"
|
||||
|
||||
#: lib/pleroma/web/templates/embed/show.html.eex:43
|
||||
#: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:37
|
||||
|
|
|
@ -3,9 +3,9 @@ msgstr ""
|
|||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-09-20 13:18+0000\n"
|
||||
"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/"
|
||||
"PO-Revision-Date: 2024-08-01 08:19+0000\n"
|
||||
"Last-Translator: Eric Zhang <ericzhang456@disroot.org>\n"
|
||||
"Language-Team: Chinese (Simplified) <https://translate.pleroma.social/"
|
||||
"projects/pleroma/pleroma-backend-domain-errors/zh_Hans/>\n"
|
||||
"Language: zh_Hans\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
@ -392,7 +392,7 @@ msgid "Invalid answer data"
|
|||
msgstr "无效的回答数据"
|
||||
|
||||
#: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:33
|
||||
#, elixir-format, fuzzy
|
||||
#, elixir-format
|
||||
msgid "Nodeinfo schema version not handled"
|
||||
msgstr "Nodeinfo schema 版本没被处理"
|
||||
|
||||
|
|
274
priv/gettext/zh_Hans/LC_MESSAGES/oauth_scopes.po
Normal file
274
priv/gettext/zh_Hans/LC_MESSAGES/oauth_scopes.po
Normal file
|
@ -0,0 +1,274 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-08-01 10:12+0300\n"
|
||||
"PO-Revision-Date: 2024-08-01 08:19+0000\n"
|
||||
"Last-Translator: Eric Zhang <ericzhang456@disroot.org>\n"
|
||||
"Language-Team: Chinese (Simplified) <https://translate.pleroma.social/"
|
||||
"projects/pleroma/pleroma-backend-domain-oauth_scopes/zh_Hans/>\n"
|
||||
"Language: zh_Hans\n"
|
||||
"MIME-Version: 1.0\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"
|
||||
|
||||
## 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 has no
|
||||
## effect: edit them in PO (.po) files instead.
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin"
|
||||
msgstr "全部管理员权限"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:read"
|
||||
msgstr "使用管理员 API 读取"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:write"
|
||||
msgstr "使用管理员 API 写入"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "follow"
|
||||
msgstr "读取并写入用户关系"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read"
|
||||
msgstr "读取任何信息"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:accounts"
|
||||
msgstr "读取所有账号的信息"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:blocks"
|
||||
msgstr "读取块关系"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:bookmarks"
|
||||
msgstr "读取您的书签"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:favourites"
|
||||
msgstr "读取您喜欢的帖子"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:filters"
|
||||
msgstr "读取您的过滤器设置"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:follows"
|
||||
msgstr "读取关注关系"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:lists"
|
||||
msgstr "读取您的列表"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:notifications"
|
||||
msgstr "读取您的通知"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:search"
|
||||
msgstr "执行搜索"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:statuses"
|
||||
msgstr "读取您可以看到的动态"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write"
|
||||
msgstr "写入任何信息"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:accounts"
|
||||
msgstr "更改您的账号信息"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:blocks"
|
||||
msgstr "屏蔽或取消屏蔽任何人"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:bookmarks"
|
||||
msgstr "从您的书签中添加或移除"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:conversations"
|
||||
msgstr "更改收件人,标记为已阅,或删除聊天"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:favourites"
|
||||
msgstr "喜欢或取消喜欢动态"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:filters"
|
||||
msgstr "更改您的过滤器设置"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:follows"
|
||||
msgstr "关注或取消关注任何人"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:lists"
|
||||
msgstr "创建,更改或删除您的列表"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:media"
|
||||
msgstr "上传媒体文件或更改您上传的媒体文件"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:mutes"
|
||||
msgstr "隐藏或取消隐藏任何人"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:notifications"
|
||||
msgstr "标记通知为已读"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:statuses"
|
||||
msgstr "发表,编辑,转发帖子或对帖子做出回应"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:read:accounts"
|
||||
msgstr "使用管理员 API 读取所有账号"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:read:chats"
|
||||
msgstr "使用管理员 API 读取所有聊天"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:read:invites"
|
||||
msgstr "使用管理员 API 读取所有邀请码"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:read:media_proxy_caches"
|
||||
msgstr "使用管理员 API 读取媒体代理缓存"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:read:reports"
|
||||
msgstr "使用管理员 API 读取所有举报"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:read:statuses"
|
||||
msgstr "使用管理员 API 读取所有动态"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:write:accounts"
|
||||
msgstr "使用管理员 API 更改所有账号"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:write:chats"
|
||||
msgstr "使用管理员 API 更改所有聊天"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:write:follows"
|
||||
msgstr "使用管理员 API 更改关注关系"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:write:invites"
|
||||
msgstr "使用管理员 API 创建或吊销邀请码"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:write:media_proxy_caches"
|
||||
msgstr "使用管理员 API 更改媒体代理缓存"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:write:reports"
|
||||
msgstr "使用管理员 API 处理举报"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admin:write:statuses"
|
||||
msgstr "使用管理员 API 删除动态,更改动态的范围,或标记为敏感动态"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:mutes"
|
||||
msgstr "读取隐藏关系"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "push"
|
||||
msgstr "推送通知"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:backups"
|
||||
msgstr "读取您的备份"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:chats"
|
||||
msgstr "读取您的聊天"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:media"
|
||||
msgstr "读取媒体附件"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "read:reports"
|
||||
msgstr "读取您的举报"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:chats"
|
||||
msgstr "添加或移除聊天信息,或者标记它们为已阅"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:follow"
|
||||
msgstr "关注或取消关注任何人"
|
||||
|
||||
#: lib/pleroma/web/api_spec/scopes/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "write:reports"
|
||||
msgstr "提交举报"
|
|
@ -8,9 +8,9 @@
|
|||
## to merge POT files into PO files.
|
||||
msgid ""
|
||||
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/"
|
||||
"PO-Revision-Date: 2024-08-01 08:19+0000\n"
|
||||
"Last-Translator: Eric Zhang <ericzhang456@disroot.org>\n"
|
||||
"Language-Team: Chinese (Simplified) <https://translate.pleroma.social/"
|
||||
"projects/pleroma/pleroma-backend-domain-posix_errors/zh_Hans/>\n"
|
||||
"Language: zh_Hans\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
@ -22,19 +22,19 @@ msgid "eperm"
|
|||
msgstr "不允许的操作"
|
||||
|
||||
msgid "eacces"
|
||||
msgstr "权限不够"
|
||||
msgstr "拒绝访问"
|
||||
|
||||
msgid "eagain"
|
||||
msgstr "资源暂时不可用"
|
||||
|
||||
msgid "ebadf"
|
||||
msgstr "坏的文件描述符"
|
||||
msgstr "非法的文件描述符"
|
||||
|
||||
msgid "ebadmsg"
|
||||
msgstr "坏讯息"
|
||||
msgstr "非法消息"
|
||||
|
||||
msgid "ebusy"
|
||||
msgstr "设备或资源忙"
|
||||
msgstr "设备或资源繁忙"
|
||||
|
||||
msgid "edeadlk"
|
||||
msgstr "避免了资源死锁"
|
||||
|
@ -46,10 +46,10 @@ msgid "edquot"
|
|||
msgstr "超出了磁盘配额"
|
||||
|
||||
msgid "eexist"
|
||||
msgstr "文件存在"
|
||||
msgstr "文件已存在"
|
||||
|
||||
msgid "efault"
|
||||
msgstr "坏地址"
|
||||
msgstr "非法地址"
|
||||
|
||||
msgid "efbig"
|
||||
msgstr "文件太大"
|
||||
|
@ -61,7 +61,7 @@ msgid "eintr"
|
|||
msgstr "系统调用被中断"
|
||||
|
||||
msgid "einval"
|
||||
msgstr "不合法的参数"
|
||||
msgstr "非法参数"
|
||||
|
||||
msgid "eio"
|
||||
msgstr "输入/输出错误"
|
||||
|
@ -79,7 +79,7 @@ msgid "emlink"
|
|||
msgstr "太多链接"
|
||||
|
||||
msgid "emultihop"
|
||||
msgstr ""
|
||||
msgstr "已尝试多跳"
|
||||
|
||||
msgid "enametoolong"
|
||||
msgstr "文件名太长"
|
||||
|
@ -97,7 +97,7 @@ msgid "enolck"
|
|||
msgstr "没有可用的锁"
|
||||
|
||||
msgid "enolink"
|
||||
msgstr "链接被切断了"
|
||||
msgstr "链接被切断"
|
||||
|
||||
msgid "enoent"
|
||||
msgstr "没这文件或目录"
|
||||
|
@ -109,19 +109,19 @@ msgid "enospc"
|
|||
msgstr "设备上没剩余空间"
|
||||
|
||||
msgid "enosr"
|
||||
msgstr ""
|
||||
msgstr "流资源不足"
|
||||
|
||||
msgid "enostr"
|
||||
msgstr "设备不是流"
|
||||
|
||||
msgid "enosys"
|
||||
msgstr "功能没实现"
|
||||
msgstr "功能未实现"
|
||||
|
||||
msgid "enotblk"
|
||||
msgstr ""
|
||||
msgstr "需要块设备"
|
||||
|
||||
msgid "enotdir"
|
||||
msgstr ""
|
||||
msgstr "不是目录"
|
||||
|
||||
msgid "enotsup"
|
||||
msgstr "不受支持的操作"
|
||||
|
@ -136,25 +136,25 @@ msgid "eoverflow"
|
|||
msgstr "请为给定类型的数据指定较小的数值"
|
||||
|
||||
msgid "epipe"
|
||||
msgstr ""
|
||||
msgstr "管道中断"
|
||||
|
||||
msgid "erange"
|
||||
msgstr ""
|
||||
msgstr "数值超过范围"
|
||||
|
||||
msgid "erofs"
|
||||
msgstr "只读权限文件系统"
|
||||
msgstr "只读文件系统"
|
||||
|
||||
msgid "espipe"
|
||||
msgstr ""
|
||||
msgstr "非法搜寻"
|
||||
|
||||
msgid "esrch"
|
||||
msgstr "具体进程不存在"
|
||||
msgstr "进程不存在"
|
||||
|
||||
msgid "estale"
|
||||
msgstr ""
|
||||
msgstr "过时的文件句柄"
|
||||
|
||||
msgid "etxtbsy"
|
||||
msgstr "文本文件忙碌"
|
||||
msgstr "文本文件繁忙"
|
||||
|
||||
msgid "exdev"
|
||||
msgstr "该多设备链接不可用"
|
||||
msgstr "非法多设备链接"
|
||||
|
|
|
@ -25,11 +25,12 @@ defmodule Pleroma.User.ImportTest do
|
|||
user3.nickname
|
||||
]
|
||||
|
||||
{:ok, job} = User.Import.follow_import(user1, identifiers)
|
||||
{:ok, jobs} = User.Import.follows_import(user1, identifiers)
|
||||
|
||||
for job <- jobs do
|
||||
assert {:ok, %User{}} = ObanHelpers.perform(job)
|
||||
end
|
||||
|
||||
assert {:ok, result} = ObanHelpers.perform(job)
|
||||
assert is_list(result)
|
||||
assert result == [refresh_record(user2), refresh_record(user3)]
|
||||
assert User.following?(user1, user2)
|
||||
assert User.following?(user1, user3)
|
||||
end
|
||||
|
@ -44,11 +45,12 @@ defmodule Pleroma.User.ImportTest do
|
|||
user3.nickname
|
||||
]
|
||||
|
||||
{:ok, job} = User.Import.blocks_import(user1, identifiers)
|
||||
{:ok, jobs} = User.Import.blocks_import(user1, identifiers)
|
||||
|
||||
for job <- jobs do
|
||||
assert {:ok, %User{}} = ObanHelpers.perform(job)
|
||||
end
|
||||
|
||||
assert {:ok, result} = ObanHelpers.perform(job)
|
||||
assert is_list(result)
|
||||
assert result == [user2, user3]
|
||||
assert User.blocks?(user1, user2)
|
||||
assert User.blocks?(user1, user3)
|
||||
end
|
||||
|
@ -63,11 +65,12 @@ defmodule Pleroma.User.ImportTest do
|
|||
user3.nickname
|
||||
]
|
||||
|
||||
{:ok, job} = User.Import.mutes_import(user1, identifiers)
|
||||
{:ok, jobs} = User.Import.mutes_import(user1, identifiers)
|
||||
|
||||
for job <- jobs do
|
||||
assert {:ok, %User{}} = ObanHelpers.perform(job)
|
||||
end
|
||||
|
||||
assert {:ok, result} = ObanHelpers.perform(job)
|
||||
assert is_list(result)
|
||||
assert result == [user2, user3]
|
||||
assert User.mutes?(user1, user2)
|
||||
assert User.mutes?(user1, user3)
|
||||
end
|
||||
|
|
|
@ -22,7 +22,7 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
test "it returns HTTP 200", %{conn: conn} do
|
||||
user2 = insert(:user)
|
||||
|
||||
assert "job started" ==
|
||||
assert "jobs started" ==
|
||||
conn
|
||||
|> put_req_header("content-type", "application/json")
|
||||
|> post("/api/pleroma/follow_import", %{"list" => "#{user2.ap_id}"})
|
||||
|
@ -38,7 +38,7 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
"Account address,Show boosts\n#{user2.ap_id},true"
|
||||
end}
|
||||
]) do
|
||||
assert "job started" ==
|
||||
assert "jobs started" ==
|
||||
conn
|
||||
|> put_req_header("content-type", "application/json")
|
||||
|> post("/api/pleroma/follow_import", %{
|
||||
|
@ -46,9 +46,9 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
})
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert [{:ok, job_result}] = ObanHelpers.perform_all()
|
||||
assert job_result == [refresh_record(user2)]
|
||||
assert [%Pleroma.User{follower_count: 1}] = job_result
|
||||
assert [{:ok, updated_user}] = ObanHelpers.perform_all()
|
||||
assert updated_user.id == user2.id
|
||||
assert updated_user.follower_count == 1
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -63,7 +63,7 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
})
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert response == "job started"
|
||||
assert response == "jobs started"
|
||||
end
|
||||
|
||||
test "requires 'follow' or 'write:follows' permissions" do
|
||||
|
@ -102,14 +102,20 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
]
|
||||
|> Enum.join("\n")
|
||||
|
||||
assert "job started" ==
|
||||
assert "jobs started" ==
|
||||
conn
|
||||
|> put_req_header("content-type", "application/json")
|
||||
|> post("/api/pleroma/follow_import", %{"list" => identifiers})
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert [{:ok, job_result}] = ObanHelpers.perform_all()
|
||||
assert job_result == Enum.map(users, &refresh_record/1)
|
||||
results = ObanHelpers.perform_all()
|
||||
|
||||
returned_users =
|
||||
for {_, returned_user} <- results do
|
||||
returned_user
|
||||
end
|
||||
|
||||
assert returned_users == Enum.map(users, &refresh_record/1)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -120,7 +126,7 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
test "it returns HTTP 200", %{conn: conn} do
|
||||
user2 = insert(:user)
|
||||
|
||||
assert "job started" ==
|
||||
assert "jobs started" ==
|
||||
conn
|
||||
|> put_req_header("content-type", "application/json")
|
||||
|> post("/api/pleroma/blocks_import", %{"list" => "#{user2.ap_id}"})
|
||||
|
@ -133,7 +139,7 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
with_mocks([
|
||||
{File, [], read!: fn "blocks_list.txt" -> "#{user2.ap_id} #{user3.ap_id}" end}
|
||||
]) do
|
||||
assert "job started" ==
|
||||
assert "jobs started" ==
|
||||
conn
|
||||
|> put_req_header("content-type", "application/json")
|
||||
|> post("/api/pleroma/blocks_import", %{
|
||||
|
@ -141,8 +147,14 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
})
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert [{:ok, job_result}] = ObanHelpers.perform_all()
|
||||
assert job_result == users
|
||||
results = ObanHelpers.perform_all()
|
||||
|
||||
returned_users =
|
||||
for {_, returned_user} <- results do
|
||||
returned_user
|
||||
end
|
||||
|
||||
assert returned_users == users
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -159,14 +171,25 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
]
|
||||
|> Enum.join(" ")
|
||||
|
||||
assert "job started" ==
|
||||
assert "jobs started" ==
|
||||
conn
|
||||
|> put_req_header("content-type", "application/json")
|
||||
|> post("/api/pleroma/blocks_import", %{"list" => identifiers})
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert [{:ok, job_result}] = ObanHelpers.perform_all()
|
||||
assert job_result == users
|
||||
results = ObanHelpers.perform_all()
|
||||
|
||||
returned_user_ids =
|
||||
for {_, user} <- results do
|
||||
user.id
|
||||
end
|
||||
|
||||
original_user_ids =
|
||||
for user <- users do
|
||||
user.id
|
||||
end
|
||||
|
||||
assert match?(^original_user_ids, returned_user_ids)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -177,24 +200,25 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
test "it returns HTTP 200", %{user: user, conn: conn} do
|
||||
user2 = insert(:user)
|
||||
|
||||
assert "job started" ==
|
||||
assert "jobs started" ==
|
||||
conn
|
||||
|> put_req_header("content-type", "application/json")
|
||||
|> post("/api/pleroma/mutes_import", %{"list" => "#{user2.ap_id}"})
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert [{:ok, job_result}] = ObanHelpers.perform_all()
|
||||
assert job_result == [user2]
|
||||
[{:ok, result_user}] = ObanHelpers.perform_all()
|
||||
|
||||
assert result_user == refresh_record(user2)
|
||||
assert Pleroma.User.mutes?(user, user2)
|
||||
end
|
||||
|
||||
test "it imports mutes users from file", %{user: user, conn: conn} do
|
||||
users = [user2, user3] = insert_list(2, :user)
|
||||
[user2, user3] = insert_list(2, :user)
|
||||
|
||||
with_mocks([
|
||||
{File, [], read!: fn "mutes_list.txt" -> "#{user2.ap_id} #{user3.ap_id}" end}
|
||||
]) do
|
||||
assert "job started" ==
|
||||
assert "jobs started" ==
|
||||
conn
|
||||
|> put_req_header("content-type", "application/json")
|
||||
|> post("/api/pleroma/mutes_import", %{
|
||||
|
@ -202,14 +226,19 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
})
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert [{:ok, job_result}] = ObanHelpers.perform_all()
|
||||
assert job_result == users
|
||||
assert Enum.all?(users, &Pleroma.User.mutes?(user, &1))
|
||||
results = ObanHelpers.perform_all()
|
||||
|
||||
returned_users =
|
||||
for {_, returned_user} <- results do
|
||||
returned_user
|
||||
end
|
||||
|
||||
assert Enum.all?(returned_users, &Pleroma.User.mutes?(user, &1))
|
||||
end
|
||||
end
|
||||
|
||||
test "it imports mutes with different nickname variations", %{user: user, conn: conn} do
|
||||
users = [user2, user3, user4, user5, user6] = insert_list(5, :user)
|
||||
[user2, user3, user4, user5, user6] = insert_list(5, :user)
|
||||
|
||||
identifiers =
|
||||
[
|
||||
|
@ -221,15 +250,20 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do
|
|||
]
|
||||
|> Enum.join(" ")
|
||||
|
||||
assert "job started" ==
|
||||
assert "jobs started" ==
|
||||
conn
|
||||
|> put_req_header("content-type", "application/json")
|
||||
|> post("/api/pleroma/mutes_import", %{"list" => identifiers})
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert [{:ok, job_result}] = ObanHelpers.perform_all()
|
||||
assert job_result == users
|
||||
assert Enum.all?(users, &Pleroma.User.mutes?(user, &1))
|
||||
results = ObanHelpers.perform_all()
|
||||
|
||||
returned_users =
|
||||
for {_, returned_user} <- results do
|
||||
returned_user
|
||||
end
|
||||
|
||||
assert Enum.all?(returned_users, &Pleroma.User.mutes?(user, &1))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue