i18n on the web - deepseek translations

This commit is contained in:
Priec
2026-08-14 20:35:37 +02:00
parent 2dc0d94ba0
commit 8f1bfdbe0c
91 changed files with 4679 additions and 1237 deletions

View File

@@ -1,23 +1,23 @@
{# GET /admin — crate::pages::admin::admin::ui::AdminPage #}
{% extends "ui/base.html" %}
{% block title %}Admin panel{% endblock %}
{% block title %}{{ nav.tr("admin-title") }}{% endblock %}
{% block content %}
<main>
<section class="heading">
<div>
<p class="eyebrow">Workspace</p>
<h1>Admin panel</h1>
<p>Browse profiles, tables, and their physical columns. Pick a table to reach what can be done to it.</p>
<p class="eyebrow">{{ nav.tr("admin-eyebrow-workspace") }}</p>
<h1>{{ nav.tr("admin-title") }}</h1>
<p>{{ nav.tr("admin-description") }}</p>
</div>
<div class="actions">
{% if page.can_manage_tables %}<a href="/admin/tables/new">Add table</a>{% endif %}
{% if page.can_manage_scripts %}<a href="/admin/logic/new">Add logic</a>{% endif %}
{% if page.can_manage_validations %}<a href="/admin/validation/new">Add validation</a>{% endif %}
{% if page.can_manage_validations %}<a href="/admin/validation/sets/new">Add rule</a>{% endif %}
{% if page.can_export %}<a href="/admin/export">Export</a>{% endif %}
{% if page.can_ecb %}<a href="/admin/ecb">Exchange rates</a>{% endif %}
{% if page.can_manage_tables %}<a href="/admin/tables/new">{{ nav.tr("admin-add-table") }}</a>{% endif %}
{% if page.can_manage_scripts %}<a href="/admin/logic/new">{{ nav.tr("admin-add-logic") }}</a>{% endif %}
{% if page.can_manage_validations %}<a href="/admin/validation/new">{{ nav.tr("admin-add-validation") }}</a>{% endif %}
{% if page.can_manage_validations %}<a href="/admin/validation/sets/new">{{ nav.tr("admin-add-rule") }}</a>{% endif %}
{% if page.can_export %}<a href="/admin/export">{{ nav.tr("admin-export") }}</a>{% endif %}
{% if page.can_ecb %}<a href="/admin/ecb">{{ nav.tr("admin-exchange-rates") }}</a>{% endif %}
</div>
</section>
<div id="admin-workspace">{% include "pages/admin/admin/workspace.html" %}</div>

View File

@@ -5,10 +5,10 @@
#}
<div class="workspace" aria-live="polite">
<section class="pane">
<div class="pane-title"><h2>Profiles</h2><span>{{ page.profiles.len() }}</span></div>
<div class="pane-title"><h2>{{ nav.tr("admin-profiles") }}</h2><span>{{ page.profiles.len() }}</span></div>
<div class="pane-list">
{% if page.profiles.is_empty() %}
<p class="empty">No profiles available.</p>
<p class="empty">{{ nav.tr("admin-no-profiles-available") }}</p>
{% else %}
{% for profile in page.profiles %}
<form hx-get="/admin/workspace" hx-target="#admin-workspace" hx-swap="innerHTML">
@@ -16,8 +16,8 @@
type="submit" name="profile" value="{{ profile.scope }}">
<span>{{ profile.label }}</span>
<small>
{{ profile.table_count }} tables
{%- if profile.global %} · shared by every profile{% endif %}
{{ profile.table_count_label(nav.locale) }}
{%- if profile.global %} · {{ nav.tr("admin-shared-by-every-profile") }}{% endif %}
</small>
</button>
</form>
@@ -27,15 +27,15 @@
</section>
<section class="pane">
<div class="pane-title"><h2>Tables</h2><span>{{ page.tables.len() }}</span></div>
<div class="pane-title"><h2>{{ nav.tr("admin-tables-heading") }}</h2><span>{{ page.tables.len() }}</span></div>
<div class="pane-list">
{% if page.selected_profile.is_none() %}
<p class="empty">Select a profile to see its tables.</p>
<p class="empty">{{ nav.tr("admin-select-profile-first") }}</p>
{% else if page.tables.is_empty() %}
{% if page.is_global() %}
<p class="empty">There are no global tables.</p>
<p class="empty">{{ nav.tr("admin-no-global-tables") }}</p>
{% else %}
<p class="empty">This profile has no tables of its own.</p>
<p class="empty">{{ nav.tr("admin-no-profile-tables") }}</p>
{% endif %}
{% else %}
{% for table in page.tables %}
@@ -45,8 +45,8 @@
type="submit" name="table" value="{{ table.name }}">
<span>{{ table.name }}</span>
<small>
{%- if table.depends_on.is_empty() %}No dependencies{% else %}Depends on {{ table.depends_on|join(", ") }}{% endif %}
· display: {{ table.row_display_columns|join(", ") }}
{%- if table.depends_on.is_empty() %}{{ nav.tr("admin-no-dependencies") }}{% else %}{{ nav.tr("admin-depends-on-prefix") }} {{ table.depends_on|join(", ") }}{% endif %}
· {{ nav.tr("admin-row-display-prefix") }} {{ table.row_display_columns|join(", ") }}
</small>
</button>
</form>
@@ -58,27 +58,27 @@
{% if page.selected_table.as_deref() == Some(table.name.as_str()) %}
<div class="browser-actions">
{% if page.can_manage_tables && !table.is_system() %}
<a href="/admin/tables/columns?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}&table={{ table.name }}">Add / rename columns</a>
<a class="danger-action" href="/admin/tables/delete?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}&table={{ table.name }}">Delete table</a>
<a href="/admin/tables/columns?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}&table={{ table.name }}">{{ nav.tr("admin-add-rename-columns") }}</a>
<a class="danger-action" href="/admin/tables/delete?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}&table={{ table.name }}">{{ nav.tr("admin-delete-table") }}</a>
{% endif %}
<a href="/permissions/grants">Who may use it</a>
<a href="/permissions/grants">{{ nav.tr("admin-who-may-use-it") }}</a>
</div>
{% endif %}
{% endfor %}
{% if page.selected_table.is_none() %}
<p class="empty">Pick a table to add columns to it, delete it, or say who may use it.</p>
<p class="empty">{{ nav.tr("admin-pick-table-hint") }}</p>
{% endif %}
{% endif %}
</div>
{% if page.can_manage_tables && page.selected_profile.is_some() %}
<div class="browser-actions pane-footer">
{% if page.is_global() %}
<a href="/admin/tables/new?global=true">+ New global table</a>
<a href="/admin/tables/new?global=true">+ {{ nav.tr("admin-new-global-table") }}</a>
{% else %}
<a href="/admin/tables/new?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}">+ New table</a>
<a href="/admin/tables/from-template?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}">From template</a>
<a href="/admin/profiles/copy?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}">Copy profile</a>
<a href="/admin/profiles/history?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}">Rename history</a>
<a href="/admin/tables/new?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}">+ {{ nav.tr("admin-new-table") }}</a>
<a href="/admin/tables/from-template?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}">{{ nav.tr("admin-from-template") }}</a>
<a href="/admin/profiles/copy?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}">{{ nav.tr("admin-copy-profile") }}</a>
<a href="/admin/profiles/history?profile={{ page.selected_profile.as_deref().unwrap_or_default() }}">{{ nav.tr("admin-rename-history") }}</a>
{% endif %}
</div>
{% endif %}
@@ -86,30 +86,30 @@
<section class="pane">
<div class="pane-title">
<h2>Columns</h2>
<span>{{ page.user_columns().len() }} user · {{ page.system_columns().len() }} system</span>
<h2>{{ nav.tr("admin-columns") }}</h2>
<span>{{ page.column_counts_label(nav.locale) }}</span>
</div>
<div class="pane-list">
{% if page.selected_table.is_none() %}
<p class="empty">Select a table to inspect its columns.</p>
<p class="empty">{{ nav.tr("admin-select-table-inspect") }}</p>
{% else if page.columns.is_empty() %}
<p class="empty">This table has no visible columns.</p>
<p class="empty">{{ nav.tr("admin-no-visible-columns") }}</p>
{% else %}
{% for column in page.user_columns() %}
<div class="column">
<span>{{ column.name }}</span>
<code>{{ column.data_type }}</code>
<small>{{ column.flags()|join(" · ") }}</small>
<small>{{ column.flags(nav.locale)|join(" · ") }}</small>
</div>
{% endfor %}
{% let system_columns = page.system_columns() %}
{% if !system_columns.is_empty() %}
<p class="group-label">System columns · hidden from users</p>
<p class="group-label">{{ nav.tr("admin-system-columns-label") }}</p>
{% for column in system_columns %}
<div class="column system">
<span>{{ column.name }}</span>
<code>{{ column.data_type }}</code>
<small>{{ column.flags()|join(" · ") }}</small>
<small>{{ column.flags(nav.locale)|join(" · ") }}</small>
</div>
{% endfor %}
{% endif %}