kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
Reviewed comments on source strings on Weblate and modified source strings accordingly if needed
Replaced "email" with "e-mail address" when neededenvironments/review-front-fix-fhp6gl/deployments/7748
rodzic
6a20f48ad7
commit
f661e3a078
|
@ -649,11 +649,11 @@ useful when testing components that depend on each other:
|
|||
|
||||
def notify(email, message):
|
||||
"""
|
||||
A function that sends an email to the given recipient
|
||||
A function that sends an e-mail to the given recipient
|
||||
with the given message
|
||||
"""
|
||||
|
||||
# our email sending logic here
|
||||
# our e-mail sending logic here
|
||||
# ...
|
||||
|
||||
# funkwhale_api/myapp/users.py
|
||||
|
@ -675,9 +675,9 @@ useful when testing components that depend on each other:
|
|||
def test_downgrade_superuser_sends_email(factories, mocker):
|
||||
"""
|
||||
Your downgrade logic is already tested, however, we want to ensure
|
||||
an email is sent when user is downgraded, but we don't have any email
|
||||
an e-mail is sent when user is downgraded, but we don't have any e-mail
|
||||
server available in our testing environment. Thus, we need to mock
|
||||
the email sending process.
|
||||
the e-mail sending process.
|
||||
"""
|
||||
mocked_notify = mocker.patch('funkwhale_api.myapp.notifications.notify')
|
||||
user = factories['users.User'](is_superuser=True)
|
||||
|
@ -692,7 +692,7 @@ useful when testing components that depend on each other:
|
|||
user = factories['users.User'](is_superuser=False)
|
||||
users.downgrade_user(user)
|
||||
|
||||
# here, we ensure no email was sent
|
||||
# here, we ensure no e-mail was sent
|
||||
mocked_notify.assert_not_called()
|
||||
|
||||
Views: you can find some readable views tests in file: ``api/tests/users/test_views.py``
|
||||
|
|
|
@ -308,7 +308,7 @@ DEFAULT_FROM_EMAIL = env(
|
|||
"DEFAULT_FROM_EMAIL", default="Funkwhale <noreply@{}>".format(FUNKWHALE_HOSTNAME)
|
||||
)
|
||||
"""
|
||||
Name and email address used to send system emails.
|
||||
Name and e-mail address used to send system e-mails.
|
||||
|
||||
Default: ``Funkwhale <noreply@yourdomain>``
|
||||
|
||||
|
@ -320,17 +320,17 @@ Default: ``Funkwhale <noreply@yourdomain>``
|
|||
"""
|
||||
EMAIL_SUBJECT_PREFIX = env("EMAIL_SUBJECT_PREFIX", default="[Funkwhale] ")
|
||||
"""
|
||||
Subject prefix for system emails.
|
||||
Subject prefix for system e-mails.
|
||||
"""
|
||||
SERVER_EMAIL = env("SERVER_EMAIL", default=DEFAULT_FROM_EMAIL)
|
||||
|
||||
|
||||
EMAIL_CONFIG = env.email_url("EMAIL_CONFIG", default="consolemail://")
|
||||
"""
|
||||
SMTP configuration for sending emails. Possible values:
|
||||
SMTP configuration for sending e-mails. Possible values:
|
||||
|
||||
- ``EMAIL_CONFIG=consolemail://``: output emails to console (the default)
|
||||
- ``EMAIL_CONFIG=dummymail://``: disable email sending completely
|
||||
- ``EMAIL_CONFIG=consolemail://``: output e-mails to console (the default)
|
||||
- ``EMAIL_CONFIG=dummymail://``: disable e-mail sending completely
|
||||
|
||||
On a production instance, you'll usually want to use an external SMTP server:
|
||||
|
||||
|
@ -591,10 +591,11 @@ ACCOUNT_EMAIL_VERIFICATION_ENFORCE = env.bool(
|
|||
"ACCOUNT_EMAIL_VERIFICATION_ENFORCE", default=False
|
||||
)
|
||||
"""
|
||||
Determine wether users need to verify their email address before using
|
||||
the service. Enabling this can be useful to reduce spam or bots accounts,
|
||||
however, you'll need to configure a mail server so that your users can receive
|
||||
the verification emails, using :attr:`EMAIL_CONFIG`.
|
||||
Determine wether users need to verify their e-mail address before using the service. Enabling this can be useful
|
||||
to reduce spam or bots accounts, however, you'll need to configure a mail server so that your users can receive the
|
||||
verification e-mails, using :attr:`EMAIL_CONFIG`.
|
||||
|
||||
Note that regardless of the setting value, superusers created through the command line will never require verification.
|
||||
|
||||
Note that regardless of the setting value, superusers created through the
|
||||
command line will never require verification.
|
||||
|
@ -1255,7 +1256,7 @@ MODERATION_EMAIL_NOTIFICATIONS_ENABLED = env.bool(
|
|||
"MODERATION_EMAIL_NOTIFICATIONS_ENABLED", default=True
|
||||
)
|
||||
"""
|
||||
Whether to enable email notifications to moderators and pods admins.
|
||||
Whether to enable e-mail notifications to moderators and pods admins.
|
||||
"""
|
||||
FEDERATION_AUTHENTIFY_FETCHES = True
|
||||
FEDERATION_SYNCHRONOUS_FETCH = env.bool("FEDERATION_SYNCHRONOUS_FETCH", default=True)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
Local settings
|
||||
|
||||
- Run in Debug mode
|
||||
- Use console backend for emails
|
||||
- Use console backend for e-mails
|
||||
- Add Django Debug Toolbar
|
||||
- Add django-extensions as app
|
||||
"""
|
||||
|
|
|
@ -4,7 +4,7 @@ Production Configurations
|
|||
|
||||
- Use djangosecure
|
||||
- Use Amazon's S3 for storing static files and uploaded media
|
||||
- Use mailgun to send emails
|
||||
- Use mailgun to send e-mails
|
||||
- Use Redis on Heroku
|
||||
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ def handler_create_user(
|
|||
utils.logger.debug("Validating user data…")
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
# Override email validation, we assume accounts created from CLI have a valid email
|
||||
# Override e-mail validation, we assume accounts created from CLI have a valid e-mail
|
||||
request = FakeRequest(session={"account_verified_email": email})
|
||||
utils.logger.debug("Creating user…")
|
||||
user = serializer.save(request=request)
|
||||
|
|
|
@ -73,7 +73,7 @@ class InstanceContactEmail(types.StringPreference):
|
|||
name = "contact_email"
|
||||
verbose_name = "Contact email"
|
||||
default = ""
|
||||
help_text = "A contact email for visitors who need to contact an admin or moderator"
|
||||
help_text = "A contact e-mail address for visitors who need to contact an admin or moderator"
|
||||
field_kwargs = {"required": False}
|
||||
|
||||
|
||||
|
|
|
@ -304,7 +304,7 @@ class ReportSerializer(serializers.ModelSerializer):
|
|||
|
||||
if not validated_data.get("submitter_email"):
|
||||
raise serializers.ValidationError(
|
||||
"You need to provide an email address to submit this report"
|
||||
"You need to provide an e-mail address to submit this report"
|
||||
)
|
||||
|
||||
return validated_data
|
||||
|
|
|
@ -106,14 +106,16 @@ def send_new_report_email_to_moderators(report):
|
|||
"",
|
||||
"—",
|
||||
"",
|
||||
"You are receiving this email because you are a moderator for {}.".format(
|
||||
"You are receiving this e-mail because you are a moderator for {}.".format(
|
||||
settings.FUNKWHALE_HOSTNAME
|
||||
),
|
||||
]
|
||||
|
||||
for moderator in moderators:
|
||||
if not moderator.email:
|
||||
logger.warning("Moderator %s has no email configured", moderator.username)
|
||||
logger.warning(
|
||||
"Moderator %s has no e-mail address configured", moderator.username
|
||||
)
|
||||
continue
|
||||
mail.send_mail(
|
||||
subject,
|
||||
|
@ -192,14 +194,16 @@ def notify_mods_signup_request_pending(obj):
|
|||
"",
|
||||
"—",
|
||||
"",
|
||||
"You are receiving this email because you are a moderator for {}.".format(
|
||||
"You are receiving this e-mail because you are a moderator for {}.".format(
|
||||
settings.FUNKWHALE_HOSTNAME
|
||||
),
|
||||
]
|
||||
|
||||
for moderator in moderators:
|
||||
if not moderator.email:
|
||||
logger.warning("Moderator %s has no email configured", moderator.username)
|
||||
logger.warning(
|
||||
"Moderator %s has no e-mail address configured", moderator.username
|
||||
)
|
||||
continue
|
||||
mail.send_mail(
|
||||
subject,
|
||||
|
@ -213,7 +217,7 @@ def notify_submitter_signup_request_approved(user_request):
|
|||
submitter_repr = user_request.submitter.preferred_username
|
||||
submitter_email = user_request.submitter.user.email
|
||||
if not submitter_email:
|
||||
logger.warning("User %s has no email configured", submitter_repr)
|
||||
logger.warning("User %s has no e-mail address configured", submitter_repr)
|
||||
return
|
||||
subject = "Welcome to {}, {}!".format(settings.FUNKWHALE_HOSTNAME, submitter_repr)
|
||||
login_url = federation_utils.full_url("/login")
|
||||
|
@ -223,7 +227,7 @@ def notify_submitter_signup_request_approved(user_request):
|
|||
"Our moderation team has approved your account request and you can now start "
|
||||
"using the service. Please visit {} to get started.".format(login_url),
|
||||
"",
|
||||
"Before your first login, you may need to verify your email address if you didn't already.",
|
||||
"Before your first login, you may need to verify your e-mail address if you didn't already.",
|
||||
]
|
||||
|
||||
mail.send_mail(
|
||||
|
@ -238,7 +242,7 @@ def notify_submitter_signup_request_refused(user_request):
|
|||
submitter_repr = user_request.submitter.preferred_username
|
||||
submitter_email = user_request.submitter.user.email
|
||||
if not submitter_email:
|
||||
logger.warning("User %s has no email configured", submitter_repr)
|
||||
logger.warning("User %s has no e-mail address configured", submitter_repr)
|
||||
return
|
||||
subject = "Your account request at {} was refused".format(
|
||||
settings.FUNKWHALE_HOSTNAME
|
||||
|
|
|
@ -28,7 +28,7 @@ def authenticate(username, password):
|
|||
raise exceptions.AuthenticationFailed("Wrong username or password.")
|
||||
|
||||
if common_authentication.should_verify_email(user):
|
||||
raise exceptions.AuthenticationFailed("You need to verify your email.")
|
||||
raise exceptions.AuthenticationFailed("You need to verify your e-mail address.")
|
||||
|
||||
return (user, None)
|
||||
|
||||
|
@ -47,7 +47,7 @@ def authenticate_salt(username, salt, token):
|
|||
raise exceptions.AuthenticationFailed("Wrong username or password.")
|
||||
|
||||
if common_authentication.should_verify_email(user):
|
||||
raise exceptions.AuthenticationFailed("You need to verify your email.")
|
||||
raise exceptions.AuthenticationFailed("You need to verify your e-mail address.")
|
||||
|
||||
return (user, None)
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{% load i18n %}{% autoescape off %}
|
||||
{% blocktrans with site_name=funkwhale_site_name %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}
|
||||
{% blocktrans with site_name=funkwhale_site_name %}You're receiving this e-mail because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}
|
||||
|
||||
{% trans "Please go to the following page and choose a new password:" %}
|
||||
{{ funkwhale_url }}/auth/password/reset/confirm?uid={{ uid }}&token={{ token }}
|
||||
|
|
|
@ -10,7 +10,7 @@ class Scope:
|
|||
|
||||
BASE_SCOPES = [
|
||||
Scope(
|
||||
"profile", "Access profile data (email, username, avatar, subsonic password…)"
|
||||
"profile", "Access profile data (e-mail, username, avatar, subsonic password…)"
|
||||
),
|
||||
Scope("libraries", "Access uploads, libraries, and audio metadata"),
|
||||
Scope("edits", "Browse and submit edits on audio metadata"),
|
||||
|
|
|
@ -38,8 +38,8 @@ urlpatterns = [
|
|||
name="change_password",
|
||||
),
|
||||
# This url is used by django-allauth and empty TemplateView is
|
||||
# defined just to allow reverse() call inside app, for example when email
|
||||
# with verification link is being sent, then it's required to render email
|
||||
# defined just to allow reverse() call inside app, for example when e-mail
|
||||
# with verification link is being sent, then it's required to render e-mail
|
||||
# content.
|
||||
# account_confirm_email - You should override this view to handle it in
|
||||
# your API client somehow and then, send post to /verify-email/ endpoint
|
||||
|
|
|
@ -294,7 +294,7 @@ class UserChangeEmailSerializer(serializers.Serializer):
|
|||
.exclude(user=self.context["user"])
|
||||
.exists()
|
||||
):
|
||||
raise serializers.ValidationError("This email address is already in use")
|
||||
raise serializers.ValidationError("This e-mail address is already in use")
|
||||
return value
|
||||
|
||||
def save(self, request):
|
||||
|
|
|
@ -38,7 +38,7 @@ class RegisterView(registration_views.RegisterView):
|
|||
def perform_create(self, serializer):
|
||||
user = super().perform_create(serializer)
|
||||
if not user.is_active:
|
||||
# manual approval, we need to send the confirmation email by hand
|
||||
# manual approval, we need to send the confirmation e-mail by hand
|
||||
authentication.send_email_confirmation(self.request, user)
|
||||
return user
|
||||
|
||||
|
|
|
@ -203,9 +203,9 @@ def test_report_serializer_repr(factories, to_api_date):
|
|||
{"type": "other", "submitter_email": "hello@example.test"},
|
||||
False,
|
||||
),
|
||||
# anonymous reports enabled for the category, but invalid email
|
||||
# anonymous reports enabled for the category, but invalid e-mail
|
||||
(["other"], {}, {"type": "other", "submitter_email": "hello@"}, False),
|
||||
# anonymous reports enabled for the category, no email
|
||||
# anonymous reports enabled for the category, no e-mail
|
||||
(["other"], {}, {"type": "other"}, False),
|
||||
# anonymous reports enabled for the category, actor object is empty
|
||||
(["other"], {"submitter": None}, {"type": "other"}, False),
|
||||
|
|
|
@ -15,9 +15,9 @@ def test_report_created_signal_calls_send_new_report_mail(factories, mocker):
|
|||
def test_report_created_signal_sends_email_to_mods(factories, mailoutbox, settings):
|
||||
mod1 = factories["users.User"](permission_moderation=True)
|
||||
mod2 = factories["users.User"](permission_moderation=True)
|
||||
# inactive, so no email
|
||||
# inactive, so no e-mail
|
||||
factories["users.User"](permission_moderation=True, is_active=False)
|
||||
# no moderation permission, so no email
|
||||
# no moderation permission, so no e-mail
|
||||
factories["users.User"]()
|
||||
|
||||
report = factories["moderation.Report"]()
|
||||
|
|
|
@ -427,5 +427,5 @@ def test_token_auth(
|
|||
assert response.status_code == expected_status_code
|
||||
|
||||
if expected_status_code != 200:
|
||||
# confirmation email should have been sent again
|
||||
# confirmation e-mail should have been sent again
|
||||
assert len(mailoutbox) == sent_emails + 1
|
||||
|
|
|
@ -57,7 +57,7 @@ Define MEDIA_DIRECTORY_PATH ${FUNKWHALE_ROOT_PATH}/data/media
|
|||
</IfModule>
|
||||
|
||||
# Turning ProxyRequests on and allowing proxying from all may allow
|
||||
# spammers to use your proxy to send email.
|
||||
# spammers to use your proxy to send e-mail.
|
||||
ProxyRequests Off
|
||||
|
||||
<Proxy *>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
# following variables:
|
||||
# - DJANGO_SECRET_KEY
|
||||
# - FUNKWHALE_HOSTNAME
|
||||
# - EMAIL_CONFIG and DEFAULT_FROM_EMAIL if you plan to send emails)
|
||||
# - EMAIL_CONFIG and DEFAULT_FROM_EMAIL if you plan to send e-mails)
|
||||
# On non-docker setup **only**, you'll also have to tweak/uncomment those variables:
|
||||
# - DATABASE_URL
|
||||
# - CACHE_URL
|
||||
|
@ -43,21 +43,21 @@ FUNKWHALE_WEB_WORKERS=4
|
|||
FUNKWHALE_HOSTNAME=yourdomain.funkwhale
|
||||
FUNKWHALE_PROTOCOL=https
|
||||
|
||||
# Configure email sending using this variale
|
||||
# By default, funkwhale will output emails sent to stdout
|
||||
# Configure e-mail sending using this variale
|
||||
# By default, funkwhale will output e-mails sent to stdout
|
||||
# here are a few examples for this setting
|
||||
# EMAIL_CONFIG=consolemail:// # output emails to console (the default)
|
||||
# EMAIL_CONFIG=dummymail:// # disable email sending completely
|
||||
# EMAIL_CONFIG=consolemail:// # output e-mails to console (the default)
|
||||
# EMAIL_CONFIG=dummymail:// # disable e-mail sending completely
|
||||
# On a production instance, you'll usually want to use an external SMTP server:
|
||||
# EMAIL_CONFIG=smtp://user@:password@youremail.host:25
|
||||
# EMAIL_CONFIG=smtp+ssl://user@:password@youremail.host:465
|
||||
# EMAIL_CONFIG=smtp+tls://user@:password@youremail.host:587
|
||||
|
||||
# Make email verification mandatory before using the service
|
||||
# Make e-mail verification mandatory before using the service
|
||||
# Doesn't apply to admins.
|
||||
# ACCOUNT_EMAIL_VERIFICATION_ENFORCE=false
|
||||
|
||||
# The email address to use to send system emails.
|
||||
# The e-mail address to use to send system e-mails.
|
||||
# DEFAULT_FROM_EMAIL=noreply@yourdomain
|
||||
|
||||
# Depending on the reverse proxy used in front of your funkwhale instance,
|
||||
|
|
|
@ -738,7 +738,7 @@ Me:
|
|||
email:
|
||||
type: "string"
|
||||
format: "email"
|
||||
description: Email address associated with the account
|
||||
description: E-mail address associated with the account
|
||||
example: "alice@email.provider"
|
||||
is_staff:
|
||||
type: "boolean"
|
||||
|
|
|
@ -65,33 +65,33 @@ Having the generic ``read`` or ``write`` scope give you the corresponding access
|
|||
This is the list of OAuth scopes that third-party applications can request:
|
||||
|
||||
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| Scope | Description |
|
||||
+===========================================+===================================================+
|
||||
| ``read`` | Read-only access to all data |
|
||||
| | (equivalent to all ``read:*`` scopes) |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| ``write`` | Write-only access to all data |
|
||||
| | (equivalent to all ``write:*`` scopes) |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| ``<read/write>:profile`` | Access to profile data (email, username, etc.) |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| ``<read/write>:libraries`` | Access to library data (uploads, libraries |
|
||||
| | tracks, albums, artists...) |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| ``<read/write>:favorites`` | Access to favorites |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| ``<read/write>:listenings`` | Access to history |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| ``<read/write>:follows`` | Access to followers |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| ``<read/write>:playlists`` | Access to playlists |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| ``<read/write>:radios`` | Access to radios |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| ``<read/write>:filters`` | Access to content filters |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| ``<read/write>:notifications`` | Access to notifications |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
| ``<read/write>:edits`` | Access to metadata edits |
|
||||
+-------------------------------------------+---------------------------------------------------+
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| Scope | Description |
|
||||
+===========================================+============================================================+
|
||||
| ``read`` | Read-only access to all data |
|
||||
| | (equivalent to all ``read:*`` scopes) |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| ``write`` | Write-only access to all data |
|
||||
| | (equivalent to all ``write:*`` scopes) |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| ``<read/write>:profile`` | Access to profile data (e-mail address, username, etc.) |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| ``<read/write>:libraries`` | Access to library data (uploads, libraries |
|
||||
| | tracks, albums, artists...) |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| ``<read/write>:favorites`` | Access to favorites |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| ``<read/write>:listenings`` | Access to history |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| ``<read/write>:follows`` | Access to followers |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| ``<read/write>:playlists`` | Access to playlists |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| ``<read/write>:radios`` | Access to radios |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| ``<read/write>:filters`` | Access to content filters |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| ``<read/write>:notifications`` | Access to notifications |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
| ``<read/write>:edits`` | Access to metadata edits |
|
||||
+-------------------------------------------+------------------------------------------------------------+
|
||||
|
|
|
@ -13,11 +13,11 @@ Clicking on this link will bring you to the list of unresolved reports. For conv
|
|||
the number of unresolved reports (if any) is also displayed directly next to this link, and updated in real time
|
||||
when new reports are submitted.
|
||||
|
||||
Email notifications
|
||||
E-mail notifications
|
||||
-------------------
|
||||
|
||||
In addition to the web UI, all moderators will receive a notification email whenever a report is
|
||||
submitted or resolved providing your pod has a valid email sending configuration.
|
||||
In addition to the web UI, all moderators will receive a notification e-mail whenever a report is
|
||||
submitted or resolved providing your pod has a valid e-mail sending configuration.
|
||||
This notification will include a link to review and handle the report, as well as additional
|
||||
information about the report itself.
|
||||
|
||||
|
@ -28,7 +28,7 @@ When viewing the moderation queue, you will be presented with the list of unreso
|
|||
|
||||
Each report in the queue should include all the information you need to handle it, in particular:
|
||||
|
||||
- Who submitted the report (or the email adress of the submitter if it's an accountless report)
|
||||
- Who submitted the report (or the e-mail adress of the submitter if it's an accountless report)
|
||||
- The report content
|
||||
- A link to the reported object, and a copy of this object data at the time the report was submitted
|
||||
|
||||
|
|
|
@ -285,7 +285,7 @@ paths:
|
|||
post:
|
||||
summary: Request a password reset
|
||||
description: |
|
||||
Request a password reset. An email with reset instructions will be sent to the provided email,
|
||||
Request a password reset. An e-mail with reset instructions will be sent to the provided e-mail address,
|
||||
if it's associated with a user account.
|
||||
tags:
|
||||
- "Auth and security"
|
||||
|
@ -341,7 +341,7 @@ paths:
|
|||
$ref: "./api/definitions.yml#/Me"
|
||||
/api/v1/users/users/change-email/:
|
||||
post:
|
||||
summary: Update the email address associated with a user account
|
||||
summary: Update the e-mail address associated with a user account
|
||||
tags:
|
||||
- "Auth and security"
|
||||
requestBody:
|
||||
|
|
|
@ -6,7 +6,7 @@ Delete your account
|
|||
|
||||
You can delete your Funkwhale account by visiting your settings. The deletion form is found at the bottom of the page. You will need to input your password to confirm the deletion.
|
||||
|
||||
Once the deletion request is submitted, your account and associated data will be removed from the server within a few minutes. This includes, but isn't limited to your avatar, email address, music, favorites, radios, followers and playlists.
|
||||
Once the deletion request is submitted, your account and associated data will be removed from the server within a few minutes. This includes, but isn't limited to your avatar, e-mail address, music, favorites, radios, followers and playlists.
|
||||
|
||||
Your server will also broadcast a message to other server on the federation to inform them about the deletion.
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Signing up to an Instance
|
|||
Once you have chosen the instance you would like to sign up to, creating an account is easy.
|
||||
|
||||
1. Click on the "Create an account" option on the left-hand side
|
||||
2. Enter your preferred username, email address, and password
|
||||
2. Enter your preferred username, e-mail address, and password
|
||||
3. [Optional] enter an Invitation code if you received an invite from an existing user
|
||||
4. Click on "Create my Account"
|
||||
5. Once you have created your account, you will be required to log in.
|
||||
|
|
|
@ -29,7 +29,7 @@ Accountless reports
|
|||
If this feature is enabled on the pod you are browsing, you'll be able to submit reports without an account.
|
||||
|
||||
This works exactly the same, but the report form will have an extra "email" field where you should include a working
|
||||
email address, in the event moderators need to contact you.
|
||||
e-mail address, in the event moderators need to contact you.
|
||||
|
||||
Reporting an account
|
||||
--------------------
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
v-translate="{podName: podName}"
|
||||
translate-context="Content/Home/Header"
|
||||
:translate-params="{podName: podName}">
|
||||
About %{ podName }!
|
||||
About %{ podName }
|
||||
</span>
|
||||
<div v-if="shortDescription" class="sub header">
|
||||
{{ shortDescription }}
|
||||
|
@ -179,16 +179,16 @@
|
|||
<i class="music really discrete icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: parseInt(stats.hours).toLocaleString($store.state.ui.momentLocale)}" :translate-n="parseInt(stats.hours)" translate-plural="%{ count } hours of music">%{ count } hour of music</translate>
|
||||
</p>
|
||||
<p v-if="stats.artists">
|
||||
<i class="users really discrete icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.artists.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.artists" translate-plural="%{ count } artists">%{ count } artists</translate>
|
||||
<i class="users really discrete icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.artists.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.artists" translate-plural="%{ count } artists">%{ count } artist</translate>
|
||||
</p>
|
||||
<p v-if="stats.albums">
|
||||
<i class="headphones really discrete icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.albums.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.albums" translate-plural="%{ count } albums">%{ count } albums</translate>
|
||||
<i class="headphones really discrete icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.albums.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.albums" translate-plural="%{ count } albums">%{ count } album</translate>
|
||||
</p>
|
||||
<p v-if="stats.tracks">
|
||||
<i class="file really discrete icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.tracks.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.tracks" translate-plural="%{ count } tracks">%{ count } tracks</translate>
|
||||
<i class="file really discrete icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.tracks.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.tracks" translate-plural="%{ count } tracks">%{ count } track</translate>
|
||||
</p>
|
||||
<p v-if="stats.listenings">
|
||||
<i class="play really discrete icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.listenings.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.listenings" translate-plural="%{ count } listenings">%{ count } listenings</translate>
|
||||
<i class="play really discrete icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.listenings.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.listenings" translate-plural="%{ count } listenings">%{ count } listening</translate>
|
||||
</p>
|
||||
</template>
|
||||
</div>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</h4>
|
||||
<div class="ui list">
|
||||
<router-link v-if="this.$route.path != '/about'" class="link item" to="/about">
|
||||
<translate translate-context="Footer/About/List item.Link">About page</translate>
|
||||
<translate translate-context="Footer/About/List item.Link">About</translate>
|
||||
</router-link>
|
||||
<router-link v-else-if="this.$route.path == '/about' && $store.state.auth.authenticated" class="link item" to="/library">
|
||||
<translate translate-context="Footer/*/List item.Link">Go to Library</translate>
|
||||
|
@ -71,7 +71,7 @@
|
|||
</div>
|
||||
<div class="ui hidden divider"></div>
|
||||
<p>
|
||||
<translate translate-context="Footer/*/List item.Link">The funkwhale logo was kindly designed and provided by Francis Gading.</translate>
|
||||
<translate translate-context="Footer/*/List item.Link">The Funkwhale logo was kindly designed and provided by Francis Gading.</translate>
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
|
|
@ -107,7 +107,7 @@
|
|||
</h3>
|
||||
<template v-if="openRegistrations">
|
||||
<p>
|
||||
<translate translate-context="Content/Home/Paragraph">Sign up now to keep a track of your favorites, create playlists, discover new content and much more!</translate>
|
||||
<translate translate-context="Content/Home/Paragraph">Sign up now to keep track of your favorites, create playlists, discover new content and much more!</translate>
|
||||
</p>
|
||||
<p v-if="defaultUploadQuota">
|
||||
<translate translate-context="Content/Home/Paragraph" :translate-params="{quota: humanSize(defaultUploadQuota * 1000 * 1000)}">Users on this pod also get %{ quota } of free storage to upload their own content!</translate>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<template v-if="metadataChoices">
|
||||
<fieldset v-if="creating && step === 1" class="ui grouped channel-type required field">
|
||||
<legend>
|
||||
<translate translate-context="Content/Channel/Paragraph">What this channel will be used for?</translate>
|
||||
<translate translate-context="Content/Channel/Paragraph">What will this channel be used for?</translate>
|
||||
</legend>
|
||||
<div class="ui hidden divider"></div>
|
||||
<div class="field">
|
||||
|
@ -33,7 +33,7 @@
|
|||
</div>
|
||||
<div class="ui required field">
|
||||
<label for="channel-username">
|
||||
<translate translate-context="Content/Channel/*">Social Network Name</translate>
|
||||
<translate translate-context="Content/Channel/*">Fediverse handle</translate>
|
||||
</label>
|
||||
<div class="ui left labeled input">
|
||||
<div class="ui basic label">@</div>
|
||||
|
@ -42,7 +42,7 @@
|
|||
<template v-if="creating">
|
||||
<div class="ui small hidden divider"></div>
|
||||
<p>
|
||||
<translate translate-context="Content/Channels/Paragraph">Used in URLs and to follow this channel on the federation. You cannot change it afterwards.</translate>
|
||||
<translate translate-context="Content/Channels/Paragraph">Used in URLs and to follow this channel in the Fediverse. It cannot be changed later.</translate>
|
||||
</p>
|
||||
</template>
|
||||
</div>
|
||||
|
@ -123,7 +123,7 @@
|
|||
<div class="ui two fields" v-if="newValues.content_category === 'podcast'">
|
||||
<div class="ui field">
|
||||
<label for="channel-itunes-email">
|
||||
<translate translate-context="*/*/*">Owner email</translate>
|
||||
<translate translate-context="*/*/*">Owner e-mail address</translate>
|
||||
</label>
|
||||
<input
|
||||
name="channel-itunes-email"
|
||||
|
|
|
@ -697,8 +697,8 @@ export default {
|
|||
labels() {
|
||||
let audioPlayer = this.$pgettext('Sidebar/Player/Hidden text', "Media player")
|
||||
let previous = this.$pgettext('Sidebar/Player/Icon.Tooltip', "Previous track")
|
||||
let play = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Play track")
|
||||
let pause = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Pause track")
|
||||
let play = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Play")
|
||||
let pause = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Pause")
|
||||
let next = this.$pgettext('Sidebar/Player/Icon.Tooltip', "Next track")
|
||||
let unmute = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Unmute")
|
||||
let mute = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Mute")
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
<h4 class="header"><translate translate-context="Content/Login/Error message.Title">We cannot log you in</translate></h4>
|
||||
<ul class="list">
|
||||
<li v-if="error == 'invalid_credentials' && $store.state.instance.settings.moderation.signup_approval_enabled.value">
|
||||
<translate translate-context="Content/Login/Error message.List item/Call to action">If you signed-up recently, you may need to wait before our moderation team review your account, or verify your email.</translate>
|
||||
<translate translate-context="Content/Login/Error message.List item/Call to action">If you signed-up recently, you may need to wait before our moderation team review your account, or verify your e-mail address.</translate>
|
||||
</li>
|
||||
<li v-else-if="error == 'invalid_credentials'">
|
||||
<translate translate-context="Content/Login/Error message.List item/Call to action">Please double-check your username/password couple is correct and ensure you verified your email.</translate>
|
||||
<translate translate-context="Content/Login/Error message.List item/Call to action">Please double-check that your username and password combination is correct and make sure you verified your e-mail address.</translate>
|
||||
</li>
|
||||
<li v-else>{{ error }}</li>
|
||||
</ul>
|
||||
|
@ -15,7 +15,7 @@
|
|||
<template v-if="$store.getters['instance/appDomain'] === $store.getters['instance/domain']" >
|
||||
<div class="field">
|
||||
<label for="username-field">
|
||||
<translate translate-context="Content/Login/Input.Label/Noun">Username or email</translate>
|
||||
<translate translate-context="Content/Login/Input.Label/Noun">Username or e-mail address</translate>
|
||||
<template v-if="showSignup">
|
||||
|
|
||||
<router-link :to="{path: '/signup'}">
|
||||
|
@ -92,7 +92,7 @@ export default {
|
|||
},
|
||||
computed: {
|
||||
labels() {
|
||||
let usernamePlaceholder = this.$pgettext('Content/Login/Input.Placeholder', "Enter your username or email")
|
||||
let usernamePlaceholder = this.$pgettext('Content/Login/Input.Placeholder', "Enter your username or e-mail address")
|
||||
return {
|
||||
usernamePlaceholder,
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
</ul>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label for="old-password-field"><translate translate-context="Content/Settings/Input.Label">Old password</translate></label>
|
||||
<label for="old-password-field"><translate translate-context="Content/Settings/Input.Label">Current password</translate></label>
|
||||
<password-input field-id="old-password-field" required v-model="old_password" />
|
||||
</div>
|
||||
<div class="field">
|
||||
|
@ -205,9 +205,9 @@
|
|||
<translate translate-context="Content/Settings/Title/Noun">Your applications</translate>
|
||||
</div>
|
||||
</h2>
|
||||
<p><translate translate-context="Content/Settings/Paragraph">This is the list of applications that you have created.</translate></p>
|
||||
<p><translate translate-context="Content/Settings/Paragraph">This is the list of applications that you have registered.</translate></p>
|
||||
<router-link class="ui success button" :to="{name: 'settings.applications.new'}">
|
||||
<translate translate-context="Content/Settings/Button.Label">Create a new application</translate>
|
||||
<translate translate-context="Content/Settings/Button.Label">Register a new application</translate>
|
||||
</router-link>
|
||||
<table v-if="ownedApps.length > 0" class="ui compact very basic unstackable table">
|
||||
<thead>
|
||||
|
@ -238,10 +238,10 @@
|
|||
<dangerous-button
|
||||
class="ui tiny danger button"
|
||||
@confirm="deleteApp(app.client_id)">
|
||||
<translate translate-context="*/*/*/Verb">Delete</translate>
|
||||
<p slot="modal-header" v-translate="{application: app.name}" translate-context="Popup/Settings/Title">Delete application "%{ application }"?</p>
|
||||
<p slot="modal-content"><translate translate-context="Popup/Settings/Paragraph">This will permanently delete the application and all the associated tokens.</translate></p>
|
||||
<div slot="modal-confirm"><translate translate-context="*/Settings/Button.Label/Verb">Delete application</translate></div>
|
||||
<translate translate-context="*/*/*/Verb">Remove</translate>
|
||||
<p slot="modal-header" v-translate="{application: app.name}" translate-context="Popup/Settings/Title">Remove application "%{ application }"?</p>
|
||||
<p slot="modal-content"><translate translate-context="Popup/Settings/Paragraph">This will permanently remove the application and all the associated tokens.</translate></p>
|
||||
<div slot="modal-confirm"><translate translate-context="*/Settings/Button.Label/Verb">Remove application</translate></div>
|
||||
</dangerous-button>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -249,10 +249,10 @@
|
|||
</table>
|
||||
<empty-state v-else>
|
||||
<translate slot="title" translate-context="Content/Applications/Paragraph">
|
||||
You don't have any configured application yet.
|
||||
You don't have registered any application yet.
|
||||
</translate>
|
||||
<translate translate-context="Content/Applications/Paragraph">
|
||||
Create one to integrate Funkwhale with third-party applications.
|
||||
Register one to integrate Funkwhale with third-party applications.
|
||||
</translate>
|
||||
</empty-state>
|
||||
</section>
|
||||
|
@ -275,24 +275,24 @@
|
|||
<h2 class="ui header">
|
||||
<i class="comment icon"></i>
|
||||
<div class="content">
|
||||
<translate translate-context="*/*/Button.Label">Change my email address</translate>
|
||||
<translate translate-context="*/*/Button.Label">Change my e-mail address</translate>
|
||||
</div>
|
||||
</h2>
|
||||
<p>
|
||||
<translate translate-context="Content/Settings/Paragraph'">Change the email address associated with your account. We will send a confirmation to the new address.</translate>
|
||||
<translate translate-context="Content/Settings/Paragraph'">Change the e-mail address associated with your account. We will send a confirmation to the new address.</translate>
|
||||
</p>
|
||||
<p>
|
||||
<translate :translate-params="{email: $store.state.auth.profile.email}" translate-context="Content/Settings/Paragraph'">Your current email address is %{ email }.</translate>
|
||||
<translate :translate-params="{email: $store.state.auth.profile.email}" translate-context="Content/Settings/Paragraph'">Your current e-mail address is %{ email }.</translate>
|
||||
</p>
|
||||
<form class="ui form" @submit.prevent="changeEmail">
|
||||
<div v-if="changeEmailErrors.length > 0" role="alert" class="ui negative message">
|
||||
<h4 class="header"><translate translate-context="Content/Settings/Error message.Title">We cannot change your email address</translate></h4>
|
||||
<h4 class="header"><translate translate-context="Content/Settings/Error message.Title">We cannot change your e-mail address</translate></h4>
|
||||
<ul class="list">
|
||||
<li v-for="error in changeEmailErrors">{{ error }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label for="new-email"><translate translate-context="*/*/*">New email</translate></label>
|
||||
<label for="new-email"><translate translate-context="*/*/*">New e-mail address</translate></label>
|
||||
<input id="new-email" required v-model="newEmail" type="email" />
|
||||
</div>
|
||||
<div class="field">
|
||||
|
@ -570,7 +570,7 @@ export default {
|
|||
self.isChangingEmail = false
|
||||
self.newEmail = null
|
||||
self.emailPassword = null
|
||||
let msg = self.$pgettext('*/Auth/Message', 'Your email has been changed, please check your inbox for our confirmation message.')
|
||||
let msg = self.$pgettext('*/Auth/Message', 'Your e-mail address has been changed, please check your inbox for our confirmation message.')
|
||||
self.$store.commit('ui/addMessage', {
|
||||
content: msg,
|
||||
date: new Date()
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
<div v-if="submitted">
|
||||
<div class="ui success message">
|
||||
<p v-if="signupRequiresApproval">
|
||||
<translate translate-context="Content/Signup/Form/Paragraph">Your account request was successfully submitted. You will be notified by email when our moderation team has reviewed your request.</translate>
|
||||
<translate translate-context="Content/Signup/Form/Paragraph">Your account request was successfully submitted. You will be notified by e-mail when our moderation team has reviewed your request.</translate>
|
||||
</p>
|
||||
<p v-else>
|
||||
<translate translate-context="Content/Signup/Form/Paragraph">Your account was successfully created. Please verify your email before trying to login.</translate>
|
||||
<translate translate-context="Content/Signup/Form/Paragraph">Your account was successfully created. Please verify your e-mail address before trying to login.</translate>
|
||||
</p>
|
||||
</div>
|
||||
<h2><translate translate-context="Content/Login/Title/Verb">Log in to your Funkwhale account</translate></h2>
|
||||
|
@ -44,7 +44,7 @@
|
|||
v-model="username">
|
||||
</div>
|
||||
<div class="required field">
|
||||
<label for="email-field"><translate translate-context="Content/*/*/Noun">Email</translate></label>
|
||||
<label for="email-field"><translate translate-context="Content/*/*/Noun">E-mail address</translate></label>
|
||||
<input
|
||||
id="email-field"
|
||||
ref="email"
|
||||
|
@ -135,7 +135,7 @@ export default {
|
|||
"Enter your invitation code (case insensitive)"
|
||||
)
|
||||
let usernamePlaceholder = this.$pgettext("Content/Signup/Form/Placeholder", "Enter your username")
|
||||
let emailPlaceholder = this.$pgettext("Content/Signup/Form/Placeholder", "Enter your email")
|
||||
let emailPlaceholder = this.$pgettext("Content/Signup/Form/Placeholder", "Enter your e-mail address")
|
||||
return {
|
||||
usernamePlaceholder,
|
||||
emailPlaceholder,
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<translate translate-context="Content/Settings/Paragraph'">Funkwhale is compatible with other music players that support the Subsonic API.</translate> <translate translate-context="Content/Settings/Paragraph">You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance.</translate>
|
||||
</p>
|
||||
<p>
|
||||
<translate translate-context="Content/Settings/Paragraph">However, accessing Funkwhale from those clients require a separate password you can set below.</translate>
|
||||
<translate translate-context="Content/Settings/Paragraph">However, accessing Funkwhale from those clients requires a separate password you can set below.</translate>
|
||||
</p>
|
||||
<p><a href="https://docs.funkwhale.audio/users/apps.html#subsonic-compatible-clients" target="_blank">
|
||||
<translate translate-context="Content/Settings/Link">Discover how to use Funkwhale from other apps</translate>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<modal class="small" :show.sync="show">
|
||||
<h4 class="header">
|
||||
<translate key="1" v-if="channel.content_category === 'podcasts'" translate-context="Popup/Channels/Title/Verb">New serie</translate>
|
||||
<translate key="1" v-if="channel.content_category === 'podcasts'" translate-context="Popup/Channels/Title/Verb">New series</translate>
|
||||
<translate key="2" v-else translate-context="Popup/Channels/Title">New album</translate>
|
||||
</h4>
|
||||
<div class="scrolling content">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div>
|
||||
<label for="album-dropdown">
|
||||
<translate v-if="channel && channel.artist.content_category === 'podcast'" key="1" translate-context="*/*/*">Serie</translate>
|
||||
<translate v-if="channel && channel.artist.content_category === 'podcast'" key="1" translate-context="*/*/*">Series</translate>
|
||||
<translate v-else key="2" translate-context="*/*/*">Album</translate>
|
||||
</label>
|
||||
<select id="album-dropdown" :value="value" @input="$emit('input', $event.target.value)" class="ui search normal dropdown">
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
:translate-n="objectsData.count"
|
||||
:translate-params="{total: objectsData.count}"
|
||||
translate-plural="Select all %{ total } elements">
|
||||
Select all %{ total } elements
|
||||
Select one element
|
||||
</translate>
|
||||
</a>
|
||||
<a @click.prevent="selectAll = false" v-else href="">
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
</div>
|
||||
<modal class="small" :show.sync="showModal">
|
||||
<h3 class="header">
|
||||
<translate translate-context="Popup/*/Title">Refreshing object from remote…</translate>
|
||||
<translate translate-context="Popup/*/Title">Refreshing object from remote server…</translate>
|
||||
</h3>
|
||||
<div class="scrolling content">
|
||||
<template v-if="fetch && fetch.status != 'pending'">
|
||||
|
@ -78,7 +78,7 @@
|
|||
</div>
|
||||
<div v-else-if="fetch && fetch.status === 'pending' && pollsCount >= maxPolls" role="alert" class="ui warning message">
|
||||
<h4 class="header"><translate translate-context="Popup/*/Message.Title">Refresh pending</translate></h4>
|
||||
<p><translate translate-context="Popup/*/Message.Content">Refresh request wasn't proceed in time by our server. It will be processed later.</translate></p>
|
||||
<p><translate translate-context="Popup/*/Message.Content">The refresh request hasn't been processed in time by our server. It will be processed later.</translate></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="actions">
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
<main v-title="labels.title">
|
||||
<section class="ui vertical stripe segment">
|
||||
<h2 class="ui header">
|
||||
<translate translate-context="Content/Podcasts/Title">Browsing Podcasts</translate>
|
||||
<translate translate-context="Content/Podcasts/Title">Browsing podcasts</translate>
|
||||
</h2>
|
||||
<form :class="['ui', {'loading': isLoading}, 'form']" @submit.prevent="updatePage();updateQueryString();fetchData()">
|
||||
<div class="fields">
|
||||
<div class="field">
|
||||
<label for="artist-search">
|
||||
<translate translate-context="Content/Search/Input.Label/Noun">Podcast Title</translate>
|
||||
<translate translate-context="Content/Search/Input.Label/Noun">Podcast title</translate>
|
||||
</label>
|
||||
<div class="ui action input">
|
||||
<input id="artist-search" type="text" name="search" v-model="query" :placeholder="labels.searchPlaceholder"/>
|
||||
|
|
|
@ -107,7 +107,7 @@ export default {
|
|||
computed: {
|
||||
labels () {
|
||||
return {
|
||||
summaryHelp: this.$pgettext('Content/Moderation/Help text', "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."),
|
||||
summaryHelp: this.$pgettext('Content/Moderation/Help text', "Explain why you're applying this policy: this will help you remember why you added this rule. Depending on your pod configuration, this may be displayed publicly to help users understand the moderation rules in place."),
|
||||
isActiveHelp: this.$pgettext('Content/Moderation/Help text', "Use this setting to temporarily enable/disable the policy without completely removing it."),
|
||||
blockAllHelp: this.$pgettext('Content/Moderation/Help text', "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"),
|
||||
silenceActivity: {
|
||||
|
|
|
@ -75,8 +75,10 @@
|
|||
|
||||
<span v-if="result && result.results.length > 0">
|
||||
<translate translate-context="Content/*/Paragraph"
|
||||
:translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}">
|
||||
Showing results %{ start }-%{ end } on %{ total }
|
||||
translate-plural="Showing results %{ start } to %{ end } from %{ total }"
|
||||
:translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}"
|
||||
:translate-n="result.count">
|
||||
Showing one result
|
||||
</translate>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -87,8 +87,10 @@
|
|||
|
||||
<span v-if="result && result.results.length > 0">
|
||||
<translate translate-context="Content/*/Paragraph"
|
||||
:translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}">
|
||||
Showing results %{ start }-%{ end } on %{ total }
|
||||
translate-plural="Showing results %{ start } to %{ end } from %{ total }"
|
||||
:translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}"
|
||||
:translate-n="result.count">
|
||||
Showing one result
|
||||
</translate>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -77,7 +77,7 @@ export default {
|
|||
album_title: this.$pgettext('Content/*/Dropdown/Noun', 'Album name'),
|
||||
artist_name: this.$pgettext('Content/*/Dropdown/Noun', 'Artist name'),
|
||||
name: this.$pgettext('*/*/*/Noun', 'Name'),
|
||||
length: this.$pgettext('*/*/*/Noun', 'Length'),
|
||||
length: this.$pgettext('*/*/*/Noun', 'Duration'),
|
||||
items_count: this.$pgettext('*/*/*/Noun', 'Items'),
|
||||
size: this.$pgettext('Content/*/*/Noun', 'Size'),
|
||||
bitrate: this.$pgettext('Content/Track/*/Noun', 'Bitrate'),
|
||||
|
@ -94,7 +94,7 @@ export default {
|
|||
scopes: {
|
||||
profile: {
|
||||
label: this.$pgettext('Content/OAuth Scopes/Label', 'Profile'),
|
||||
description: this.$pgettext('Content/OAuth Scopes/Paragraph', 'Access to email, username, and profile information'),
|
||||
description: this.$pgettext('Content/OAuth Scopes/Paragraph', 'Access to e-mail, username, and profile information'),
|
||||
},
|
||||
libraries: {
|
||||
label: this.$pgettext('Content/OAuth Scopes/Label', 'Libraries and uploads'),
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
</label>
|
||||
<input type="email" v-model="submitterEmail" name="report-submitter-email" id="report-submitter-email" required>
|
||||
<p>
|
||||
<translate translate-context="*/*/Field,Help">We'll use this email if we need to contact you regarding this report.</translate>
|
||||
<translate translate-context="*/*/Field,Help">We'll use this e-mail address if we need to contact you regarding this report.</translate>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -192,7 +192,7 @@ export default {
|
|||
}),
|
||||
labels () {
|
||||
return {
|
||||
copyTitle: this.$pgettext('Content/Playlist/Button.Tooltip/Verb', 'Copy queued tracks to playlist')
|
||||
copyTitle: this.$pgettext('Content/Playlist/Button.Tooltip/Verb', 'Copy the current queue to this playlist')
|
||||
}
|
||||
},
|
||||
status () {
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
<li v-for="error in errors">{{ error }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<p><translate translate-context="Content/Signup/Paragraph">Use this form to request a password reset. We will send an email to the given address with instructions to reset your password.</translate></p>
|
||||
<p><translate translate-context="Content/Signup/Paragraph">Use this form to request a password reset. We will send an e-mail to the given address with instructions to reset your password.</translate></p>
|
||||
<div class="field">
|
||||
<label for="account-email"><translate translate-context="Content/Signup/Input.Label">Account's email</translate></label>
|
||||
<label for="account-email"><translate translate-context="Content/Signup/Input.Label">Account's e-mail address</translate></label>
|
||||
<input
|
||||
id="account-email"
|
||||
required
|
||||
|
@ -52,7 +52,7 @@ export default {
|
|||
computed: {
|
||||
labels() {
|
||||
let reset = this.$pgettext('*/Login/*/Verb', "Reset your password")
|
||||
let placeholder = this.$pgettext('Content/Signup/Input.Placeholder', "Enter the email address linked to your account"
|
||||
let placeholder = this.$pgettext('Content/Signup/Input.Placeholder', "Enter the e-mail address linked to your account"
|
||||
)
|
||||
return {
|
||||
reset,
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
<translate translate-context="Content/Signup/Button.Label">Update your password</translate></button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<p><translate translate-context="Content/Signup/Paragraph">If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes.</translate></p>
|
||||
<p><translate translate-context="Content/Signup/Paragraph">If the e-mail address provided in the previous step is valid and linked to a user account, you should receive an e-mail with reset instructions in the next couple of minutes.</translate></p>
|
||||
</template>
|
||||
</form>
|
||||
<div v-else class="ui positive message">
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
</div>
|
||||
</h2>
|
||||
<library-widget :url="`federation/actors/${object.full_username}/libraries/`">
|
||||
<translate translate-context="Content/Profile/Paragraph" slot="title">This user shared the following libraries...</translate>
|
||||
<translate translate-context="Content/Profile/Paragraph" slot="title">This user shared the following libraries</translate>
|
||||
</library-widget>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<main class="main pusher" v-title="labels.title">
|
||||
<section class="ui vertical stripe segment">
|
||||
<div class="ui small text container">
|
||||
<h2><translate translate-context="Content/Signup/Title">Create a funkwhale account</translate></h2>
|
||||
<h2><translate translate-context="Content/Signup/Title">Create a Funkwhale account</translate></h2>
|
||||
<signup-form :default-invitation="defaultInvitation" :next="next"></signup-form>
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
<i class="feed icon"></i>
|
||||
<translate translate-context="Content/Channels/Header">Subscribe via RSS</translate>
|
||||
</h3>
|
||||
<p><translate translate-context="Content/Channels/Label">Copy-paste the following URL in your favorite podcasting app:</translate></p>
|
||||
<p><translate translate-context="Content/Channels/Label">Copy-paste the following URL in your favorite podcatcher:</translate></p>
|
||||
<copy-input :value="object.rss_url" />
|
||||
</template>
|
||||
<template v-if="object.actor">
|
||||
|
|
Ładowanie…
Reference in New Issue