{% extends "base.html" %} {% load compress %} {% load i18n %} {% load static %} {% load translations %} {% load authnames %} {% load crispy_forms_tags %} {% load icons %} {% load otp_webauthn %} {% block extra_script %} {% compress js %} {% endcompress %} {% endblock %} {% 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 "No WebAuthn keys registered yet." %}

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

    {% trans "No authenticator apps registered yet." %}

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

    {% trans "No recovery codes generated yet." %}

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

    {% blocktranslate count count=recovery_keys_count trimmed %} {{ count }} recovery code available. {% plural %} {{ count }} recovery codes 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 %}Get in contact immediately if you notice 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 %}The API key can be used to control Weblate via the HTTP REST API and to access Weblate Git repositories.{% 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 %}