{% extends "base.html" %} {% load i18n %} {% load translations %} {% load authnames %} {% load crispy_forms_tags %} {% load icons %} {% load otp_webauthn %} {% block breadcrumbs %}
  • {% trans "Your profile" %}
  • {% endblock %} {% block content %} {% if form.errors or userform.errors or subscriptionform.errors %} {% trans "Please fix errors in the form." as msg %} {% show_message "error" msg %} {% endif %}
    {% csrf_token %}

    {% documentation_icon 'user/profile' 'languages' right=True %}{% trans "Languages" %}

    {% crispy languagesform %}

    {% blocktrans %}Send a request to the project you want to translate to add a missing language.{% endblocktrans %}

    {% documentation_icon 'user/profile' 'preferences' right=True %}{% trans "Preferences" %}

    {{ usersettingsform|crispy }} {{ dashboardsettingsform|crispy }}

    {% documentation_icon 'user/profile' 'subscriptions' right=True %}{% trans "Watched projects" %}

    {% crispy subscriptionform %}

    {% trans "Add all projects you want to translate to see them as watched projects on the dashboard." %}

    {% documentation_icon 'user/profile' 'subscriptions' right=True %}{% trans "Notification settings" %}

    {% for form in notification_forms %}
    {% crispy form %}
    {% endfor %}

    {% documentation_icon 'user/profile' right=True %}{% trans "Account" %}

    {% crispy userform %} {% crispy commitform %}

    {% if has_email_auth %} {% translate "Verify new e-mail address" %} {% endif %} {% trans "The e-mail address can be chosen from verified addresses only." %}

    {% documentation_icon 'user/profile' 'authentication' right=True %}{% trans "Current user identities" %}

    {% if new_backends %}

    {% trans "Add new user identity" %}

    {% for name in new_backends %} {% auth_name name %} {% endfor %}
    {% endif %}

    {% documentation_icon 'admin/auth' '2fa' right=True %} {% trans "Two-factor authentication" %}

    {% trans "Two-factor authentication adds another layer of security to your account by requiring more than just a password to sign in." %}

    {% trans "Security keys (WebAuthn)" %}
    {% if not webauthn_keys %}

    {% trans "There are currently no WebAuthn keys registered." %}

    {% else %} {% endif %} {% render_otp_webauthn_register_scripts %}
    {% trans "Authenticator apps (TOTP)" %}
    {% if not totp_keys %}

    {% trans "There are currently no authenticator apps registered." %}

    {% else %} {% endif %} {% trans "Register new authenticator app" %}
    {% trans "Recovery codes" %}
    {% if recovery_keys_count == 0 %}

    {% trans "There are currently no recovery codes generated." %}

    {% trans "Generate new recovery codes" %} {% else %}

    {% blocktranslate count count=recovery_keys_count trimmed %} {{ count }} recovery code is available. {% plural %} {{ count }} recovery codes are available. {% endblocktranslate %}

    {% trans "View recovery codes" %} {% endif %}

    {% trans "User data" %}

    {% trans "You can download all your private data." %}

    {% trans "Removal" %}

    {% trans "Account removal deletes all your private data." %}

    {% documentation_icon 'user/profile' 'public-profile' right=True %}{% trans "Public profile" %}

    {% crispy profileform %}

    {% blocktrans %}All of the fields on this page are optional and can be deleted at any time, and by filling them out, you're giving us consent to share this data wherever your user profile appears.{% endblocktrans %}

    {% if enable_avatars %}

    {% documentation_icon 'user/profile' 'avatar' right=True %}{% trans "Your avatar" %}

    {% endif %}
    {% for group in user_groups %} {% endfor %} {% with invitations=user.invitation_set.all %} {% if invitations %} {% for invitation in invitations %} {% with group=invitation.group %} {% endwith %} {% endfor %} {% endif %} {% endwith %}
    {% trans "Team" %} {% trans "Roles" %} {% trans "Projects" %} {% trans "Languages" %} {% trans "Components" %}
    {% include "auth/teams-name.html" %} {% include "auth/teams-roles.html" %} {% include "auth/teams-projects.html" %} {% include "auth/teams-languages.html" %} {% include "auth/teams-components.html" %}
    {{ group }} {% translate "Pending invitation" %} {% include "auth/teams-roles.html" %} {% include "auth/teams-projects.html" %} {% include "auth/teams-languages.html" %} {% include "auth/teams-components.html" %}

    {% trans "Description" %}

    {% blocktrans %}Contact us immediately if you see anything suspicious in the audit log.{% endblocktrans %}

    {% trans "Audit log" %}

    {% for log in auditlog %} {% empty %} {% endfor %}
    {% trans "When" %} {% trans "Account activity" %} {% trans "IP address" %} {% trans "User agent" %}
    {{ log.timestamp|naturaltime }} {{ log.get_message }} {{ log.address }} {{ log.user_agent }}
    {% trans "No recent activity found!" %}

    {% documentation_icon 'api' right=True %}{% trans "API access" %}

    {% blocktrans %}You can control Weblate using the HTTP REST API and your API key is used to authenticate to it.{% endblocktrans %}

    {% trans "Your personal API key:" %} {{ user.auth_token.key }} {% trans "Regenerate API key" %}
    {% trans "API root URL:" %} {{ site_url }}{% url 'api:api-root' %}
    {% documentation_icon 'api' right=True %}{% trans "API usage example:" %}
    curl \
        -H "Authorization: Token {{ user.auth_token.key }}" \
        {{ site_url }}{% url 'api:api-root' %}
    
    {% documentation_icon 'wlc' right=True %}{% trans "CLI usage example:" %}
    wlc \
        --key {{ user.auth_token.key }} \
        --url {{ site_url }}{% url 'api:api-root' %} \
        list-projects
    
    {% if has_gitexport %}

    {% documentation_icon 'admin/optionals' 'git-exporter' right=True %}{% trans "Accessing Git repositories" %}

    {% blocktrans %}The API key is also used to authenticate to automatically exported Git repositories.{% endblocktrans %}

    git clone 'https://{{ user.username|urlencode }}:{{ user.auth_token.key }}@{{ site_domain }}/git/PROJECT/COMPONENT/'
    {% endif %}

    {% trans "Licenses" %}

    {% trans "Please pay attention to the licensing info, as this specifies how translations can be used." %}

    {% trans "By registering you agree to use your name and e-mail in the commits, and provide your contribution under the license defined by each localization project." %}

    {% with agreements=user.contributoragreement_set.order %} {% if agreements %}

    {% trans "You have agreed to the following as a contributor:" %}

    {% endif %} {% endwith %}
    {% if licenses %} {% regroup licenses by license as license_list %}

    {% trans "Licenses for individual translations" %}

    {% for dummy, items in license_list %}

    {{ items.0.get_license_display }} {{ items.0.license }} {% icon "info.svg" %}

    {% for component in items %} {{ component }} {% endfor %}

    {% endfor %}
    {% endif %}
    {% csrf_token %}
    {% endblock %}