feat: add mobile asset views and templates with localization updates

This commit is contained in:
kdeterme 2026-09-13 09:24:55 +02:00
parent 429eb27e2d
commit 6d2de3a7c8
100 changed files with 38647 additions and 30207 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -344,7 +344,7 @@
</td> </td>
<td>{{ eq.next_control_date|date:"d/m/Y"|default:"-" }}</td> <td>{{ eq.next_control_date|date:"d/m/Y"|default:"-" }}</td>
<td class="text-end pe-3"> <td class="text-end pe-3">
<a href="{{ eq.get_absolute_url }}" class="btn btn-sm btn-outline-info py-0 px-2 small text-nowrap" title="{% translate \"Détail de l'asset\" %}"> <a href="{{ eq.get_absolute_url }}" class="btn btn-sm btn-outline-info py-0 px-2 small text-nowrap" title="{% translate 'Détail de l’asset' %}">
<i class="bi bi-eye me-1"></i>{% translate "Détail" %} <i class="bi bi-eye me-1"></i>{% translate "Détail" %}
</a> </a>
</td> </td>

View file

@ -93,6 +93,47 @@
#asset-detail-container .table td { #asset-detail-container .table td {
border-color: #e2e8f0; border-color: #e2e8f0;
} }
/* Styles pour la barre d'édition et mode édition mobile */
#asset-cms-edit-bar.mobile-edit-bar {
position: sticky;
top: 4.5rem;
z-index: 1020;
background-color: #ffffff;
border: 1px solid #b8c5d3;
box-shadow: 0 4px 6px -1px rgba(15, 23, 42, 0.08);
}
#asset-cms-edit-bar .mode-editing-label {
display: none;
}
#asset-cms-edit-bar .mode-viewing-label {
display: inline-flex;
align-items: center;
}
body.asset-cms-edit-mode #asset-cms-edit-bar .mode-editing-label {
display: inline-flex;
align-items: center;
}
body.asset-cms-edit-mode #asset-cms-edit-bar .mode-viewing-label {
display: none;
}
body.asset-cms-edit-mode #asset-edit-mode-badge {
background-color: #fef08a !important;
color: #854d0e !important;
border-color: #fde047 !important;
}
@media (max-width: 767.98px) {
.asset-editable-field .field-edit input,
.asset-editable-field .field-edit select,
.asset-editable-field .field-edit textarea {
min-height: 42px;
font-size: 1rem;
}
#asset-map {
height: 280px !important;
}
}
</style> </style>
{% endblock head %} {% endblock head %}
@ -138,7 +179,7 @@
{% block content %} {% block content %}
<div id="asset-detail-container" <div id="asset-detail-container"
class="{% if mobile_view %}px-3 pb-3{% else %}container-fluid mt-4{% endif %}" class="{% if mobile_view %}px-2 px-sm-3 pb-3{% else %}container-fluid mt-4{% endif %}"
data-asset-model="{{ asset_model }}" data-asset-model="{{ asset_model }}"
data-asset-id="{{ asset.id }}" data-asset-id="{{ asset.id }}"
data-thematic-code="{{ thematic_code }}" data-thematic-code="{{ thematic_code }}"
@ -151,58 +192,97 @@
data-radar-icon-url="{% static 'assets/radar_preventif_icon.svg' %}?v=20260710" data-radar-icon-url="{% static 'assets/radar_preventif_icon.svg' %}?v=20260710"
{% endif %}> {% endif %}>
<!-- CMS-style Edit Bar (Desktop only) --> <!-- CMS-style Edit Bar (Desktop & Mobile) -->
{% if allowed_update_fields and not mobile_view %} {% if mobile_view %}
<div id="asset-cms-edit-bar" class="px-3 py-2 mb-3 shadow-sm d-flex align-items-center justify-content-between border-bottom bg-light"> {% if allowed_update_fields %}
<div class="d-flex align-items-center gap-2"> <div id="asset-cms-edit-bar" class="mobile-edit-bar rounded-3 p-2 mb-3 d-flex align-items-center justify-content-between flex-wrap gap-2">
{% block asset_header_title %} <div class="d-flex align-items-center gap-2">
<div> <span id="asset-edit-mode-badge" class="badge bg-secondary-subtle text-secondary border">
<h2 class="mb-0" style="color: var(--brand-color); font-size: 1.25rem;"> <span class="mode-viewing-label"><i class="bi bi-eye me-1"></i>{% translate "Consultation" %}</span>
{% translate "Asset" %} : {{ asset.code }} <span class="mode-editing-label"><i class="bi bi-pencil-fill me-1"></i>{% translate "Édition en cours" %}</span>
</h2> </span>
<div class="d-flex align-items-center gap-2 mt-1" style="font-size: 0.8rem; color: #6c757d;"> <span class="fw-bold small text-truncate" style="max-width: 140px;" title="{{ asset.code }}">
{% if thematic.icon %} {{ asset.code }}
<i class="bi {{ thematic.icon }}"></i> </span>
{% endif %} </div>
{% if thematic.name %} <div class="d-flex align-items-center gap-1 ms-auto">
<span>{{ thematic.name }}</span> {% if 'archive' in allowed_actions %}
<span>&mdash;</span> <button id="asset-archive-btn" class="btn btn-outline-secondary btn-sm asset-normal-action px-2" title="{% translate 'Archiver' %}">
{% endif %} <i class="bi bi-archive"></i>
<span>{{ asset_verbose_name }}</span> </button>
</div> {% endif %}
{% if 'replace' in allowed_actions %}
<button id="asset-replace-btn" class="btn btn-outline-secondary btn-sm asset-normal-action px-2" title="{% translate 'Remplacer' %}">
<i class="bi bi-arrow-repeat"></i>
</button>
{% endif %}
<button id="asset-cms-edit-btn" class="btn btn-primary btn-sm px-3 fw-semibold">
<i class="bi bi-pencil me-1"></i>{% translate "Éditer" %}
</button>
<button id="asset-cms-save-btn" class="btn btn-success btn-sm px-3 fw-semibold d-none">
<i class="bi bi-check-circle me-1"></i>{% translate "Sauvegarder" %}
</button>
<button id="asset-cms-cancel-btn" class="btn btn-outline-danger btn-sm px-2 d-none">
<i class="bi bi-x-circle me-1"></i>{% translate "Annuler" %}
</button>
</div> </div>
{% endblock asset_header_title %}
</div> </div>
<div class="d-flex gap-2"> {% endif %}
{% if 'archive' in allowed_actions %}
<button id="asset-archive-btn" class="btn btn-light btn-sm" title="{% translate 'Archiver' %}">
<i class="bi bi-archive"></i> {% translate "Archiver" %}
</button>
{% endif %}
{% if 'replace' in allowed_actions %}
<button id="asset-replace-btn" class="btn btn-light btn-sm" title="{% translate 'Remplacer' %}">
<i class="bi bi-arrow-repeat"></i> {% translate "Remplacer" %}
</button>
{% endif %}
<button id="asset-cms-edit-btn" class="btn btn-light btn-sm">
<i class="bi bi-pencil"></i> {% translate "Éditer" %}
</button>
<button id="asset-cms-save-btn" class="btn btn-success btn-sm d-none">
<i class="bi bi-check-circle"></i> {% translate "Sauvegarder" %}
</button>
<button id="asset-cms-cancel-btn" class="btn btn-outline-danger btn-sm d-none">
<i class="bi bi-x-circle"></i> {% translate "Annuler" %}
</button>
</div>
</div>
{% else %} {% else %}
<div class="{% if mobile_view %}d-none{% else %}d-block{% endif %} mb-3"> {% if allowed_update_fields %}
<div id="asset-cms-edit-bar" class="px-3 py-2 mb-3 shadow-sm d-flex align-items-center justify-content-between border-bottom bg-light">
<div class="d-flex align-items-center gap-2">
{% block asset_header_title %}
<div>
<h2 class="mb-0" style="color: var(--brand-color); font-size: 1.25rem;">
{% translate "Asset" %} : {{ asset.code }}
</h2>
<div class="d-flex align-items-center gap-2 mt-1" style="font-size: 0.8rem; color: #6c757d;">
{% if thematic.icon %}
<i class="bi {{ thematic.icon }}"></i>
{% endif %}
{% if thematic.name %}
<span>{{ thematic.name }}</span>
<span>&mdash;</span>
{% endif %}
<span>{{ asset_verbose_name }}</span>
</div>
</div>
{% endblock asset_header_title %}
</div>
<div class="d-flex gap-2">
{% if 'archive' in allowed_actions %}
<button id="asset-archive-btn" class="btn btn-light btn-sm asset-normal-action" title="{% translate 'Archiver' %}">
<i class="bi bi-archive"></i> {% translate "Archiver" %}
</button>
{% endif %}
{% if 'replace' in allowed_actions %}
<button id="asset-replace-btn" class="btn btn-light btn-sm asset-normal-action" title="{% translate 'Remplacer' %}">
<i class="bi bi-arrow-repeat"></i> {% translate "Remplacer" %}
</button>
{% endif %}
<button id="asset-cms-edit-btn" class="btn btn-light btn-sm">
<i class="bi bi-pencil"></i> {% translate "Éditer" %}
</button>
<button id="asset-cms-save-btn" class="btn btn-success btn-sm d-none">
<i class="bi bi-check-circle"></i> {% translate "Sauvegarder" %}
</button>
<button id="asset-cms-cancel-btn" class="btn btn-outline-danger btn-sm d-none">
<i class="bi bi-x-circle"></i> {% translate "Annuler" %}
</button>
</div>
</div>
{% endif %}
{% endif %}
{% if mobile_view or not allowed_update_fields %}
<div class="mb-3">
{% block asset_header_title_readonly %} {% block asset_header_title_readonly %}
<h2 class="mb-0" style="color: var(--brand-color);"> <h2 class="mb-0" style="color: var(--brand-color); font-size: 1.25rem;">
{% if thematic.icon %} {% if thematic.icon %}
<i class="bi {{ thematic.icon }} me-2"></i> <i class="bi {{ thematic.icon }} me-2"></i>
{% endif %} {% endif %}
{% translate "Asset" %} : {{ asset }} {% translate "Asset" %} : {{ asset.code }}
</h2> </h2>
<div class="d-flex align-items-center gap-2 mt-1" style="font-size: 0.85rem; color: #6c757d;"> <div class="d-flex align-items-center gap-2 mt-1" style="font-size: 0.85rem; color: #6c757d;">
{% if thematic.icon %} {% if thematic.icon %}
@ -218,30 +298,6 @@
</div> </div>
{% endif %} {% endif %}
{% if mobile_view and allowed_update_fields %}
<div class="d-flex gap-2 mb-3 flex-wrap justify-content-center">
{% if 'archive' in allowed_actions %}
<button id="asset-archive-btn" class="btn btn-outline-secondary btn-sm asset-normal-action" title="{% translate 'Archiver' %}">
<i class="bi bi-archive me-1"></i>{% translate "Archiver" %}
</button>
{% endif %}
{% if 'replace' in allowed_actions %}
<button id="asset-replace-btn" class="btn btn-outline-secondary btn-sm asset-normal-action" title="{% translate 'Remplacer' %}">
<i class="bi bi-arrow-repeat me-1"></i>{% translate "Remplacer" %}
</button>
{% endif %}
<button id="asset-cms-edit-btn" class="btn btn-outline-secondary btn-sm asset-normal-action">
<i class="bi bi-pencil me-1"></i>{% translate "Éditer" %}
</button>
<button id="asset-cms-save-btn" class="btn btn-success btn-sm d-none asset-edit-action">
<i class="bi bi-check-circle me-1"></i>{% translate "Sauvegarder" %}
</button>
<button id="asset-cms-cancel-btn" class="btn btn-outline-danger btn-sm d-none asset-edit-action">
<i class="bi bi-x-circle me-1"></i>{% translate "Annuler" %}
</button>
</div>
{% endif %}
<div class="row {% if not mobile_view %}mt-4{% endif %}"> <div class="row {% if not mobile_view %}mt-4{% endif %}">
<!-- Colonne principale : informations de base --> <!-- Colonne principale : informations de base -->
<div class="{% if mobile_view %}col-12{% else %}col-md-8{% endif %}"> <div class="{% if mobile_view %}col-12{% else %}col-md-8{% endif %}">

View file

@ -0,0 +1,289 @@
{% extends "assets/detail_generic.html" %}
{% load i18n %}
{% load static %}
{% load asset_tags %}
{% block head %}
{{ block.super }}
<style>
/* Adaptations mobiles avancées pour le template générique d'asset */
@media (max-width: 767.98px) {
#asset-detail-container {
padding-left: 0.5rem !important;
padding-right: 0.5rem !important;
}
/* En-tête mobile compact */
.generic-asset-mobile-header {
background-color: #ffffff;
border: 1px solid #cbd5e1;
border-radius: 0.85rem;
padding: 0.85rem;
box-shadow: 0 1px 4px rgba(15, 23, 42, 0.05);
margin-bottom: 0.75rem;
}
.generic-asset-mobile-header .asset-thematic-avatar {
width: 44px;
height: 44px;
border-radius: 0.75rem;
background-color: rgba(47, 62, 139, 0.1);
color: var(--brand-color, #2f3e8b);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.4rem;
flex-shrink: 0;
}
/* Barre d'onglets de navigation segmentée */
.mobile-asset-tabs-nav {
position: sticky;
top: 3.5rem;
z-index: 1015;
background: #ffffff;
border: 1px solid #cbd5e1;
border-radius: 0.75rem;
padding: 0.3rem;
display: flex;
gap: 0.35rem;
overflow-x: auto;
white-space: nowrap;
scrollbar-width: none;
-webkit-overflow-scrolling: touch;
box-shadow: 0 2px 6px rgba(15, 23, 42, 0.06);
margin-bottom: 0.85rem;
}
.mobile-asset-tabs-nav::-webkit-scrollbar {
display: none;
}
.mobile-tab-btn {
font-size: 0.82rem;
font-weight: 600;
padding: 0.4rem 0.75rem;
border-radius: 0.55rem;
border: none;
background: transparent;
color: #64748b;
transition: all 0.15s ease-in-out;
flex-shrink: 0;
display: inline-flex;
align-items: center;
gap: 0.35rem;
}
.mobile-tab-btn.active {
background-color: var(--brand-color, #2f3e8b);
color: #ffffff;
box-shadow: 0 2px 4px rgba(47, 62, 139, 0.25);
}
/* Cartes et sections sur mobile */
#asset-detail-container .card {
border-radius: 0.85rem !important;
border: 1px solid #cbd5e1 !important;
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.05);
margin-bottom: 0.75rem !important;
}
#asset-detail-container .card-header {
padding: 0.65rem 0.85rem;
border-top-left-radius: 0.85rem !important;
border-top-right-radius: 0.85rem !important;
}
#asset-detail-container .card-header h5 {
font-size: 0.95rem !important;
font-weight: 600;
}
#asset-detail-container .card-body {
padding: 0.75rem 0.85rem;
}
/* Tableaux tactiles */
#asset-detail-container .table th {
font-size: 0.84rem;
padding: 0.5rem 0.4rem;
width: 38% !important;
}
#asset-detail-container .table td {
font-size: 0.86rem;
padding: 0.5rem 0.4rem;
}
/* Barre d'édition CMS mobile */
#asset-cms-edit-bar.mobile-edit-bar {
top: 3.5rem;
z-index: 1020;
border-radius: 0.75rem;
border: 1px solid #b8c5d3;
}
/* Carte MapLibre sur mobile */
#asset-map {
height: 320px !important;
border-radius: 0 0 0.85rem 0.85rem;
}
}
</style>
{% endblock head %}
{# ── En-tête mobile readonly avec icône, thématique et badges ── #}
{% block asset_header_title_readonly %}
<div class="generic-asset-mobile-header">
<div class="d-flex align-items-center gap-2.5">
<div class="asset-thematic-avatar" {% if thematic.color %}style="background-color: {{ thematic.color }}18; color: {{ thematic.color }};"{% endif %}>
{% if thematic.icon %}
<i class="bi {{ thematic.icon }}"></i>
{% else %}
<i class="bi bi-pin-map"></i>
{% endif %}
</div>
<div class="flex-grow-1 text-truncate">
<div class="d-flex align-items-center gap-1.5 flex-wrap">
<span class="fw-bold text-dark fs-6" style="color: var(--brand-color);">{{ asset.code }}</span>
{% if asset.status == 'active' %}
<span class="badge bg-success">{{ asset.get_status_display }}</span>
{% elif asset.status == 'damaged' or asset.status == 'to_replace' %}
<span class="badge bg-warning text-dark">{{ asset.get_status_display }}</span>
{% else %}
<span class="badge bg-secondary">{{ asset.get_status_display|default:asset.status }}</span>
{% endif %}
</div>
<div class="small text-secondary text-truncate">
{% if thematic.name_fr %}
<span>{{ thematic.name_fr }}</span> &bull;
{% endif %}
<span>{{ asset_verbose_name }}</span>
{% if asset.name_fr %}
&mdash; <span class="fw-semibold text-dark">{{ asset.name_fr }}</span>
{% elif asset.model %}
&mdash; <span class="fw-semibold text-dark">{{ asset.model.get_name }}</span>
{% endif %}
</div>
</div>
</div>
</div>
{# Barre de navigation par onglets segmentés (Infos, Carte, Documents, Liens) #}
<div class="mobile-asset-tabs-nav" id="mobileAssetTabsNav">
<button type="button" class="mobile-tab-btn active" data-target-tab="tab-infos">
<i class="bi bi-card-checklist"></i>{% translate "Informations" %}
</button>
<button type="button" class="mobile-tab-btn" data-target-tab="tab-geo">
<i class="bi bi-geo-alt"></i>{% translate "Carte & Localisation" %}
</button>
<button type="button" class="mobile-tab-btn" data-target-tab="tab-docs">
<i class="bi bi-paperclip"></i>{% translate "Documents & Photos" %}
</button>
<button type="button" class="mobile-tab-btn" data-target-tab="tab-links">
<i class="bi bi-link-45deg"></i>{% translate "Assets Liés" %}
</button>
</div>
{% endblock asset_header_title_readonly %}
{# ── Script pour la gestion des onglets mobiles ── #}
{% block extra_scripts %}
{{ block.super }}
<script>
(function() {
function initMobileAssetTabs() {
const tabButtons = document.querySelectorAll('.mobile-tab-btn');
const container = document.getElementById('asset-detail-container');
if (!tabButtons.length || !container) return;
// Identification des cartes par catégorie
const mainCol = container.querySelector('.col-12, .col-md-8');
const sideCol = container.querySelector('.col-md-4, .col-12:last-child');
// Assigner les classes de section aux cartes
// 1. Informations
const infoCards = [
container.querySelector('.card:has(table)'),
document.getElementById('model-card'),
container.querySelector('.card:has(#observations-card)'),
].filter(Boolean);
// 2. Géolocalisation & Carte
const geoCards = [
container.querySelector('.card:has(#asset-map)'),
container.querySelector('.card:has(.asset-location-link)'),
].filter(Boolean);
// 3. Documents
const docCards = [
document.getElementById('documents-card') || container.querySelector('.card:has(#documents-list)') || container.querySelector('.card:has(.document-item)')
].filter(Boolean);
// 4. Assets Liés & Remplacements
const linkCards = [
container.querySelector('.card:has(.replacement-chain)'),
container.querySelector('.card:has(#associated-assets-list)'),
container.querySelector('.card:has(#linked-interventions-list)'),
].filter(Boolean);
// Initialiser les groupes
infoCards.forEach(c => c && c.classList.add('mobile-section-infos'));
geoCards.forEach(c => c && c.classList.add('mobile-section-geo'));
docCards.forEach(c => c && c.classList.add('mobile-section-docs'));
linkCards.forEach(c => c && c.classList.add('mobile-section-links'));
function showSection(targetTab) {
tabButtons.forEach(btn => {
if (btn.dataset.targetTab === targetTab) {
btn.classList.add('active');
} else {
btn.classList.remove('active');
}
});
const allCustomSections = container.querySelectorAll(
'.mobile-section-infos, .mobile-section-geo, .mobile-section-docs, .mobile-section-links'
);
if (targetTab === 'tab-infos') {
allCustomSections.forEach(c => c.style.display = 'none');
infoCards.forEach(c => c.style.display = '');
// Si aucune carte taguée infos, tout afficher
if (!infoCards.length) allCustomSections.forEach(c => c.style.display = '');
} else if (targetTab === 'tab-geo') {
allCustomSections.forEach(c => c.style.display = 'none');
geoCards.forEach(c => c.style.display = '');
// Redimensionner la carte MapLibre pour s'adapter au conteneur
setTimeout(() => {
window.dispatchEvent(new Event('resize'));
}, 100);
} else if (targetTab === 'tab-docs') {
allCustomSections.forEach(c => c.style.display = 'none');
docCards.forEach(c => c.style.display = '');
} else if (targetTab === 'tab-links') {
allCustomSections.forEach(c => c.style.display = 'none');
linkCards.forEach(c => c.style.display = '');
}
}
tabButtons.forEach(btn => {
btn.addEventListener('click', () => {
showSection(btn.dataset.targetTab);
});
});
// Par défaut, afficher les infos
showSection('tab-infos');
// Si on active le mode édition, s'assurer que les champs éditables restent interactifs
document.addEventListener('assetEditModeChanged', (e) => {
if (e.detail && e.detail.editing) {
// En mode édition, toutes les cartes peuvent être consultées via les onglets
}
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initMobileAssetTabs);
} else {
initMobileAssetTabs();
}
})();
</script>
{% endblock extra_scripts %}
{% block script %}
{{ block.super }}
{% endblock script %}

View file

@ -3,12 +3,42 @@
{% load static %} {% load static %}
{% load asset_tags %} {% load asset_tags %}
{% block head %}
{{ block.super }}
<style>
/* Adaptations spécifiques pour la vue Arbre sur mobile */
@media (max-width: 767.98px) {
.tree-header-icon {
width: 38px !important;
height: 38px !important;
min-width: 38px;
}
.tree-header-icon i {
font-size: 1.3rem !important;
}
.tree-metric-widget {
padding: 0.35rem !important;
}
.tree-metric-widget .metric-title {
font-size: 0.72rem;
letter-spacing: -0.2px;
}
.tree-metric-widget .metric-value {
font-size: 1.05rem;
}
.card-header h5 {
font-size: 0.95rem !important;
}
}
</style>
{% endblock head %}
{# ══════════════════════════════════════════════════════════════════════════════ #} {# ══════════════════════════════════════════════════════════════════════════════ #}
{# EN-TÊTE SPÉCIFIQUE ARBRE #} {# EN-TÊTE SPÉCIFIQUE ARBRE #}
{# ══════════════════════════════════════════════════════════════════════════════ #} {# ══════════════════════════════════════════════════════════════════════════════ #}
{% block asset_header_title %} {% block asset_header_title %}
<div class="d-flex align-items-center gap-3"> <div class="d-flex align-items-center gap-3">
<div class="rounded-circle bg-success-subtle p-2 d-flex align-items-center justify-content-center" style="width: 46px; height: 46px;"> <div class="rounded-circle bg-success-subtle p-2 d-flex align-items-center justify-content-center tree-header-icon" style="width: 46px; height: 46px;">
<i class="bi bi-tree-fill text-success" style="font-size: 1.6rem;"></i> <i class="bi bi-tree-fill text-success" style="font-size: 1.6rem;"></i>
</div> </div>
<div> <div>
@ -79,7 +109,7 @@
{% block asset_header_title_readonly %} {% block asset_header_title_readonly %}
<div class="d-flex align-items-center gap-3"> <div class="d-flex align-items-center gap-3">
<div class="rounded-circle bg-success-subtle p-2 d-flex align-items-center justify-content-center" style="width: 46px; height: 46px;"> <div class="rounded-circle bg-success-subtle p-2 d-flex align-items-center justify-content-center tree-header-icon" style="width: 46px; height: 46px;">
<i class="bi bi-tree-fill text-success" style="font-size: 1.6rem;"></i> <i class="bi bi-tree-fill text-success" style="font-size: 1.6rem;"></i>
</div> </div>
<div> <div>
@ -362,25 +392,25 @@
{# Mini-widgets d'indicateurs visuels #} {# Mini-widgets d'indicateurs visuels #}
<div class="row g-2 mb-3"> <div class="row g-2 mb-3">
<div class="col-4"> <div class="col-4">
<div class="p-2 border rounded text-center bg-light-subtle"> <div class="p-2 border rounded text-center bg-light-subtle tree-metric-widget">
<div class="small text-muted mb-1"><i class="bi bi-arrow-up-down text-success me-1"></i>{% translate "Hauteur" %}</div> <div class="small text-muted mb-1 metric-title text-truncate"><i class="bi bi-arrow-up-down text-success me-1"></i>{% translate "Hauteur" %}</div>
<div class="fs-5 fw-bold text-success"> <div class="fs-5 fw-bold text-success metric-value">
{% if asset.height %}{{ asset.height }} <small class="text-muted fw-normal" style="font-size: 0.75rem;">m</small>{% else %}<span class="text-muted fs-6">&mdash;</span>{% endif %} {% if asset.height %}{{ asset.height }} <small class="text-muted fw-normal" style="font-size: 0.75rem;">m</small>{% else %}<span class="text-muted fs-6">&mdash;</span>{% endif %}
</div> </div>
</div> </div>
</div> </div>
<div class="col-4"> <div class="col-4">
<div class="p-2 border rounded text-center bg-light-subtle"> <div class="p-2 border rounded text-center bg-light-subtle tree-metric-widget">
<div class="small text-muted mb-1"><i class="bi bi-circle text-primary me-1"></i>{% translate "Circonférence" %}</div> <div class="small text-muted mb-1 metric-title text-truncate"><i class="bi bi-circle text-primary me-1"></i>{% translate "Circonférence" %}</div>
<div class="fs-5 fw-bold text-primary"> <div class="fs-5 fw-bold text-primary metric-value">
{% if asset.circumference %}{{ asset.circumference }} <small class="text-muted fw-normal" style="font-size: 0.75rem;">cm</small>{% else %}<span class="text-muted fs-6">&mdash;</span>{% endif %} {% if asset.circumference %}{{ asset.circumference }} <small class="text-muted fw-normal" style="font-size: 0.75rem;">cm</small>{% else %}<span class="text-muted fs-6">&mdash;</span>{% endif %}
</div> </div>
</div> </div>
</div> </div>
<div class="col-4"> <div class="col-4">
<div class="p-2 border rounded text-center bg-light-subtle"> <div class="p-2 border rounded text-center bg-light-subtle tree-metric-widget">
<div class="small text-muted mb-1"><i class="bi bi-arrows-expand text-info me-1"></i>{% translate "Houppier" %}</div> <div class="small text-muted mb-1 metric-title text-truncate"><i class="bi bi-arrows-expand text-info me-1"></i>{% translate "Houppier" %}</div>
<div class="fs-5 fw-bold text-info-emphasis"> <div class="fs-5 fw-bold text-info-emphasis metric-value">
{% if asset.crown_diameter %}{{ asset.crown_diameter }} <small class="text-muted fw-normal" style="font-size: 0.75rem;">m</small>{% else %}<span class="text-muted fs-6">&mdash;</span>{% endif %} {% if asset.crown_diameter %}{{ asset.crown_diameter }} <small class="text-muted fw-normal" style="font-size: 0.75rem;">m</small>{% else %}<span class="text-muted fs-6">&mdash;</span>{% endif %}
</div> </div>
</div> </div>
@ -391,11 +421,11 @@
<tbody> <tbody>
<!-- Hauteur totale --> <!-- Hauteur totale -->
<tr class="asset-editable-field" data-field="height" data-can-edit="{% if 'height' in allowed_update_fields %}true{% else %}false{% endif %}"> <tr class="asset-editable-field" data-field="height" data-can-edit="{% if 'height' in allowed_update_fields %}true{% else %}false{% endif %}">
<th style="width: 32%;">{% translate "Hauteur totale (m)" %}</th> <th style="width: 35%;">{% translate "Hauteur totale (m)" %}</th>
<td> <td>
<div class="field-display"><span class="field-value">{% if asset.height %}{{ asset.height }} m{% else %}-{% endif %}</span></div> <div class="field-display"><span class="field-value">{% if asset.height %}{{ asset.height }} m{% else %}-{% endif %}</span></div>
<div class="field-edit d-none"> <div class="field-edit d-none">
<input type="number" step="0.1" class="form-control form-control-sm" value="{{ asset.height|default:'' }}"> <input type="number" step="0.1" inputmode="decimal" class="form-control form-control-sm" value="{{ asset.height|default:'' }}">
</div> </div>
</td> </td>
</tr> </tr>
@ -406,7 +436,7 @@
<td> <td>
<div class="field-display"><span class="field-value">{% if asset.circumference %}{{ asset.circumference }} cm{% else %}-{% endif %}</span></div> <div class="field-display"><span class="field-value">{% if asset.circumference %}{{ asset.circumference }} cm{% else %}-{% endif %}</span></div>
<div class="field-edit d-none"> <div class="field-edit d-none">
<input type="number" step="1" class="form-control form-control-sm" value="{{ asset.circumference|default:'' }}" placeholder="{% translate 'En cm' %}"> <input type="number" step="1" inputmode="numeric" class="form-control form-control-sm" value="{{ asset.circumference|default:'' }}" placeholder="{% translate 'En cm' %}">
</div> </div>
</td> </td>
</tr> </tr>
@ -417,7 +447,7 @@
<td> <td>
<div class="field-display"><span class="field-value">{% if asset.crown_diameter %}{{ asset.crown_diameter }} m{% else %}-{% endif %}</span></div> <div class="field-display"><span class="field-value">{% if asset.crown_diameter %}{{ asset.crown_diameter }} m{% else %}-{% endif %}</span></div>
<div class="field-edit d-none"> <div class="field-edit d-none">
<input type="number" step="0.5" class="form-control form-control-sm" value="{{ asset.crown_diameter|default:'' }}"> <input type="number" step="0.5" inputmode="decimal" class="form-control form-control-sm" value="{{ asset.crown_diameter|default:'' }}">
</div> </div>
</td> </td>
</tr> </tr>
@ -432,7 +462,7 @@
</span> </span>
</div> </div>
<div class="field-edit d-none"> <div class="field-edit d-none">
<input type="number" step="0.1" class="form-control form-control-sm" value="{{ asset.crown_clearance|default:'' }}" placeholder="{% translate 'Ex: 4.5' %}"> <input type="number" step="0.1" inputmode="decimal" class="form-control form-control-sm" value="{{ asset.crown_clearance|default:'' }}" placeholder="{% translate 'Ex: 4.5' %}">
</div> </div>
</td> </td>
</tr> </tr>
@ -467,7 +497,7 @@
<td> <td>
<div class="field-display"><span class="field-value">{% if asset.protection_buffer %}{{ asset.protection_buffer }} m{% else %}-{% endif %}</span></div> <div class="field-display"><span class="field-value">{% if asset.protection_buffer %}{{ asset.protection_buffer }} m{% else %}-{% endif %}</span></div>
<div class="field-edit d-none"> <div class="field-edit d-none">
<input type="number" step="0.5" class="form-control form-control-sm" value="{{ asset.protection_buffer|default:'' }}"> <input type="number" step="0.5" inputmode="decimal" class="form-control form-control-sm" value="{{ asset.protection_buffer|default:'' }}">
</div> </div>
</td> </td>
</tr> </tr>
@ -478,7 +508,7 @@
<td> <td>
<div class="field-display"><span class="field-value">{% if asset.depth %}{{ asset.depth }} m{% else %}-{% endif %}</span></div> <div class="field-display"><span class="field-value">{% if asset.depth %}{{ asset.depth }} m{% else %}-{% endif %}</span></div>
<div class="field-edit d-none"> <div class="field-edit d-none">
<input type="number" step="0.1" class="form-control form-control-sm" value="{{ asset.depth|default:'' }}"> <input type="number" step="0.1" inputmode="decimal" class="form-control form-control-sm" value="{{ asset.depth|default:'' }}">
</div> </div>
</td> </td>
</tr> </tr>
@ -764,7 +794,7 @@
</span> </span>
</div> </div>
<div class="field-edit d-none"> <div class="field-edit d-none">
<input type="number" step="1" min="1" max="20" class="form-control form-control-sm" value="{{ asset.pruning_frequency_years|default:'' }}" placeholder="{% translate 'Nombre d années' %}"> <input type="number" step="1" min="1" max="20" inputmode="numeric" class="form-control form-control-sm" value="{{ asset.pruning_frequency_years|default:'' }}" placeholder="{% translate 'Nombre d années' %}">
</div> </div>
</td> </td>
</tr> </tr>

View file

@ -161,7 +161,7 @@ def get_asset_edit_context(request, asset, content_type):
pass pass
# Get thematic code for URL construction # Get thematic code for URL construction
# Priority: asset.category > asset.model.category > None # Priority: asset.category > asset.model.category > _get_asset_thematic > None
thematic_code = None thematic_code = None
thematic = None thematic = None
_thematic_source = None _thematic_source = None
@ -169,6 +169,9 @@ def get_asset_edit_context(request, asset, content_type):
_thematic_source = asset.category.thematic _thematic_source = asset.category.thematic
elif hasattr(asset, 'model') and asset.model and getattr(asset.model, 'category', None) and asset.model.category.thematic: elif hasattr(asset, 'model') and asset.model and getattr(asset.model, 'category', None) and asset.model.category.thematic:
_thematic_source = asset.model.category.thematic _thematic_source = asset.model.category.thematic
else:
from assets.permissions import _get_asset_thematic
_thematic_source = _get_asset_thematic(asset)
if _thematic_source: if _thematic_source:
thematic_code = _thematic_source.code thematic_code = _thematic_source.code
thematic = _thematic_source thematic = _thematic_source
@ -246,8 +249,28 @@ def locations_geojson(request):
pass pass
def mobile_asset_detail(request, thematic_code, asset_model, asset_id): def mobile_asset_detail(request, *args, **kwargs):
"""Mobile-friendly asset detail using the generic template with the mobile base.""" """
Mobile-friendly asset detail using specific or generic template with the mobile base.
Aligns permissions strictly with desktop criteria (can_view_asset, thematic access).
"""
from assets.permissions import can_view_asset, _get_asset_thematic
from django.core.exceptions import PermissionDenied
# Handle both keyword arguments and positional arguments
thematic_code = kwargs.get('thematic_code')
asset_model = kwargs.get('asset_model')
asset_id = kwargs.get('asset_id')
if not asset_model and len(args) >= 2:
if len(args) >= 3:
thematic_code = args[0]
asset_model = args[1]
asset_id = args[2]
else:
asset_model = args[0]
asset_id = args[1]
try: try:
model_name = asset_model.lower().replace('_', '') model_name = asset_model.lower().replace('_', '')
content_type = ContentType.objects.get(app_label='assets', model=model_name) content_type = ContentType.objects.get(app_label='assets', model=model_name)
@ -257,14 +280,26 @@ def mobile_asset_detail(request, thematic_code, asset_model, asset_id):
asset = get_object_or_404(model_class, id=asset_id) asset = get_object_or_404(model_class, id=asset_id)
# Permission gate based on the provided thematic code # Permission check: identical criteria to desktop (roles, instances, contracts)
permission_check = check_thematic_access(thematic_code) if not can_view_asset(request.user, asset):
result = permission_check(lambda req, *a, **kw: None)(request) raise PermissionDenied(_("Vous n'avez pas la permission de consulter cet asset."))
if result is not None:
return result # Deduce thematic if omitted
if not thematic_code:
thematic = _get_asset_thematic(asset)
thematic_code = thematic.code if thematic else None
# Permission gate based on the thematic code
if thematic_code:
permission_check = check_thematic_access(thematic_code)
result = permission_check(lambda req, *a, **kw: None)(request)
if result is not None:
return result
template = select_template([ template = select_template([
f"assets/{asset_model}_detail_mobile.html", f"assets/{asset_model}_detail_mobile.html",
f"assets/{asset_model}_detail.html",
"assets/detail_generic_mobile.html",
"assets/detail_generic.html", "assets/detail_generic.html",
]) ])
@ -279,15 +314,28 @@ def mobile_asset_detail(request, thematic_code, asset_model, asset_id):
match = re.search(r'/interventions/(\d+)', referer) match = re.search(r'/interventions/(\d+)', referer)
if match: if match:
back_url = reverse('mobile:intervention_detail_mobile', args=[match.group(1)]) back_url = reverse('mobile:intervention_detail_mobile', args=[match.group(1)])
elif '/mobile/assets/' in referer:
back_url = reverse('mobile:mobile_assets_index')
if not back_url:
try:
back_url = reverse('mobile:mobile_assets_index')
except Exception:
back_url = '/mobile/'
context = { context = get_asset_edit_context(request, asset, content_type)
context.update({
"asset": asset, "asset": asset,
"content_type": content_type, "content_type": content_type,
"base_template": "mobile/mobile_base.html", "base_template": "mobile/mobile_base.html",
"mobile_view": True, "mobile_view": True,
"is_mobile": True,
"back_url": back_url, "back_url": back_url,
} "thematic_code": thematic_code or context.get("thematic_code"),
context.update(get_asset_edit_context(request, asset, content_type)) "asset_model": asset_model,
})
if thematic_code and not context.get("thematic"):
from common.models import Thematic
context["thematic"] = Thematic.objects.filter(code=thematic_code).first()
return render(request, template.template.name, context) return render(request, template.template.name, context)

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-13 09:05+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -20,7 +20,7 @@ msgstr ""
#: authorizations/admin.py:28 #: authorizations/admin.py:28
#: authorizations/templates/authorizations/authorization_detail.html:73 #: authorizations/templates/authorizations/authorization_detail.html:73
#: authorizations/templates/authorizations/authorization_list.html:73 #: authorizations/templates/authorizations/authorization_list.html:73
#: authorizations/templates/authorizations/authorization_list.html:139 #: authorizations/templates/authorizations/authorization_list.html:178
msgid "Type" msgid "Type"
msgstr "Type" msgstr "Type"
@ -53,10 +53,18 @@ msgstr "Include archives (> 2 years)"
msgid "Type d'autorisation" msgid "Type d'autorisation"
msgstr "Authorisation type" msgstr "Authorisation type"
#: authorizations/forms.py:140 #: authorizations/forms.py:138 authorizations/models.py:64
msgid "Agent traitant"
msgstr "Handling agent"
#: authorizations/forms.py:145
msgid "Recherche…" msgid "Recherche…"
msgstr "Search…" msgstr "Search…"
#: authorizations/forms.py:163
msgid "Non assigné"
msgstr ""
#: authorizations/models.py:17 #: authorizations/models.py:17
msgid "Affichage (panneau, ...)" msgid "Affichage (panneau, ...)"
msgstr "Display (panel, ...)" msgstr "Display (panel, ...)"
@ -158,10 +166,6 @@ msgstr "Address"
msgid "Entreprise" msgid "Entreprise"
msgstr "Company" msgstr "Company"
#: authorizations/models.py:64
msgid "Agent traitant"
msgstr "Handling agent"
#: authorizations/models.py:66 #: authorizations/models.py:66
msgid "Commentaire" msgid "Commentaire"
msgstr "Comment" msgstr "Comment"
@ -173,7 +177,7 @@ msgstr "Location – Address"
#: authorizations/models.py:68 #: authorizations/models.py:68
#: authorizations/templates/authorizations/authorization_detail.html:95 #: authorizations/templates/authorizations/authorization_detail.html:95
#: authorizations/templates/authorizations/authorization_detail.html:228 #: authorizations/templates/authorizations/authorization_detail.html:228
#: authorizations/templates/authorizations/authorization_list.html:142 #: authorizations/templates/authorizations/authorization_list.html:182
msgid "Localisation" msgid "Localisation"
msgstr "Location" msgstr "Location"
@ -254,12 +258,12 @@ msgid "Informations générales"
msgstr "General information" msgstr "General information"
#: authorizations/templates/authorizations/authorization_detail.html:55 #: authorizations/templates/authorizations/authorization_detail.html:55
#: authorizations/templates/authorizations/authorization_list.html:138 #: authorizations/templates/authorizations/authorization_list.html:177
msgid "Code" msgid "Code"
msgstr "Code" msgstr "Code"
#: authorizations/templates/authorizations/authorization_detail.html:58 #: authorizations/templates/authorizations/authorization_detail.html:58
#: authorizations/templates/authorizations/authorization_list.html:140 #: authorizations/templates/authorizations/authorization_list.html:179
msgid "Statut" msgid "Statut"
msgstr "Status" msgstr "Status"
@ -272,11 +276,13 @@ msgid "Mis à jour"
msgstr "Updated" msgstr "Updated"
#: authorizations/templates/authorizations/authorization_detail.html:83 #: authorizations/templates/authorizations/authorization_detail.html:83
#: authorizations/templates/authorizations/authorization_list.html:112
#: authorizations/templates/authorizations/authorization_list.html:181
msgid "Agent" msgid "Agent"
msgstr "Agent" msgstr "Agent"
#: authorizations/templates/authorizations/authorization_detail.html:102 #: authorizations/templates/authorizations/authorization_detail.html:102
#: authorizations/templates/authorizations/authorization_list.html:141 #: authorizations/templates/authorizations/authorization_list.html:180
msgid "Demandeur" msgid "Demandeur"
msgstr "Applicant" msgstr "Applicant"
@ -347,7 +353,7 @@ msgid "Recherche"
msgstr "Search" msgstr "Search"
#: authorizations/templates/authorizations/authorization_list.html:82 #: authorizations/templates/authorizations/authorization_list.html:82
#: authorizations/templates/authorizations/authorization_list.html:207 #: authorizations/templates/authorizations/authorization_list.html:249
msgid "Tous les types" msgid "Tous les types"
msgstr "All types" msgstr "All types"
@ -356,7 +362,8 @@ msgid "Rechercher un type..."
msgstr "Search" msgstr "Search"
#: authorizations/templates/authorizations/authorization_list.html:92 #: authorizations/templates/authorizations/authorization_list.html:92
#: authorizations/templates/authorizations/new_authorization_default.html:226 #: authorizations/templates/authorizations/authorization_list.html:131
#: authorizations/templates/authorizations/new_authorization_default.html:223
msgid "Effacer" msgid "Effacer"
msgstr "Clear" msgstr "Clear"
@ -365,21 +372,38 @@ msgid "Aucun type correspondant"
msgstr "Aucun type correspondant" msgstr "Aucun type correspondant"
#: authorizations/templates/authorizations/authorization_list.html:121 #: authorizations/templates/authorizations/authorization_list.html:121
#: authorizations/templates/authorizations/authorization_list.html:326
msgid "Tous les agents"
msgstr "All agents"
#: authorizations/templates/authorizations/authorization_list.html:128
msgid "Rechercher un agent..."
msgstr "Search an agent..."
#: authorizations/templates/authorizations/authorization_list.html:145
msgid "Aucun agent correspondant"
msgstr "No matching agent"
#: authorizations/templates/authorizations/authorization_list.html:160
msgid "Filtrer" msgid "Filtrer"
msgstr "Filter" msgstr "Filter"
#: authorizations/templates/authorizations/authorization_list.html:143 #: authorizations/templates/authorizations/authorization_list.html:183
msgid "Date de création" msgid "Date de création"
msgstr "Creation date" msgstr "Creation date"
#: authorizations/templates/authorizations/authorization_list.html:177 #: authorizations/templates/authorizations/authorization_list.html:218
msgid "Aucune demande trouvée." msgid "Aucune demande trouvée."
msgstr "No request found." msgstr "No request found."
#: authorizations/templates/authorizations/authorization_list.html:215 #: authorizations/templates/authorizations/authorization_list.html:257
msgid "types sélectionnés" msgid "types sélectionnés"
msgstr "" msgstr ""
#: authorizations/templates/authorizations/authorization_list.html:334
msgid "agents sélectionnés"
msgstr ""
#: authorizations/templates/authorizations/authorization_success.html:9 #: authorizations/templates/authorizations/authorization_success.html:9
#: authorizations/templates/authorizations/authorization_success.html:37 #: authorizations/templates/authorizations/authorization_success.html:37
msgid "Demande enregistrée" msgid "Demande enregistrée"
@ -391,7 +415,7 @@ msgstr "Request saved"
#: authorizations/templates/authorizations/email_verify_code.html:35 #: authorizations/templates/authorizations/email_verify_code.html:35
#: authorizations/templates/authorizations/new_authorization_default.html:9 #: authorizations/templates/authorizations/new_authorization_default.html:9
#: authorizations/templates/authorizations/new_authorization_default.html:99 #: authorizations/templates/authorizations/new_authorization_default.html:99
#: authorizations/templates/authorizations/new_authorization_default.html:376 #: authorizations/templates/authorizations/new_authorization_default.html:373
msgid "Demande d'occupation de l'espace public" msgid "Demande d'occupation de l'espace public"
msgstr "Public space occupation request" msgstr "Public space occupation request"
@ -579,11 +603,8 @@ msgstr "Location (draw a polygon to indicate the area concerned)"
msgid "Dessiner un polygone" msgid "Dessiner un polygone"
msgstr "Draw a polygon" msgstr "Draw a polygon"
#: authorizations/templates/authorizations/new_authorization_default.html:223 #: authorizations/templates/authorizations/new_authorization_default.html:228
msgid "Terminer" #: authorizations/templates/authorizations/new_authorization_default.html:578
msgstr "Finish"
#: authorizations/templates/authorizations/new_authorization_default.html:231
msgid "" msgid ""
"Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter " "Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter "
"des sommets. Cliquez sur le premier sommet pour fermer le polygone." "des sommets. Cliquez sur le premier sommet pour fermer le polygone."
@ -591,87 +612,87 @@ msgstr ""
"Click « Draw a polygon » then click on the map to add vertices. Click on the" "Click « Draw a polygon » then click on the map to add vertices. Click on the"
" first vertex to close the polygon." " first vertex to close the polygon."
#: authorizations/templates/authorizations/new_authorization_default.html:245 #: authorizations/templates/authorizations/new_authorization_default.html:242
msgid "Vos coordonnées" msgid "Vos coordonnées"
msgstr "Your contact details" msgstr "Your contact details"
#: authorizations/templates/authorizations/new_authorization_default.html:278 #: authorizations/templates/authorizations/new_authorization_default.html:275
#: authorizations/templates/authorizations/new_authorization_default.html:317 #: authorizations/templates/authorizations/new_authorization_default.html:314
#: authorizations/templates/authorizations/new_authorization_default.html:337 #: authorizations/templates/authorizations/new_authorization_default.html:334
msgid "optionnel" msgid "optionnel"
msgstr "optional" msgstr "optional"
#: authorizations/templates/authorizations/new_authorization_default.html:292 #: authorizations/templates/authorizations/new_authorization_default.html:289
msgid "Date(s) d'occupation" msgid "Date(s) d'occupation"
msgstr "Occupation date(s)" msgstr "Occupation date(s)"
#: authorizations/templates/authorizations/new_authorization_default.html:298 #: authorizations/templates/authorizations/new_authorization_default.html:295
msgid "Veuillez indiquer au moins une date de début d'occupation." msgid "Veuillez indiquer au moins une date de début d'occupation."
msgstr "Please provide at least one occupation start date." msgstr "Please provide at least one occupation start date."
#: authorizations/templates/authorizations/new_authorization_default.html:328 #: authorizations/templates/authorizations/new_authorization_default.html:325
msgid "Ajouter une date" msgid "Ajouter une date"
msgstr "Add a date" msgstr "Add a date"
#: authorizations/templates/authorizations/new_authorization_default.html:336 #: authorizations/templates/authorizations/new_authorization_default.html:333
msgid "Document(s) à joindre" msgid "Document(s) à joindre"
msgstr "Document(s) to attach" msgstr "Document(s) to attach"
#: authorizations/templates/authorizations/new_authorization_default.html:360 #: authorizations/templates/authorizations/new_authorization_default.html:357
msgid "Ajouter un document" msgid "Ajouter un document"
msgstr "Add a document" msgstr "Add a document"
#: authorizations/templates/authorizations/new_authorization_default.html:367 #: authorizations/templates/authorizations/new_authorization_default.html:364
msgid "Envoyer la demande" msgid "Envoyer la demande"
msgstr "Submit the request" msgstr "Submit the request"
#: authorizations/templates/authorizations/new_authorization_default.html:385 #: authorizations/templates/authorizations/new_authorization_default.html:382
msgid "" msgid ""
"Veillez à joindre en annexe l'attestation d'assurance couvrant tous les " "Veillez à joindre en annexe l'attestation d'assurance couvrant tous les "
"risques." "risques."
msgstr "Please attach the insurance certificate covering all risks." msgstr "Please attach the insurance certificate covering all risks."
#: authorizations/templates/authorizations/new_authorization_default.html:386 #: authorizations/templates/authorizations/new_authorization_default.html:468
msgid "Veillez à joindre en annexe l'autorisation de la commune." #: authorizations/templates/authorizations/new_authorization_default.html:576
msgstr "Please attach the municipal authorisation."
#: authorizations/templates/authorizations/new_authorization_default.html:472
#: authorizations/templates/authorizations/new_authorization_default.html:521
msgid "Polygone enregistré. Cliquez sur « Dessiner » pour le redessiner." msgid "Polygone enregistré. Cliquez sur « Dessiner » pour le redessiner."
msgstr "Polygon saved. Click « Draw » to redraw it." msgstr "Polygon saved. Click « Draw » to redraw it."
#: authorizations/templates/authorizations/new_authorization_default.html:492 #: authorizations/templates/authorizations/new_authorization_default.html:496
msgid "Cliquer pour fermer le polygone" msgid "Cliquer pour fermer le polygone"
msgstr "Click to close the polygon" msgstr "Click to close the polygon"
#: authorizations/templates/authorizations/new_authorization_default.html:536 #: authorizations/templates/authorizations/new_authorization_default.html:584
msgid "" msgid "Cliquez sur la carte pour ajouter des sommets."
"Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter " msgstr "Click on the map to add vertices."
"des sommets."
msgstr "Click « Draw a polygon » then click on the map to add vertices."
#: authorizations/templates/authorizations/new_authorization_default.html:559 #: authorizations/templates/authorizations/new_authorization_default.html:586
msgid "" msgid ""
"Cliquez sur la carte pour ajouter des sommets. Cliquez sur le premier sommet" "Cliquez sur la carte pour ajouter des sommets. Cliquez sur le premier sommet"
" pour fermer le polygone." " pour fermer le polygone."
msgstr "" msgstr ""
#: authorizations/views.py:326 authorizations/views.py:375 #: authorizations/views.py:326 authorizations/views.py:390
msgid "Vous n'avez pas accès à cette vue." msgid "Vous n'avez pas accès à cette vue."
msgstr "" msgstr ""
#: authorizations/views.py:392 #: authorizations/views.py:407
msgid "La demande a été mise à jour avec succès." msgid "La demande a été mise à jour avec succès."
msgstr "" msgstr ""
#: authorizations/views.py:409 #: authorizations/views.py:424
msgid "Le document a été ajouté avec succès." msgid "Le document a été ajouté avec succès."
msgstr "" msgstr ""
#: authorizations/views.py:413 #: authorizations/views.py:428
msgid "Veuillez fournir une description et un fichier." msgid "Veuillez fournir une description et un fichier."
msgstr "Veuillez fournir une description et un fichier." msgstr "Veuillez fournir une description et un fichier."
#~ msgid "Terminer"
#~ msgstr "Finish"
#~ msgid "Veillez à joindre en annexe l'autorisation de la commune."
#~ msgstr "Please attach the municipal authorisation."
#~ msgid "Autorisation de voirie" #~ msgid "Autorisation de voirie"
#~ msgstr "Road authorisation" #~ msgstr "Road authorisation"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -20,7 +20,7 @@ msgstr ""
#: authorizations/admin.py:28 #: authorizations/admin.py:28
#: authorizations/templates/authorizations/authorization_detail.html:73 #: authorizations/templates/authorizations/authorization_detail.html:73
#: authorizations/templates/authorizations/authorization_list.html:73 #: authorizations/templates/authorizations/authorization_list.html:73
#: authorizations/templates/authorizations/authorization_list.html:139 #: authorizations/templates/authorizations/authorization_list.html:178
msgid "Type" msgid "Type"
msgstr "Type" msgstr "Type"
@ -53,10 +53,18 @@ msgstr "Inclure les archives (> 2 ans)"
msgid "Type d'autorisation" msgid "Type d'autorisation"
msgstr "Type d'autorisation" msgstr "Type d'autorisation"
#: authorizations/forms.py:140 #: authorizations/forms.py:138 authorizations/models.py:64
msgid "Agent traitant"
msgstr "Agent traitant"
#: authorizations/forms.py:145
msgid "Recherche…" msgid "Recherche…"
msgstr "Recherche…" msgstr "Recherche…"
#: authorizations/forms.py:163
msgid "Non assigné"
msgstr ""
#: authorizations/models.py:17 #: authorizations/models.py:17
msgid "Affichage (panneau, ...)" msgid "Affichage (panneau, ...)"
msgstr "Affichage (panneau, ...)" msgstr "Affichage (panneau, ...)"
@ -158,10 +166,6 @@ msgstr "Adresse"
msgid "Entreprise" msgid "Entreprise"
msgstr "Entreprise" msgstr "Entreprise"
#: authorizations/models.py:64
msgid "Agent traitant"
msgstr "Agent traitant"
#: authorizations/models.py:66 #: authorizations/models.py:66
msgid "Commentaire" msgid "Commentaire"
msgstr "Commentaire" msgstr "Commentaire"
@ -173,7 +177,7 @@ msgstr "Localisation – Adresse"
#: authorizations/models.py:68 #: authorizations/models.py:68
#: authorizations/templates/authorizations/authorization_detail.html:95 #: authorizations/templates/authorizations/authorization_detail.html:95
#: authorizations/templates/authorizations/authorization_detail.html:228 #: authorizations/templates/authorizations/authorization_detail.html:228
#: authorizations/templates/authorizations/authorization_list.html:142 #: authorizations/templates/authorizations/authorization_list.html:182
msgid "Localisation" msgid "Localisation"
msgstr "Localisation" msgstr "Localisation"
@ -254,12 +258,12 @@ msgid "Informations générales"
msgstr "Informations générales" msgstr "Informations générales"
#: authorizations/templates/authorizations/authorization_detail.html:55 #: authorizations/templates/authorizations/authorization_detail.html:55
#: authorizations/templates/authorizations/authorization_list.html:138 #: authorizations/templates/authorizations/authorization_list.html:177
msgid "Code" msgid "Code"
msgstr "Code" msgstr "Code"
#: authorizations/templates/authorizations/authorization_detail.html:58 #: authorizations/templates/authorizations/authorization_detail.html:58
#: authorizations/templates/authorizations/authorization_list.html:140 #: authorizations/templates/authorizations/authorization_list.html:179
msgid "Statut" msgid "Statut"
msgstr "Statut" msgstr "Statut"
@ -272,11 +276,13 @@ msgid "Mis à jour"
msgstr "Mis à jour" msgstr "Mis à jour"
#: authorizations/templates/authorizations/authorization_detail.html:83 #: authorizations/templates/authorizations/authorization_detail.html:83
#: authorizations/templates/authorizations/authorization_list.html:112
#: authorizations/templates/authorizations/authorization_list.html:181
msgid "Agent" msgid "Agent"
msgstr "Agent" msgstr "Agent"
#: authorizations/templates/authorizations/authorization_detail.html:102 #: authorizations/templates/authorizations/authorization_detail.html:102
#: authorizations/templates/authorizations/authorization_list.html:141 #: authorizations/templates/authorizations/authorization_list.html:180
msgid "Demandeur" msgid "Demandeur"
msgstr "Demandeur" msgstr "Demandeur"
@ -347,7 +353,7 @@ msgid "Recherche"
msgstr "Recherche" msgstr "Recherche"
#: authorizations/templates/authorizations/authorization_list.html:82 #: authorizations/templates/authorizations/authorization_list.html:82
#: authorizations/templates/authorizations/authorization_list.html:207 #: authorizations/templates/authorizations/authorization_list.html:249
msgid "Tous les types" msgid "Tous les types"
msgstr "Tous les types" msgstr "Tous les types"
@ -356,7 +362,8 @@ msgid "Rechercher un type..."
msgstr "Rechercher un type..." msgstr "Rechercher un type..."
#: authorizations/templates/authorizations/authorization_list.html:92 #: authorizations/templates/authorizations/authorization_list.html:92
#: authorizations/templates/authorizations/new_authorization_default.html:226 #: authorizations/templates/authorizations/authorization_list.html:131
#: authorizations/templates/authorizations/new_authorization_default.html:223
msgid "Effacer" msgid "Effacer"
msgstr "Effacer" msgstr "Effacer"
@ -365,21 +372,38 @@ msgid "Aucun type correspondant"
msgstr "Aucun type correspondant" msgstr "Aucun type correspondant"
#: authorizations/templates/authorizations/authorization_list.html:121 #: authorizations/templates/authorizations/authorization_list.html:121
#: authorizations/templates/authorizations/authorization_list.html:326
msgid "Tous les agents"
msgstr "Tous les agents"
#: authorizations/templates/authorizations/authorization_list.html:128
msgid "Rechercher un agent..."
msgstr "Rechercher un agent..."
#: authorizations/templates/authorizations/authorization_list.html:145
msgid "Aucun agent correspondant"
msgstr "Aucun agent correspondant"
#: authorizations/templates/authorizations/authorization_list.html:160
msgid "Filtrer" msgid "Filtrer"
msgstr "Filtrer" msgstr "Filtrer"
#: authorizations/templates/authorizations/authorization_list.html:143 #: authorizations/templates/authorizations/authorization_list.html:183
msgid "Date de création" msgid "Date de création"
msgstr "Date de création" msgstr "Date de création"
#: authorizations/templates/authorizations/authorization_list.html:177 #: authorizations/templates/authorizations/authorization_list.html:218
msgid "Aucune demande trouvée." msgid "Aucune demande trouvée."
msgstr "Aucune demande trouvée." msgstr "Aucune demande trouvée."
#: authorizations/templates/authorizations/authorization_list.html:215 #: authorizations/templates/authorizations/authorization_list.html:257
msgid "types sélectionnés" msgid "types sélectionnés"
msgstr "types sélectionnés" msgstr "types sélectionnés"
#: authorizations/templates/authorizations/authorization_list.html:334
msgid "agents sélectionnés"
msgstr "agents sélectionnés"
#: authorizations/templates/authorizations/authorization_success.html:9 #: authorizations/templates/authorizations/authorization_success.html:9
#: authorizations/templates/authorizations/authorization_success.html:37 #: authorizations/templates/authorizations/authorization_success.html:37
msgid "Demande enregistrée" msgid "Demande enregistrée"
@ -391,7 +415,7 @@ msgstr "Demande enregistrée"
#: authorizations/templates/authorizations/email_verify_code.html:35 #: authorizations/templates/authorizations/email_verify_code.html:35
#: authorizations/templates/authorizations/new_authorization_default.html:9 #: authorizations/templates/authorizations/new_authorization_default.html:9
#: authorizations/templates/authorizations/new_authorization_default.html:99 #: authorizations/templates/authorizations/new_authorization_default.html:99
#: authorizations/templates/authorizations/new_authorization_default.html:376 #: authorizations/templates/authorizations/new_authorization_default.html:373
msgid "Demande d'occupation de l'espace public" msgid "Demande d'occupation de l'espace public"
msgstr "Demande d'occupation de l'espace public" msgstr "Demande d'occupation de l'espace public"
@ -591,11 +615,8 @@ msgstr "Localisation (dessiner un polygone pour indiquer la zone concernée)"
msgid "Dessiner un polygone" msgid "Dessiner un polygone"
msgstr "Dessiner un polygone" msgstr "Dessiner un polygone"
#: authorizations/templates/authorizations/new_authorization_default.html:223 #: authorizations/templates/authorizations/new_authorization_default.html:228
msgid "Terminer" #: authorizations/templates/authorizations/new_authorization_default.html:578
msgstr "Terminer"
#: authorizations/templates/authorizations/new_authorization_default.html:231
msgid "" msgid ""
"Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter " "Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter "
"des sommets. Cliquez sur le premier sommet pour fermer le polygone." "des sommets. Cliquez sur le premier sommet pour fermer le polygone."
@ -603,41 +624,41 @@ msgstr ""
"Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter " "Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter "
"des sommets. Cliquez sur le premier sommet pour fermer le polygone." "des sommets. Cliquez sur le premier sommet pour fermer le polygone."
#: authorizations/templates/authorizations/new_authorization_default.html:245 #: authorizations/templates/authorizations/new_authorization_default.html:242
msgid "Vos coordonnées" msgid "Vos coordonnées"
msgstr "Vos coordonnées" msgstr "Vos coordonnées"
#: authorizations/templates/authorizations/new_authorization_default.html:278 #: authorizations/templates/authorizations/new_authorization_default.html:275
#: authorizations/templates/authorizations/new_authorization_default.html:317 #: authorizations/templates/authorizations/new_authorization_default.html:314
#: authorizations/templates/authorizations/new_authorization_default.html:337 #: authorizations/templates/authorizations/new_authorization_default.html:334
msgid "optionnel" msgid "optionnel"
msgstr "optionnel" msgstr "optionnel"
#: authorizations/templates/authorizations/new_authorization_default.html:292 #: authorizations/templates/authorizations/new_authorization_default.html:289
msgid "Date(s) d'occupation" msgid "Date(s) d'occupation"
msgstr "Date(s) d'occupation" msgstr "Date(s) d'occupation"
#: authorizations/templates/authorizations/new_authorization_default.html:298 #: authorizations/templates/authorizations/new_authorization_default.html:295
msgid "Veuillez indiquer au moins une date de début d'occupation." msgid "Veuillez indiquer au moins une date de début d'occupation."
msgstr "Veuillez indiquer au moins une date de début d'occupation." msgstr "Veuillez indiquer au moins une date de début d'occupation."
#: authorizations/templates/authorizations/new_authorization_default.html:328 #: authorizations/templates/authorizations/new_authorization_default.html:325
msgid "Ajouter une date" msgid "Ajouter une date"
msgstr "Ajouter une date" msgstr "Ajouter une date"
#: authorizations/templates/authorizations/new_authorization_default.html:336 #: authorizations/templates/authorizations/new_authorization_default.html:333
msgid "Document(s) à joindre" msgid "Document(s) à joindre"
msgstr "Document(s) à joindre" msgstr "Document(s) à joindre"
#: authorizations/templates/authorizations/new_authorization_default.html:360 #: authorizations/templates/authorizations/new_authorization_default.html:357
msgid "Ajouter un document" msgid "Ajouter un document"
msgstr "Ajouter un document" msgstr "Ajouter un document"
#: authorizations/templates/authorizations/new_authorization_default.html:367 #: authorizations/templates/authorizations/new_authorization_default.html:364
msgid "Envoyer la demande" msgid "Envoyer la demande"
msgstr "Envoyer la demande" msgstr "Envoyer la demande"
#: authorizations/templates/authorizations/new_authorization_default.html:385 #: authorizations/templates/authorizations/new_authorization_default.html:382
msgid "" msgid ""
"Veillez à joindre en annexe l'attestation d'assurance couvrant tous les " "Veillez à joindre en annexe l'attestation d'assurance couvrant tous les "
"risques." "risques."
@ -645,28 +666,20 @@ msgstr ""
"Veillez à joindre en annexe l'attestation d'assurance couvrant tous les " "Veillez à joindre en annexe l'attestation d'assurance couvrant tous les "
"risques." "risques."
#: authorizations/templates/authorizations/new_authorization_default.html:386 #: authorizations/templates/authorizations/new_authorization_default.html:468
msgid "Veillez à joindre en annexe l'autorisation de la commune." #: authorizations/templates/authorizations/new_authorization_default.html:576
msgstr "Veillez à joindre en annexe l'autorisation de la commune."
#: authorizations/templates/authorizations/new_authorization_default.html:472
#: authorizations/templates/authorizations/new_authorization_default.html:521
msgid "Polygone enregistré. Cliquez sur « Dessiner » pour le redessiner." msgid "Polygone enregistré. Cliquez sur « Dessiner » pour le redessiner."
msgstr "Polygone enregistré. Cliquez sur « Dessiner » pour le redessiner." msgstr "Polygone enregistré. Cliquez sur « Dessiner » pour le redessiner."
#: authorizations/templates/authorizations/new_authorization_default.html:492 #: authorizations/templates/authorizations/new_authorization_default.html:496
msgid "Cliquer pour fermer le polygone" msgid "Cliquer pour fermer le polygone"
msgstr "Cliquer pour fermer le polygone" msgstr "Cliquer pour fermer le polygone"
#: authorizations/templates/authorizations/new_authorization_default.html:536 #: authorizations/templates/authorizations/new_authorization_default.html:584
msgid "" msgid "Cliquez sur la carte pour ajouter des sommets."
"Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter " msgstr "Cliquez sur la carte pour ajouter des sommets."
"des sommets."
msgstr ""
"Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter "
"des sommets."
#: authorizations/templates/authorizations/new_authorization_default.html:559 #: authorizations/templates/authorizations/new_authorization_default.html:586
msgid "" msgid ""
"Cliquez sur la carte pour ajouter des sommets. Cliquez sur le premier sommet" "Cliquez sur la carte pour ajouter des sommets. Cliquez sur le premier sommet"
" pour fermer le polygone." " pour fermer le polygone."
@ -674,22 +687,28 @@ msgstr ""
"Cliquez sur la carte pour ajouter des sommets. Cliquez sur le premier sommet" "Cliquez sur la carte pour ajouter des sommets. Cliquez sur le premier sommet"
" pour fermer le polygone." " pour fermer le polygone."
#: authorizations/views.py:326 authorizations/views.py:375 #: authorizations/views.py:326 authorizations/views.py:390
msgid "Vous n'avez pas accès à cette vue." msgid "Vous n'avez pas accès à cette vue."
msgstr "Vous n'avez pas accès à cette vue." msgstr "Vous n'avez pas accès à cette vue."
#: authorizations/views.py:392 #: authorizations/views.py:407
msgid "La demande a été mise à jour avec succès." msgid "La demande a été mise à jour avec succès."
msgstr "La demande a été mise à jour avec succès." msgstr "La demande a été mise à jour avec succès."
#: authorizations/views.py:409 #: authorizations/views.py:424
msgid "Le document a été ajouté avec succès." msgid "Le document a été ajouté avec succès."
msgstr "Le document a été ajouté avec succès." msgstr "Le document a été ajouté avec succès."
#: authorizations/views.py:413 #: authorizations/views.py:428
msgid "Veuillez fournir une description et un fichier." msgid "Veuillez fournir une description et un fichier."
msgstr "Veuillez fournir une description et un fichier." msgstr "Veuillez fournir une description et un fichier."
#~ msgid "Terminer"
#~ msgstr "Terminer"
#~ msgid "Veillez à joindre en annexe l'autorisation de la commune."
#~ msgstr "Veillez à joindre en annexe l'autorisation de la commune."
#~ msgid "Autorisation de voirie" #~ msgid "Autorisation de voirie"
#~ msgstr "Autorisation de voirie" #~ msgstr "Autorisation de voirie"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -20,7 +20,7 @@ msgstr ""
#: authorizations/admin.py:28 #: authorizations/admin.py:28
#: authorizations/templates/authorizations/authorization_detail.html:73 #: authorizations/templates/authorizations/authorization_detail.html:73
#: authorizations/templates/authorizations/authorization_list.html:73 #: authorizations/templates/authorizations/authorization_list.html:73
#: authorizations/templates/authorizations/authorization_list.html:139 #: authorizations/templates/authorizations/authorization_list.html:178
msgid "Type" msgid "Type"
msgstr "Type" msgstr "Type"
@ -53,10 +53,18 @@ msgstr "Archieven weergeven (> 2 jaar)"
msgid "Type d'autorisation" msgid "Type d'autorisation"
msgstr "Type vergunning" msgstr "Type vergunning"
#: authorizations/forms.py:140 #: authorizations/forms.py:138 authorizations/models.py:64
msgid "Agent traitant"
msgstr "Behandelende ambtenaar"
#: authorizations/forms.py:145
msgid "Recherche…" msgid "Recherche…"
msgstr "Zoeken…" msgstr "Zoeken…"
#: authorizations/forms.py:163
msgid "Non assigné"
msgstr ""
#: authorizations/models.py:17 #: authorizations/models.py:17
msgid "Affichage (panneau, ...)" msgid "Affichage (panneau, ...)"
msgstr "Affichage (bord…)" msgstr "Affichage (bord…)"
@ -158,10 +166,6 @@ msgstr "Adres"
msgid "Entreprise" msgid "Entreprise"
msgstr "Onderneming" msgstr "Onderneming"
#: authorizations/models.py:64
msgid "Agent traitant"
msgstr "Behandelende ambtenaar"
#: authorizations/models.py:66 #: authorizations/models.py:66
msgid "Commentaire" msgid "Commentaire"
msgstr "Opmerking" msgstr "Opmerking"
@ -173,7 +177,7 @@ msgstr "Locatie – Adres"
#: authorizations/models.py:68 #: authorizations/models.py:68
#: authorizations/templates/authorizations/authorization_detail.html:95 #: authorizations/templates/authorizations/authorization_detail.html:95
#: authorizations/templates/authorizations/authorization_detail.html:228 #: authorizations/templates/authorizations/authorization_detail.html:228
#: authorizations/templates/authorizations/authorization_list.html:142 #: authorizations/templates/authorizations/authorization_list.html:182
msgid "Localisation" msgid "Localisation"
msgstr "Locatie" msgstr "Locatie"
@ -254,12 +258,12 @@ msgid "Informations générales"
msgstr "Algemene informatie" msgstr "Algemene informatie"
#: authorizations/templates/authorizations/authorization_detail.html:55 #: authorizations/templates/authorizations/authorization_detail.html:55
#: authorizations/templates/authorizations/authorization_list.html:138 #: authorizations/templates/authorizations/authorization_list.html:177
msgid "Code" msgid "Code"
msgstr "Code" msgstr "Code"
#: authorizations/templates/authorizations/authorization_detail.html:58 #: authorizations/templates/authorizations/authorization_detail.html:58
#: authorizations/templates/authorizations/authorization_list.html:140 #: authorizations/templates/authorizations/authorization_list.html:179
msgid "Statut" msgid "Statut"
msgstr "Status" msgstr "Status"
@ -272,11 +276,13 @@ msgid "Mis à jour"
msgstr "Bijgewerkt" msgstr "Bijgewerkt"
#: authorizations/templates/authorizations/authorization_detail.html:83 #: authorizations/templates/authorizations/authorization_detail.html:83
#: authorizations/templates/authorizations/authorization_list.html:112
#: authorizations/templates/authorizations/authorization_list.html:181
msgid "Agent" msgid "Agent"
msgstr "Ambtenaar" msgstr "Ambtenaar"
#: authorizations/templates/authorizations/authorization_detail.html:102 #: authorizations/templates/authorizations/authorization_detail.html:102
#: authorizations/templates/authorizations/authorization_list.html:141 #: authorizations/templates/authorizations/authorization_list.html:180
msgid "Demandeur" msgid "Demandeur"
msgstr "Aanvrager" msgstr "Aanvrager"
@ -348,7 +354,7 @@ msgid "Recherche"
msgstr "Zoeken" msgstr "Zoeken"
#: authorizations/templates/authorizations/authorization_list.html:82 #: authorizations/templates/authorizations/authorization_list.html:82
#: authorizations/templates/authorizations/authorization_list.html:207 #: authorizations/templates/authorizations/authorization_list.html:249
msgid "Tous les types" msgid "Tous les types"
msgstr "Alle types" msgstr "Alle types"
@ -357,7 +363,8 @@ msgid "Rechercher un type..."
msgstr "Zoeken" msgstr "Zoeken"
#: authorizations/templates/authorizations/authorization_list.html:92 #: authorizations/templates/authorizations/authorization_list.html:92
#: authorizations/templates/authorizations/new_authorization_default.html:226 #: authorizations/templates/authorizations/authorization_list.html:131
#: authorizations/templates/authorizations/new_authorization_default.html:223
msgid "Effacer" msgid "Effacer"
msgstr "Wissen" msgstr "Wissen"
@ -366,21 +373,38 @@ msgid "Aucun type correspondant"
msgstr "" msgstr ""
#: authorizations/templates/authorizations/authorization_list.html:121 #: authorizations/templates/authorizations/authorization_list.html:121
#: authorizations/templates/authorizations/authorization_list.html:326
msgid "Tous les agents"
msgstr "Alle agenten"
#: authorizations/templates/authorizations/authorization_list.html:128
msgid "Rechercher un agent..."
msgstr "Zoek een agent..."
#: authorizations/templates/authorizations/authorization_list.html:145
msgid "Aucun agent correspondant"
msgstr ""
#: authorizations/templates/authorizations/authorization_list.html:160
msgid "Filtrer" msgid "Filtrer"
msgstr "Filteren" msgstr "Filteren"
#: authorizations/templates/authorizations/authorization_list.html:143 #: authorizations/templates/authorizations/authorization_list.html:183
msgid "Date de création" msgid "Date de création"
msgstr "Aanmaakdatum" msgstr "Aanmaakdatum"
#: authorizations/templates/authorizations/authorization_list.html:177 #: authorizations/templates/authorizations/authorization_list.html:218
msgid "Aucune demande trouvée." msgid "Aucune demande trouvée."
msgstr "Geen aanvraag gevonden." msgstr "Geen aanvraag gevonden."
#: authorizations/templates/authorizations/authorization_list.html:215 #: authorizations/templates/authorizations/authorization_list.html:257
msgid "types sélectionnés" msgid "types sélectionnés"
msgstr "" msgstr ""
#: authorizations/templates/authorizations/authorization_list.html:334
msgid "agents sélectionnés"
msgstr ""
#: authorizations/templates/authorizations/authorization_success.html:9 #: authorizations/templates/authorizations/authorization_success.html:9
#: authorizations/templates/authorizations/authorization_success.html:37 #: authorizations/templates/authorizations/authorization_success.html:37
msgid "Demande enregistrée" msgid "Demande enregistrée"
@ -392,7 +416,7 @@ msgstr "Aanvraag opgeslagen"
#: authorizations/templates/authorizations/email_verify_code.html:35 #: authorizations/templates/authorizations/email_verify_code.html:35
#: authorizations/templates/authorizations/new_authorization_default.html:9 #: authorizations/templates/authorizations/new_authorization_default.html:9
#: authorizations/templates/authorizations/new_authorization_default.html:99 #: authorizations/templates/authorizations/new_authorization_default.html:99
#: authorizations/templates/authorizations/new_authorization_default.html:376 #: authorizations/templates/authorizations/new_authorization_default.html:373
msgid "Demande d'occupation de l'espace public" msgid "Demande d'occupation de l'espace public"
msgstr "Aanvraag ingebruikneming openbare ruimte" msgstr "Aanvraag ingebruikneming openbare ruimte"
@ -583,11 +607,8 @@ msgstr "Locatie (teken een veelhoek om de betrokken zone aan te geven)"
msgid "Dessiner un polygone" msgid "Dessiner un polygone"
msgstr "Veelhoek tekenen" msgstr "Veelhoek tekenen"
#: authorizations/templates/authorizations/new_authorization_default.html:223 #: authorizations/templates/authorizations/new_authorization_default.html:228
msgid "Terminer" #: authorizations/templates/authorizations/new_authorization_default.html:578
msgstr "Voltooien"
#: authorizations/templates/authorizations/new_authorization_default.html:231
msgid "" msgid ""
"Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter " "Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter "
"des sommets. Cliquez sur le premier sommet pour fermer le polygone." "des sommets. Cliquez sur le premier sommet pour fermer le polygone."
@ -595,89 +616,87 @@ msgstr ""
"Klik op « Veelhoek tekenen » en klik vervolgens op de kaart om hoekpunten " "Klik op « Veelhoek tekenen » en klik vervolgens op de kaart om hoekpunten "
"toe te voegen. Klik op het eerste hoekpunt om de veelhoek te sluiten." "toe te voegen. Klik op het eerste hoekpunt om de veelhoek te sluiten."
#: authorizations/templates/authorizations/new_authorization_default.html:245 #: authorizations/templates/authorizations/new_authorization_default.html:242
msgid "Vos coordonnées" msgid "Vos coordonnées"
msgstr "Uw contactgegevens" msgstr "Uw contactgegevens"
#: authorizations/templates/authorizations/new_authorization_default.html:278 #: authorizations/templates/authorizations/new_authorization_default.html:275
#: authorizations/templates/authorizations/new_authorization_default.html:317 #: authorizations/templates/authorizations/new_authorization_default.html:314
#: authorizations/templates/authorizations/new_authorization_default.html:337 #: authorizations/templates/authorizations/new_authorization_default.html:334
msgid "optionnel" msgid "optionnel"
msgstr "optioneel" msgstr "optioneel"
#: authorizations/templates/authorizations/new_authorization_default.html:292 #: authorizations/templates/authorizations/new_authorization_default.html:289
msgid "Date(s) d'occupation" msgid "Date(s) d'occupation"
msgstr "Bezettingsdatum(-data)" msgstr "Bezettingsdatum(-data)"
#: authorizations/templates/authorizations/new_authorization_default.html:298 #: authorizations/templates/authorizations/new_authorization_default.html:295
msgid "Veuillez indiquer au moins une date de début d'occupation." msgid "Veuillez indiquer au moins une date de début d'occupation."
msgstr "Geef ten minste één begindatum van de bezetting op." msgstr "Geef ten minste één begindatum van de bezetting op."
#: authorizations/templates/authorizations/new_authorization_default.html:328 #: authorizations/templates/authorizations/new_authorization_default.html:325
msgid "Ajouter une date" msgid "Ajouter une date"
msgstr "Een datum toevoegen" msgstr "Een datum toevoegen"
#: authorizations/templates/authorizations/new_authorization_default.html:336 #: authorizations/templates/authorizations/new_authorization_default.html:333
msgid "Document(s) à joindre" msgid "Document(s) à joindre"
msgstr "Bij te voegen document(en)" msgstr "Bij te voegen document(en)"
#: authorizations/templates/authorizations/new_authorization_default.html:360 #: authorizations/templates/authorizations/new_authorization_default.html:357
msgid "Ajouter un document" msgid "Ajouter un document"
msgstr "Een document toevoegen" msgstr "Een document toevoegen"
#: authorizations/templates/authorizations/new_authorization_default.html:367 #: authorizations/templates/authorizations/new_authorization_default.html:364
msgid "Envoyer la demande" msgid "Envoyer la demande"
msgstr "De aanvraag verzenden" msgstr "De aanvraag verzenden"
#: authorizations/templates/authorizations/new_authorization_default.html:385 #: authorizations/templates/authorizations/new_authorization_default.html:382
msgid "" msgid ""
"Veillez à joindre en annexe l'attestation d'assurance couvrant tous les " "Veillez à joindre en annexe l'attestation d'assurance couvrant tous les "
"risques." "risques."
msgstr "Voeg als bijlage het verzekeringsbewijs bij dat alle risico's dekt." msgstr "Voeg als bijlage het verzekeringsbewijs bij dat alle risico's dekt."
#: authorizations/templates/authorizations/new_authorization_default.html:386 #: authorizations/templates/authorizations/new_authorization_default.html:468
msgid "Veillez à joindre en annexe l'autorisation de la commune." #: authorizations/templates/authorizations/new_authorization_default.html:576
msgstr "Voeg als bijlage de gemeentelijke toestemming bij."
#: authorizations/templates/authorizations/new_authorization_default.html:472
#: authorizations/templates/authorizations/new_authorization_default.html:521
msgid "Polygone enregistré. Cliquez sur « Dessiner » pour le redessiner." msgid "Polygone enregistré. Cliquez sur « Dessiner » pour le redessiner."
msgstr "Veelhoek opgeslagen. Klik op « Tekenen » om hem opnieuw te tekenen." msgstr "Veelhoek opgeslagen. Klik op « Tekenen » om hem opnieuw te tekenen."
#: authorizations/templates/authorizations/new_authorization_default.html:492 #: authorizations/templates/authorizations/new_authorization_default.html:496
msgid "Cliquer pour fermer le polygone" msgid "Cliquer pour fermer le polygone"
msgstr "Klik om de veelhoek te sluiten" msgstr "Klik om de veelhoek te sluiten"
#: authorizations/templates/authorizations/new_authorization_default.html:536 #: authorizations/templates/authorizations/new_authorization_default.html:584
msgid "" msgid "Cliquez sur la carte pour ajouter des sommets."
"Cliquez sur « Dessiner un polygone » puis cliquez sur la carte pour ajouter " msgstr "Klik op de kaart om hoekpunten toe te voegen."
"des sommets."
msgstr ""
"Klik op « Veelhoek tekenen » en klik vervolgens op de kaart om hoekpunten "
"toe te voegen."
#: authorizations/templates/authorizations/new_authorization_default.html:559 #: authorizations/templates/authorizations/new_authorization_default.html:586
msgid "" msgid ""
"Cliquez sur la carte pour ajouter des sommets. Cliquez sur le premier sommet" "Cliquez sur la carte pour ajouter des sommets. Cliquez sur le premier sommet"
" pour fermer le polygone." " pour fermer le polygone."
msgstr "" msgstr ""
#: authorizations/views.py:326 authorizations/views.py:375 #: authorizations/views.py:326 authorizations/views.py:390
msgid "Vous n'avez pas accès à cette vue." msgid "Vous n'avez pas accès à cette vue."
msgstr "" msgstr ""
#: authorizations/views.py:392 #: authorizations/views.py:407
msgid "La demande a été mise à jour avec succès." msgid "La demande a été mise à jour avec succès."
msgstr "" msgstr ""
#: authorizations/views.py:409 #: authorizations/views.py:424
msgid "Le document a été ajouté avec succès." msgid "Le document a été ajouté avec succès."
msgstr "" msgstr ""
#: authorizations/views.py:413 #: authorizations/views.py:428
msgid "Veuillez fournir une description et un fichier." msgid "Veuillez fournir une description et un fichier."
msgstr "" msgstr ""
#~ msgid "Terminer"
#~ msgstr "Voltooien"
#~ msgid "Veillez à joindre en annexe l'autorisation de la commune."
#~ msgstr "Voeg als bijlage de gemeentelijke toestemming bij."
#~ msgid "Autorisation de voirie" #~ msgid "Autorisation de voirie"
#~ msgstr "Wegvergunning" #~ msgstr "Wegvergunning"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-13 09:05+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -135,7 +135,7 @@ msgstr "Choose language"
#: common/templates/common/account_info.html:42 #: common/templates/common/account_info.html:42
#: common/templates/common/account_info.html:88 #: common/templates/common/account_info.html:88
#: common/templates/common/components/document_viewer.html:201 #: common/templates/common/components/document_viewer.html:204
msgid "Fermer" msgid "Fermer"
msgstr "Close" msgstr "Close"
@ -161,56 +161,56 @@ msgstr "Sign out"
msgid "Retour" msgid "Retour"
msgstr "Back" msgstr "Back"
#: common/templates/common/components/document_viewer.html:40 #: common/templates/common/components/document_viewer.html:41
#: common/templates/common/components/document_viewer.html:50 #: common/templates/common/components/document_viewer.html:51
#: common/templates/common/components/document_viewer.html:61 #: common/templates/common/components/document_viewer.html:62
msgid "Supprimer" msgid "Supprimer"
msgstr "Delete" msgstr "Delete"
#: common/templates/common/components/document_viewer.html:75 #: common/templates/common/components/document_viewer.html:76
msgid "Copier vers une localisation ou un asset" msgid "Copier vers une localisation ou un asset"
msgstr "Copy to a location or an asset" msgstr "Copy to a location or an asset"
#: common/templates/common/components/document_viewer.html:99 #: common/templates/common/components/document_viewer.html:100
#: common/templates/common/components/document_viewer.html:154 #: common/templates/common/components/document_viewer.html:155
msgid "Historique des versions" msgid "Historique des versions"
msgstr "Version history" msgstr "Version history"
#: common/templates/common/components/document_viewer.html:156 #: common/templates/common/components/document_viewer.html:157
msgid "Historique" msgid "Historique"
msgstr "History" msgstr "History"
#: common/templates/common/components/document_viewer.html:180 #: common/templates/common/components/document_viewer.html:183
msgid "Visionneuse de documents" msgid "Visionneuse de documents"
msgstr "Document viewer" msgstr "Document viewer"
#: common/templates/common/components/document_viewer.html:188 #: common/templates/common/components/document_viewer.html:191
msgid "Ouvrir en pleine page" msgid "Ouvrir en pleine page"
msgstr "Open in full screen" msgstr "Open in full screen"
#: common/templates/common/components/document_viewer.html:195 #: common/templates/common/components/document_viewer.html:198
#: common/templates/common/components/document_viewer.html:196 #: common/templates/common/components/document_viewer.html:199
#: common/templates/common/components/document_viewer.html:261 #: common/templates/common/components/document_viewer.html:264
msgid "Télécharger" msgid "Télécharger"
msgstr "Download" msgstr "Download"
#: common/templates/common/components/document_viewer.html:229 #: common/templates/common/components/document_viewer.html:232
msgid "File truncated to the first 50 000 characters." msgid "File truncated to the first 50 000 characters."
msgstr "File truncated to the first 50,000 characters." msgstr "File truncated to the first 50,000 characters."
#: common/templates/common/components/document_viewer.html:245 #: common/templates/common/components/document_viewer.html:248
msgid "Only the first 200 rows are shown." msgid "Only the first 200 rows are shown."
msgstr "Only the first 200 rows are shown." msgstr "Only the first 200 rows are shown."
#: common/templates/common/components/document_viewer.html:301 #: common/templates/common/components/document_viewer.html:309
msgid "Précédent" msgid "Précédent"
msgstr "Previous" msgstr "Previous"
#: common/templates/common/components/document_viewer.html:309 #: common/templates/common/components/document_viewer.html:317
msgid "Suivant" msgid "Suivant"
msgstr "Next" msgstr "Next"
#: common/templates/common/components/document_viewer.html:432 #: common/templates/common/components/document_viewer.html:442
msgid "Aucun document associé" msgid "Aucun document associé"
msgstr "No associated document" msgstr "No associated document"
@ -310,128 +310,128 @@ msgstr ""
msgid "Réduire en panneau latéral" msgid "Réduire en panneau latéral"
msgstr "" msgstr ""
#: common/tests.py:48 common/tests.py:80 common/views.py:265 #: common/tests.py:49 common/tests.py:81 common/views.py:265
#: common/views.py:269 common/views.py:280 #: common/views.py:269 common/views.py:280
msgid "Vous ne pouvez pas accéder à ce compte." msgid "Vous ne pouvez pas accéder à ce compte."
msgstr "You cannot access this account." msgstr "You cannot access this account."
#: common/utils.py:133 #: common/utils.py:169
msgid "Belgique (PEB / Maison Communale / Sécurité PMR)" msgid "Belgique (PEB / Maison Communale / Sécurité PMR)"
msgstr "Belgium (PEB / Town Hall / PRM Safety)" msgstr "Belgium (PEB / Town Hall / PRM Safety)"
#: common/utils.py:134 #: common/utils.py:170
msgid "Hôtel de Ville / Maison Communale" msgid "Hôtel de Ville / Maison Communale"
msgstr "Town Hall / Municipal Building" msgstr "Town Hall / Municipal Building"
#: common/utils.py:135 #: common/utils.py:171
msgid "PEB" msgid "PEB"
msgstr "PEB" msgstr "PEB"
#: common/utils.py:136 #: common/utils.py:172
msgid "Performance Énergétique des Bâtiments (PEB)" msgid "Performance Énergétique des Bâtiments (PEB)"
msgstr "Building Energy Performance (PEB)" msgstr "Building Energy Performance (PEB)"
#: common/utils.py:137 #: common/utils.py:173
msgid "Bilan Carbone" msgid "Bilan Carbone"
msgstr "Carbon Footprint" msgstr "Carbon Footprint"
#: common/utils.py:138 #: common/utils.py:174
msgid "Émissions de Carbone / Bilan Énergétique" msgid "Émissions de Carbone / Bilan Énergétique"
msgstr "Carbon Emissions / Energy Audit" msgstr "Carbon Emissions / Energy Audit"
#: common/utils.py:139 #: common/utils.py:175
msgid "Accès public & PMR" msgid "Accès public & PMR"
msgstr "Public & PRM Access" msgstr "Public & PRM Access"
#: common/utils.py:140 #: common/utils.py:176
msgid "Accueil & Sécurité du Public (Normes PMR)" msgid "Accueil & Sécurité du Public (Normes PMR)"
msgstr "Public Reception & Safety (PRM Standards)" msgstr "Public Reception & Safety (PRM Standards)"
#: common/utils.py:141 #: common/utils.py:177
msgid "Catégorie d'accueil" msgid "Catégorie d'accueil"
msgstr "Reception Category" msgstr "Reception Category"
#: common/utils.py:142 #: common/utils.py:178
msgid "Type d'affectation" msgid "Type d'affectation"
msgstr "Assignment Type" msgstr "Assignment Type"
#: common/utils.py:145 #: common/utils.py:181
msgid "France (DPE / GES / Mairie / ERP)" msgid "France (DPE / GES / Mairie / ERP)"
msgstr "France (DPE / GHG / Town Hall / ERP)" msgstr "France (DPE / GHG / Town Hall / ERP)"
#: common/utils.py:146 #: common/utils.py:182
msgid "Mairie / Hôtel de Ville" msgid "Mairie / Hôtel de Ville"
msgstr "Town Hall / City Hall" msgstr "Town Hall / City Hall"
#: common/utils.py:147 #: common/utils.py:183
msgid "DPE" msgid "DPE"
msgstr "DPE" msgstr "DPE"
#: common/utils.py:148 #: common/utils.py:184
msgid "Diagnostic de Performance Énergétique (DPE)" msgid "Diagnostic de Performance Énergétique (DPE)"
msgstr "Energy Performance Certificate (DPE)" msgstr "Energy Performance Certificate (DPE)"
#: common/utils.py:149 #: common/utils.py:185
msgid "GES" msgid "GES"
msgstr "GHG" msgstr "GHG"
#: common/utils.py:150 #: common/utils.py:186
msgid "Émissions de Gaz à Effet de Serre (GES)" msgid "Émissions de Gaz à Effet de Serre (GES)"
msgstr "Greenhouse Gas Emissions (GHG)" msgstr "Greenhouse Gas Emissions (GHG)"
#: common/utils.py:151 #: common/utils.py:187
msgid "ERP" msgid "ERP"
msgstr "ERP" msgstr "ERP"
#: common/utils.py:152 #: common/utils.py:188
msgid "Établissement Recevant du Public (ERP)" msgid "Établissement Recevant du Public (ERP)"
msgstr "Public Reception Facility (ERP)" msgstr "Public Reception Facility (ERP)"
#: common/utils.py:153 #: common/utils.py:189
msgid "Catégorie ERP" msgid "Catégorie ERP"
msgstr "ERP Category" msgstr "ERP Category"
#: common/utils.py:154 #: common/utils.py:190
msgid "Type ERP" msgid "Type ERP"
msgstr "ERP Type" msgstr "ERP Type"
#: common/utils.py:157 #: common/utils.py:193
msgid "International / Générique" msgid "International / Générique"
msgstr "International / Generic" msgstr "International / Generic"
#: common/utils.py:158 #: common/utils.py:194
msgid "Bâtiment Administratif / Hôtel de Ville" msgid "Bâtiment Administratif / Hôtel de Ville"
msgstr "Administrative Building / Town Hall" msgstr "Administrative Building / Town Hall"
#: common/utils.py:159 #: common/utils.py:195
msgid "PEB / DPE" msgid "PEB / DPE"
msgstr "EPC / Energy Diag" msgstr "EPC / Energy Diag"
#: common/utils.py:160 #: common/utils.py:196
msgid "Performance Énergétique (PEB / DPE / EPC)" msgid "Performance Énergétique (PEB / DPE / EPC)"
msgstr "Energy Performance (PEB / DPE / EPC)" msgstr "Energy Performance (PEB / DPE / EPC)"
#: common/utils.py:161 #: common/utils.py:197
msgid "Émissions Carbone" msgid "Émissions Carbone"
msgstr "Carbon Emissions" msgstr "Carbon Emissions"
#: common/utils.py:162 #: common/utils.py:198
msgid "Bilan Carbone & Émissions" msgid "Bilan Carbone & Émissions"
msgstr "Carbon Footprint & Emissions" msgstr "Carbon Footprint & Emissions"
#: common/utils.py:163 #: common/utils.py:199
msgid "Accès Public" msgid "Accès Public"
msgstr "Public Access" msgstr "Public Access"
#: common/utils.py:164 #: common/utils.py:200
msgid "Bâtiment d'Accueil du Public (ERP / PMR)" msgid "Bâtiment d'Accueil du Public (ERP / PMR)"
msgstr "Public Reception Building (ERP / PRM)" msgstr "Public Reception Building (ERP / PRM)"
#: common/utils.py:165 #: common/utils.py:201
msgid "Capacité d'accueil" msgid "Capacité d'accueil"
msgstr "Reception Capacity" msgstr "Reception Capacity"
#: common/utils.py:166 #: common/utils.py:202
msgid "Type d'établissement" msgid "Type d'établissement"
msgstr "Establishment Type" msgstr "Establishment Type"
@ -464,8 +464,8 @@ msgid "Changement de compte effectué."
msgstr "Account switch completed." msgstr "Account switch completed."
#: common/views.py:304 common/views.py:329 common/views.py:356 #: common/views.py:304 common/views.py:329 common/views.py:356
#: common/views.py:397 common/views.py:428 common/views.py:457 #: common/views.py:397 common/views.py:428 common/views.py:459
#: common/views.py:524 common/views.py:551 #: common/views.py:488 common/views.py:555 common/views.py:582
msgid "Données invalides" msgid "Données invalides"
msgstr "Invalid data" msgstr "Invalid data"
@ -474,18 +474,19 @@ msgid "Layout invalide"
msgstr "Invalid layout" msgstr "Invalid layout"
#: common/views.py:316 common/views.py:341 common/views.py:383 #: common/views.py:316 common/views.py:341 common/views.py:383
#: common/views.py:414 common/views.py:445 common/views.py:511 #: common/views.py:414 common/views.py:445 common/views.py:476
#: common/views.py:537 common/views.py:568 common/views.py:586 #: common/views.py:542 common/views.py:568 common/views.py:599
#: common/views.py:617
msgid "Configuration utilisateur non trouvée" msgid "Configuration utilisateur non trouvée"
msgstr "User configuration not found" msgstr "User configuration not found"
#: common/views.py:363 common/views.py:403 common/views.py:434 #: common/views.py:363 common/views.py:403 common/views.py:434
#: common/views.py:557 #: common/views.py:465 common/views.py:588
msgid "Format de filtres invalide" msgid "Format de filtres invalide"
msgstr "Invalid filter format" msgstr "Invalid filter format"
#: common/views.py:367 common/views.py:406 common/views.py:437 #: common/views.py:367 common/views.py:406 common/views.py:437
#: common/views.py:560 #: common/views.py:468 common/views.py:591
msgid "Format de tri invalide" msgid "Format de tri invalide"
msgstr "Invalid sort format" msgstr "Invalid sort format"
@ -493,50 +494,50 @@ msgstr "Invalid sort format"
msgid "Format de colonnes invalide" msgid "Format de colonnes invalide"
msgstr "Invalid column format" msgstr "Invalid column format"
#: common/views.py:472 #: common/views.py:503
msgid "Format de thématiques invalide" msgid "Format de thématiques invalide"
msgstr "Invalid thematic format" msgstr "Invalid thematic format"
#: common/views.py:474 #: common/views.py:505
msgid "Format de catégories invalide" msgid "Format de catégories invalide"
msgstr "Invalid category format" msgstr "Invalid category format"
#: common/views.py:476 #: common/views.py:507
msgid "Format de modèles invalide" msgid "Format de modèles invalide"
msgstr "Invalid model format" msgstr "Invalid model format"
#: common/views.py:478 #: common/views.py:509
msgid "Format de filtres thématiques invalide" msgid "Format de filtres thématiques invalide"
msgstr "Invalid thematic filter format" msgstr "Invalid thematic filter format"
#: common/views.py:480 #: common/views.py:511
msgid "Format de colonnes visibles invalide" msgid "Format de colonnes visibles invalide"
msgstr "Invalid visible columns format" msgstr "Invalid visible columns format"
#: common/views.py:482 #: common/views.py:513
msgid "Format de filtre type invalide" msgid "Format de filtre type invalide"
msgstr "Invalid type filter format" msgstr "Invalid type filter format"
#: common/views.py:484 #: common/views.py:515
msgid "Format de filtres statut invalide" msgid "Format de filtres statut invalide"
msgstr "Invalid status filter format" msgstr "Invalid status filter format"
#: common/views.py:486 #: common/views.py:517
msgid "Format de filtres statut de validation invalide" msgid "Format de filtres statut de validation invalide"
msgstr "Invalid validation status filter format" msgstr "Invalid validation status filter format"
#: common/views.py:530 #: common/views.py:561
msgid "Format de préférences invalide" msgid "Format de préférences invalide"
msgstr "Invalid filter format" msgstr "Invalid filter format"
#: common/views.py:581 common/views.py:607 #: common/views.py:612 common/views.py:638
msgid "Document non trouvé" msgid "Document non trouvé"
msgstr "No street found" msgstr "No street found"
#: common/views.py:591 common/views.py:595 #: common/views.py:622 common/views.py:626
msgid "Accès interdit" msgid "Accès interdit"
msgstr "" msgstr ""
#: common/views.py:613 #: common/views.py:644
msgid "Erreur lors de la lecture du document" msgid "Erreur lors de la lecture du document"
msgstr "Erreur lors de la lecture du document" msgstr "Erreur lors de la lecture du document"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,10 +18,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: common/middleware.py:154 #: common/middleware.py:154
msgid "" msgid "Votre session a expiré après le délai configuré. Veuillez vous reconnecter."
"Votre session a expiré après le délai configuré. Veuillez vous reconnecter." msgstr "Votre session a expiré après le délai configuré. Veuillez vous reconnecter."
msgstr ""
"Votre session a expiré après le délai configuré. Veuillez vous reconnecter."
#: common/models.py:162 #: common/models.py:162
msgid "Français" msgid "Français"
@ -48,9 +46,7 @@ msgid "Activer les rappels par e-mail"
msgstr "Activer les rappels par e-mail" msgstr "Activer les rappels par e-mail"
#: common/models.py:176 #: common/models.py:176
msgid "" msgid "Recevoir un e-mail de rappel pour les notifications non lues après un certain délai."
"Recevoir un e-mail de rappel pour les notifications non lues après un "
"certain délai."
msgstr "" msgstr ""
#: common/models.py:181 #: common/models.py:181
@ -58,9 +54,7 @@ msgid "E-mail(s) de réception des rappels"
msgstr "E-mail(s) de réception des rappels" msgstr "E-mail(s) de réception des rappels"
#: common/models.py:182 #: common/models.py:182
msgid "" msgid "Adresses e-mail séparées par des virgules. Si vide, l'adresse de votre compte sera utilisée."
"Adresses e-mail séparées par des virgules. Si vide, l'adresse de votre "
"compte sera utilisée."
msgstr "" msgstr ""
#: common/models.py:186 #: common/models.py:186
@ -68,9 +62,7 @@ msgid "Délai avant rappel (en heures)"
msgstr "Délai avant rappel (en heures)" msgstr "Délai avant rappel (en heures)"
#: common/models.py:187 #: common/models.py:187
msgid "" msgid "Nombre d'heures écoulées après la réception d'une notification avant l'envoi d'un rappel par e-mail."
"Nombre d'heures écoulées après la réception d'une notification avant l'envoi "
"d'un rappel par e-mail."
msgstr "" msgstr ""
#: common/private_files/views.py:37 #: common/private_files/views.py:37
@ -135,7 +127,7 @@ msgstr "Choisir la langue"
#: common/templates/common/account_info.html:42 #: common/templates/common/account_info.html:42
#: common/templates/common/account_info.html:88 #: common/templates/common/account_info.html:88
#: common/templates/common/components/document_viewer.html:201 #: common/templates/common/components/document_viewer.html:204
msgid "Fermer" msgid "Fermer"
msgstr "Fermer" msgstr "Fermer"
@ -161,56 +153,56 @@ msgstr "Se déconnecter"
msgid "Retour" msgid "Retour"
msgstr "Retour" msgstr "Retour"
#: common/templates/common/components/document_viewer.html:40 #: common/templates/common/components/document_viewer.html:41
#: common/templates/common/components/document_viewer.html:50 #: common/templates/common/components/document_viewer.html:51
#: common/templates/common/components/document_viewer.html:61 #: common/templates/common/components/document_viewer.html:62
msgid "Supprimer" msgid "Supprimer"
msgstr "Supprimer" msgstr "Supprimer"
#: common/templates/common/components/document_viewer.html:75 #: common/templates/common/components/document_viewer.html:76
msgid "Copier vers une localisation ou un asset" msgid "Copier vers une localisation ou un asset"
msgstr "Copier vers une localisation ou un asset" msgstr "Copier vers une localisation ou un asset"
#: common/templates/common/components/document_viewer.html:99 #: common/templates/common/components/document_viewer.html:100
#: common/templates/common/components/document_viewer.html:154 #: common/templates/common/components/document_viewer.html:155
msgid "Historique des versions" msgid "Historique des versions"
msgstr "Historique des versions" msgstr "Historique des versions"
#: common/templates/common/components/document_viewer.html:156 #: common/templates/common/components/document_viewer.html:157
msgid "Historique" msgid "Historique"
msgstr "Historique" msgstr "Historique"
#: common/templates/common/components/document_viewer.html:180 #: common/templates/common/components/document_viewer.html:183
msgid "Visionneuse de documents" msgid "Visionneuse de documents"
msgstr "Visionneuse de documents" msgstr "Visionneuse de documents"
#: common/templates/common/components/document_viewer.html:188 #: common/templates/common/components/document_viewer.html:191
msgid "Ouvrir en pleine page" msgid "Ouvrir en pleine page"
msgstr "Ouvrir en pleine page" msgstr "Ouvrir en pleine page"
#: common/templates/common/components/document_viewer.html:195 #: common/templates/common/components/document_viewer.html:198
#: common/templates/common/components/document_viewer.html:196 #: common/templates/common/components/document_viewer.html:199
#: common/templates/common/components/document_viewer.html:261 #: common/templates/common/components/document_viewer.html:264
msgid "Télécharger" msgid "Télécharger"
msgstr "Télécharger" msgstr "Télécharger"
#: common/templates/common/components/document_viewer.html:229 #: common/templates/common/components/document_viewer.html:232
msgid "File truncated to the first 50 000 characters." msgid "File truncated to the first 50 000 characters."
msgstr "File truncated to the first 50 000 characters." msgstr "File truncated to the first 50 000 characters."
#: common/templates/common/components/document_viewer.html:245 #: common/templates/common/components/document_viewer.html:248
msgid "Only the first 200 rows are shown." msgid "Only the first 200 rows are shown."
msgstr "Only the first 200 rows are shown." msgstr "Only the first 200 rows are shown."
#: common/templates/common/components/document_viewer.html:301 #: common/templates/common/components/document_viewer.html:309
msgid "Précédent" msgid "Précédent"
msgstr "Précédent" msgstr "Précédent"
#: common/templates/common/components/document_viewer.html:309 #: common/templates/common/components/document_viewer.html:317
msgid "Suivant" msgid "Suivant"
msgstr "Suivant" msgstr "Suivant"
#: common/templates/common/components/document_viewer.html:432 #: common/templates/common/components/document_viewer.html:442
msgid "Aucun document associé" msgid "Aucun document associé"
msgstr "Aucun document associé" msgstr "Aucun document associé"
@ -252,9 +244,7 @@ msgid "Concepts et notions clés de StreetUp"
msgstr "Concepts et notions clés de StreetUp" msgstr "Concepts et notions clés de StreetUp"
#: common/templates/common/components/help_panel.html:56 #: common/templates/common/components/help_panel.html:56
msgid "" msgid "Comprendre la différence entre Assets, Observations, Inspections, Interventions et Contrôles."
"Comprendre la différence entre Assets, Observations, Inspections, "
"Interventions et Contrôles."
msgstr "" msgstr ""
#: common/templates/common/components/help_panel.html:64 #: common/templates/common/components/help_panel.html:64
@ -270,32 +260,24 @@ msgid "Statuts des interventions"
msgstr "Statuts des interventions" msgstr "Statuts des interventions"
#: common/templates/common/components/help_panel.html:74 #: common/templates/common/components/help_panel.html:74
msgid "" msgid "Comprendre le cycle de vie d'une intervention à travers ses différents statuts."
"Comprendre le cycle de vie d'une intervention à travers ses différents " msgstr "Comprendre le cycle de vie d'une intervention à travers ses différents statuts."
"statuts."
msgstr ""
"Comprendre le cycle de vie d'une intervention à travers ses différents "
"statuts."
#: common/templates/common/components/help_panel.html:83 #: common/templates/common/components/help_panel.html:83
msgid "Approuver des interventions" msgid "Approuver des interventions"
msgstr "Approuver des interventions" msgstr "Approuver des interventions"
#: common/templates/common/components/help_panel.html:84 #: common/templates/common/components/help_panel.html:84
msgid "" msgid "Guide destiné aux gestionnaires pour valider et approuver les chantiers."
"Guide destiné aux gestionnaires pour valider et approuver les chantiers." msgstr "Guide destiné aux gestionnaires pour valider et approuver les chantiers."
msgstr ""
"Guide destiné aux gestionnaires pour valider et approuver les chantiers."
#: common/templates/common/components/help_panel.html:94 #: common/templates/common/components/help_panel.html:94
msgid "Gérer les projets" msgid "Gérer les projets"
msgstr "Gérer les projets" msgstr "Gérer les projets"
#: common/templates/common/components/help_panel.html:95 #: common/templates/common/components/help_panel.html:95
msgid "" msgid "Comment regrouper les interventions et suivre la progression des chantiers."
"Comment regrouper les interventions et suivre la progression des chantiers." msgstr "Comment regrouper les interventions et suivre la progression des chantiers."
msgstr ""
"Comment regrouper les interventions et suivre la progression des chantiers."
#: common/templates/common/components/help_panel.html:105 #: common/templates/common/components/help_panel.html:105
msgid "Ajouter un contrôle" msgid "Ajouter un contrôle"
@ -314,128 +296,128 @@ msgstr "Aucun guide ne correspond à votre recherche."
msgid "Réduire en panneau latéral" msgid "Réduire en panneau latéral"
msgstr "Réduire en panneau latéral" msgstr "Réduire en panneau latéral"
#: common/tests.py:48 common/tests.py:80 common/views.py:265 #: common/tests.py:49 common/tests.py:81 common/views.py:265
#: common/views.py:269 common/views.py:280 #: common/views.py:269 common/views.py:280
msgid "Vous ne pouvez pas accéder à ce compte." msgid "Vous ne pouvez pas accéder à ce compte."
msgstr "Vous ne pouvez pas accéder à ce compte." msgstr "Vous ne pouvez pas accéder à ce compte."
#: common/utils.py:133 #: common/utils.py:169
msgid "Belgique (PEB / Maison Communale / Sécurité PMR)" msgid "Belgique (PEB / Maison Communale / Sécurité PMR)"
msgstr "Belgique (PEB / Maison Communale / Sécurité PMR)" msgstr "Belgique (PEB / Maison Communale / Sécurité PMR)"
#: common/utils.py:134 #: common/utils.py:170
msgid "Hôtel de Ville / Maison Communale" msgid "Hôtel de Ville / Maison Communale"
msgstr "Hôtel de Ville / Maison Communale" msgstr "Hôtel de Ville / Maison Communale"
#: common/utils.py:135 #: common/utils.py:171
msgid "PEB" msgid "PEB"
msgstr "PEB" msgstr "PEB"
#: common/utils.py:136 #: common/utils.py:172
msgid "Performance Énergétique des Bâtiments (PEB)" msgid "Performance Énergétique des Bâtiments (PEB)"
msgstr "Performance Énergétique des Bâtiments (PEB)" msgstr "Performance Énergétique des Bâtiments (PEB)"
#: common/utils.py:137 #: common/utils.py:173
msgid "Bilan Carbone" msgid "Bilan Carbone"
msgstr "Bilan Carbone" msgstr "Bilan Carbone"
#: common/utils.py:138 #: common/utils.py:174
msgid "Émissions de Carbone / Bilan Énergétique" msgid "Émissions de Carbone / Bilan Énergétique"
msgstr "Émissions de Carbone / Bilan Énergétique" msgstr "Émissions de Carbone / Bilan Énergétique"
#: common/utils.py:139 #: common/utils.py:175
msgid "Accès public & PMR" msgid "Accès public & PMR"
msgstr "Accès public & PMR" msgstr "Accès public & PMR"
#: common/utils.py:140 #: common/utils.py:176
msgid "Accueil & Sécurité du Public (Normes PMR)" msgid "Accueil & Sécurité du Public (Normes PMR)"
msgstr "Accueil & Sécurité du Public (Normes PMR)" msgstr "Accueil & Sécurité du Public (Normes PMR)"
#: common/utils.py:141 #: common/utils.py:177
msgid "Catégorie d'accueil" msgid "Catégorie d'accueil"
msgstr "Catégorie d'accueil" msgstr "Catégorie d'accueil"
#: common/utils.py:142 #: common/utils.py:178
msgid "Type d'affectation" msgid "Type d'affectation"
msgstr "Type d'affectation" msgstr "Type d'affectation"
#: common/utils.py:145 #: common/utils.py:181
msgid "France (DPE / GES / Mairie / ERP)" msgid "France (DPE / GES / Mairie / ERP)"
msgstr "France (DPE / GES / Mairie / ERP)" msgstr "France (DPE / GES / Mairie / ERP)"
#: common/utils.py:146 #: common/utils.py:182
msgid "Mairie / Hôtel de Ville" msgid "Mairie / Hôtel de Ville"
msgstr "Mairie / Hôtel de Ville" msgstr "Mairie / Hôtel de Ville"
#: common/utils.py:147 #: common/utils.py:183
msgid "DPE" msgid "DPE"
msgstr "DPE" msgstr "DPE"
#: common/utils.py:148 #: common/utils.py:184
msgid "Diagnostic de Performance Énergétique (DPE)" msgid "Diagnostic de Performance Énergétique (DPE)"
msgstr "Diagnostic de Performance Énergétique (DPE)" msgstr "Diagnostic de Performance Énergétique (DPE)"
#: common/utils.py:149 #: common/utils.py:185
msgid "GES" msgid "GES"
msgstr "GES" msgstr "GES"
#: common/utils.py:150 #: common/utils.py:186
msgid "Émissions de Gaz à Effet de Serre (GES)" msgid "Émissions de Gaz à Effet de Serre (GES)"
msgstr "Émissions de Gaz à Effet de Serre (GES)" msgstr "Émissions de Gaz à Effet de Serre (GES)"
#: common/utils.py:151 #: common/utils.py:187
msgid "ERP" msgid "ERP"
msgstr "ERP" msgstr "ERP"
#: common/utils.py:152 #: common/utils.py:188
msgid "Établissement Recevant du Public (ERP)" msgid "Établissement Recevant du Public (ERP)"
msgstr "Établissement Recevant du Public (ERP)" msgstr "Établissement Recevant du Public (ERP)"
#: common/utils.py:153 #: common/utils.py:189
msgid "Catégorie ERP" msgid "Catégorie ERP"
msgstr "Catégorie ERP" msgstr "Catégorie ERP"
#: common/utils.py:154 #: common/utils.py:190
msgid "Type ERP" msgid "Type ERP"
msgstr "Type ERP" msgstr "Type ERP"
#: common/utils.py:157 #: common/utils.py:193
msgid "International / Générique" msgid "International / Générique"
msgstr "International / Générique" msgstr "International / Générique"
#: common/utils.py:158 #: common/utils.py:194
msgid "Bâtiment Administratif / Hôtel de Ville" msgid "Bâtiment Administratif / Hôtel de Ville"
msgstr "Bâtiment Administratif / Hôtel de Ville" msgstr "Bâtiment Administratif / Hôtel de Ville"
#: common/utils.py:159 #: common/utils.py:195
msgid "PEB / DPE" msgid "PEB / DPE"
msgstr "PEB / DPE" msgstr "PEB / DPE"
#: common/utils.py:160 #: common/utils.py:196
msgid "Performance Énergétique (PEB / DPE / EPC)" msgid "Performance Énergétique (PEB / DPE / EPC)"
msgstr "Performance Énergétique (PEB / DPE / EPC)" msgstr "Performance Énergétique (PEB / DPE / EPC)"
#: common/utils.py:161 #: common/utils.py:197
msgid "Émissions Carbone" msgid "Émissions Carbone"
msgstr "Émissions Carbone" msgstr "Émissions Carbone"
#: common/utils.py:162 #: common/utils.py:198
msgid "Bilan Carbone & Émissions" msgid "Bilan Carbone & Émissions"
msgstr "Bilan Carbone & Émissions" msgstr "Bilan Carbone & Émissions"
#: common/utils.py:163 #: common/utils.py:199
msgid "Accès Public" msgid "Accès Public"
msgstr "Accès Public" msgstr "Accès Public"
#: common/utils.py:164 #: common/utils.py:200
msgid "Bâtiment d'Accueil du Public (ERP / PMR)" msgid "Bâtiment d'Accueil du Public (ERP / PMR)"
msgstr "Bâtiment d'Accueil du Public (ERP / PMR)" msgstr "Bâtiment d'Accueil du Public (ERP / PMR)"
#: common/utils.py:165 #: common/utils.py:201
msgid "Capacité d'accueil" msgid "Capacité d'accueil"
msgstr "Capacité d'accueil" msgstr "Capacité d'accueil"
#: common/utils.py:166 #: common/utils.py:202
msgid "Type d'établissement" msgid "Type d'établissement"
msgstr "Type d'établissement" msgstr "Type d'établissement"
@ -468,8 +450,8 @@ msgid "Changement de compte effectué."
msgstr "Changement de compte effectué." msgstr "Changement de compte effectué."
#: common/views.py:304 common/views.py:329 common/views.py:356 #: common/views.py:304 common/views.py:329 common/views.py:356
#: common/views.py:397 common/views.py:428 common/views.py:457 #: common/views.py:397 common/views.py:428 common/views.py:459
#: common/views.py:524 common/views.py:551 #: common/views.py:488 common/views.py:555 common/views.py:582
msgid "Données invalides" msgid "Données invalides"
msgstr "Données invalides" msgstr "Données invalides"
@ -478,18 +460,19 @@ msgid "Layout invalide"
msgstr "Layout invalide" msgstr "Layout invalide"
#: common/views.py:316 common/views.py:341 common/views.py:383 #: common/views.py:316 common/views.py:341 common/views.py:383
#: common/views.py:414 common/views.py:445 common/views.py:511 #: common/views.py:414 common/views.py:445 common/views.py:476
#: common/views.py:537 common/views.py:568 common/views.py:586 #: common/views.py:542 common/views.py:568 common/views.py:599
#: common/views.py:617
msgid "Configuration utilisateur non trouvée" msgid "Configuration utilisateur non trouvée"
msgstr "Configuration utilisateur non trouvée" msgstr "Configuration utilisateur non trouvée"
#: common/views.py:363 common/views.py:403 common/views.py:434 #: common/views.py:363 common/views.py:403 common/views.py:434
#: common/views.py:557 #: common/views.py:465 common/views.py:588
msgid "Format de filtres invalide" msgid "Format de filtres invalide"
msgstr "Format de filtres invalide" msgstr "Format de filtres invalide"
#: common/views.py:367 common/views.py:406 common/views.py:437 #: common/views.py:367 common/views.py:406 common/views.py:437
#: common/views.py:560 #: common/views.py:468 common/views.py:591
msgid "Format de tri invalide" msgid "Format de tri invalide"
msgstr "Format de tri invalide" msgstr "Format de tri invalide"
@ -497,50 +480,50 @@ msgstr "Format de tri invalide"
msgid "Format de colonnes invalide" msgid "Format de colonnes invalide"
msgstr "Format de colonnes invalide" msgstr "Format de colonnes invalide"
#: common/views.py:472 #: common/views.py:503
msgid "Format de thématiques invalide" msgid "Format de thématiques invalide"
msgstr "Format de thématiques invalide" msgstr "Format de thématiques invalide"
#: common/views.py:474 #: common/views.py:505
msgid "Format de catégories invalide" msgid "Format de catégories invalide"
msgstr "Format de catégories invalide" msgstr "Format de catégories invalide"
#: common/views.py:476 #: common/views.py:507
msgid "Format de modèles invalide" msgid "Format de modèles invalide"
msgstr "Format de modèles invalide" msgstr "Format de modèles invalide"
#: common/views.py:478 #: common/views.py:509
msgid "Format de filtres thématiques invalide" msgid "Format de filtres thématiques invalide"
msgstr "Format de filtres thématiques invalide" msgstr "Format de filtres thématiques invalide"
#: common/views.py:480 #: common/views.py:511
msgid "Format de colonnes visibles invalide" msgid "Format de colonnes visibles invalide"
msgstr "Format de colonnes visibles invalide" msgstr "Format de colonnes visibles invalide"
#: common/views.py:482 #: common/views.py:513
msgid "Format de filtre type invalide" msgid "Format de filtre type invalide"
msgstr "Format de filtre type invalide" msgstr "Format de filtre type invalide"
#: common/views.py:484 #: common/views.py:515
msgid "Format de filtres statut invalide" msgid "Format de filtres statut invalide"
msgstr "Format de filtres statut invalide" msgstr "Format de filtres statut invalide"
#: common/views.py:486 #: common/views.py:517
msgid "Format de filtres statut de validation invalide" msgid "Format de filtres statut de validation invalide"
msgstr "Format de filtres statut de validation invalide" msgstr "Format de filtres statut de validation invalide"
#: common/views.py:530 #: common/views.py:561
msgid "Format de préférences invalide" msgid "Format de préférences invalide"
msgstr "Format de préférences invalide" msgstr "Format de préférences invalide"
#: common/views.py:581 common/views.py:607 #: common/views.py:612 common/views.py:638
msgid "Document non trouvé" msgid "Document non trouvé"
msgstr "Document non trouvé" msgstr "Document non trouvé"
#: common/views.py:591 common/views.py:595 #: common/views.py:622 common/views.py:626
msgid "Accès interdit" msgid "Accès interdit"
msgstr "Accès interdit" msgstr "Accès interdit"
#: common/views.py:613 #: common/views.py:644
msgid "Erreur lors de la lecture du document" msgid "Erreur lors de la lecture du document"
msgstr "Erreur lors de la lecture du document" msgstr "Erreur lors de la lecture du document"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,11 +18,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: common/middleware.py:154 #: common/middleware.py:154
msgid "" msgid "Votre session a expiré après le délai configuré. Veuillez vous reconnecter."
"Votre session a expiré après le délai configuré. Veuillez vous reconnecter." msgstr "Uw sessie is verlopen na de ingestelde time-out. Gelieve opnieuw in te loggen."
msgstr ""
"Uw sessie is verlopen na de ingestelde time-out. Gelieve opnieuw in te "
"loggen."
#: common/models.py:162 #: common/models.py:162
msgid "Français" msgid "Français"
@ -49,9 +46,7 @@ msgid "Activer les rappels par e-mail"
msgstr "E-mailherinneringen inschakelen" msgstr "E-mailherinneringen inschakelen"
#: common/models.py:176 #: common/models.py:176
msgid "" msgid "Recevoir un e-mail de rappel pour les notifications non lues après un certain délai."
"Recevoir un e-mail de rappel pour les notifications non lues après un "
"certain délai."
msgstr "" msgstr ""
#: common/models.py:181 #: common/models.py:181
@ -59,9 +54,7 @@ msgid "E-mail(s) de réception des rappels"
msgstr "E-mailadres(sen) voor herinneringen" msgstr "E-mailadres(sen) voor herinneringen"
#: common/models.py:182 #: common/models.py:182
msgid "" msgid "Adresses e-mail séparées par des virgules. Si vide, l'adresse de votre compte sera utilisée."
"Adresses e-mail séparées par des virgules. Si vide, l'adresse de votre "
"compte sera utilisée."
msgstr "" msgstr ""
#: common/models.py:186 #: common/models.py:186
@ -69,9 +62,7 @@ msgid "Délai avant rappel (en heures)"
msgstr "Wachttijd vóór herinnering (in uren)" msgstr "Wachttijd vóór herinnering (in uren)"
#: common/models.py:187 #: common/models.py:187
msgid "" msgid "Nombre d'heures écoulées après la réception d'une notification avant l'envoi d'un rappel par e-mail."
"Nombre d'heures écoulées après la réception d'une notification avant l'envoi "
"d'un rappel par e-mail."
msgstr "" msgstr ""
#: common/private_files/views.py:37 #: common/private_files/views.py:37
@ -136,7 +127,7 @@ msgstr "Kies de taal"
#: common/templates/common/account_info.html:42 #: common/templates/common/account_info.html:42
#: common/templates/common/account_info.html:88 #: common/templates/common/account_info.html:88
#: common/templates/common/components/document_viewer.html:201 #: common/templates/common/components/document_viewer.html:204
msgid "Fermer" msgid "Fermer"
msgstr "Sluiten" msgstr "Sluiten"
@ -162,56 +153,56 @@ msgstr "Afmelden"
msgid "Retour" msgid "Retour"
msgstr "Terug" msgstr "Terug"
#: common/templates/common/components/document_viewer.html:40 #: common/templates/common/components/document_viewer.html:41
#: common/templates/common/components/document_viewer.html:50 #: common/templates/common/components/document_viewer.html:51
#: common/templates/common/components/document_viewer.html:61 #: common/templates/common/components/document_viewer.html:62
msgid "Supprimer" msgid "Supprimer"
msgstr "Verwijderen" msgstr "Verwijderen"
#: common/templates/common/components/document_viewer.html:75 #: common/templates/common/components/document_viewer.html:76
msgid "Copier vers une localisation ou un asset" msgid "Copier vers une localisation ou un asset"
msgstr "Kopiëren naar een locatie of asset" msgstr "Kopiëren naar een locatie of asset"
#: common/templates/common/components/document_viewer.html:99 #: common/templates/common/components/document_viewer.html:100
#: common/templates/common/components/document_viewer.html:154 #: common/templates/common/components/document_viewer.html:155
msgid "Historique des versions" msgid "Historique des versions"
msgstr "Versiegeschiedenis" msgstr "Versiegeschiedenis"
#: common/templates/common/components/document_viewer.html:156 #: common/templates/common/components/document_viewer.html:157
msgid "Historique" msgid "Historique"
msgstr "Geschiedenis" msgstr "Geschiedenis"
#: common/templates/common/components/document_viewer.html:180 #: common/templates/common/components/document_viewer.html:183
msgid "Visionneuse de documents" msgid "Visionneuse de documents"
msgstr "Documentviewer" msgstr "Documentviewer"
#: common/templates/common/components/document_viewer.html:188 #: common/templates/common/components/document_viewer.html:191
msgid "Ouvrir en pleine page" msgid "Ouvrir en pleine page"
msgstr "Volledig scherm openen" msgstr "Volledig scherm openen"
#: common/templates/common/components/document_viewer.html:195 #: common/templates/common/components/document_viewer.html:198
#: common/templates/common/components/document_viewer.html:196 #: common/templates/common/components/document_viewer.html:199
#: common/templates/common/components/document_viewer.html:261 #: common/templates/common/components/document_viewer.html:264
msgid "Télécharger" msgid "Télécharger"
msgstr "Downloaden" msgstr "Downloaden"
#: common/templates/common/components/document_viewer.html:229 #: common/templates/common/components/document_viewer.html:232
msgid "File truncated to the first 50 000 characters." msgid "File truncated to the first 50 000 characters."
msgstr "Bestand ingekort tot de eerste 50.000 tekens." msgstr "Bestand ingekort tot de eerste 50.000 tekens."
#: common/templates/common/components/document_viewer.html:245 #: common/templates/common/components/document_viewer.html:248
msgid "Only the first 200 rows are shown." msgid "Only the first 200 rows are shown."
msgstr "Alleen de eerste 200 rijen worden weergegeven." msgstr "Alleen de eerste 200 rijen worden weergegeven."
#: common/templates/common/components/document_viewer.html:301 #: common/templates/common/components/document_viewer.html:309
msgid "Précédent" msgid "Précédent"
msgstr "Vorige" msgstr "Vorige"
#: common/templates/common/components/document_viewer.html:309 #: common/templates/common/components/document_viewer.html:317
msgid "Suivant" msgid "Suivant"
msgstr "Volgende" msgstr "Volgende"
#: common/templates/common/components/document_viewer.html:432 #: common/templates/common/components/document_viewer.html:442
msgid "Aucun document associé" msgid "Aucun document associé"
msgstr "Geen gekoppeld document" msgstr "Geen gekoppeld document"
@ -253,9 +244,7 @@ msgid "Concepts et notions clés de StreetUp"
msgstr "" msgstr ""
#: common/templates/common/components/help_panel.html:56 #: common/templates/common/components/help_panel.html:56
msgid "" msgid "Comprendre la différence entre Assets, Observations, Inspections, Interventions et Contrôles."
"Comprendre la différence entre Assets, Observations, Inspections, "
"Interventions et Contrôles."
msgstr "" msgstr ""
#: common/templates/common/components/help_panel.html:64 #: common/templates/common/components/help_panel.html:64
@ -271,9 +260,7 @@ msgid "Statuts des interventions"
msgstr "" msgstr ""
#: common/templates/common/components/help_panel.html:74 #: common/templates/common/components/help_panel.html:74
msgid "" msgid "Comprendre le cycle de vie d'une intervention à travers ses différents statuts."
"Comprendre le cycle de vie d'une intervention à travers ses différents "
"statuts."
msgstr "" msgstr ""
#: common/templates/common/components/help_panel.html:83 #: common/templates/common/components/help_panel.html:83
@ -281,8 +268,7 @@ msgid "Approuver des interventions"
msgstr "" msgstr ""
#: common/templates/common/components/help_panel.html:84 #: common/templates/common/components/help_panel.html:84
msgid "" msgid "Guide destiné aux gestionnaires pour valider et approuver les chantiers."
"Guide destiné aux gestionnaires pour valider et approuver les chantiers."
msgstr "" msgstr ""
#: common/templates/common/components/help_panel.html:94 #: common/templates/common/components/help_panel.html:94
@ -290,8 +276,7 @@ msgid "Gérer les projets"
msgstr "" msgstr ""
#: common/templates/common/components/help_panel.html:95 #: common/templates/common/components/help_panel.html:95
msgid "" msgid "Comment regrouper les interventions et suivre la progression des chantiers."
"Comment regrouper les interventions et suivre la progression des chantiers."
msgstr "" msgstr ""
#: common/templates/common/components/help_panel.html:105 #: common/templates/common/components/help_panel.html:105
@ -311,128 +296,128 @@ msgstr ""
msgid "Réduire en panneau latéral" msgid "Réduire en panneau latéral"
msgstr "" msgstr ""
#: common/tests.py:48 common/tests.py:80 common/views.py:265 #: common/tests.py:49 common/tests.py:81 common/views.py:265
#: common/views.py:269 common/views.py:280 #: common/views.py:269 common/views.py:280
msgid "Vous ne pouvez pas accéder à ce compte." msgid "Vous ne pouvez pas accéder à ce compte."
msgstr "U hebt geen toegang tot dit account." msgstr "U hebt geen toegang tot dit account."
#: common/utils.py:133 #: common/utils.py:169
msgid "Belgique (PEB / Maison Communale / Sécurité PMR)" msgid "Belgique (PEB / Maison Communale / Sécurité PMR)"
msgstr "België (EPB / Gemeentehuis / PMR-veiligheid)" msgstr "België (EPB / Gemeentehuis / PMR-veiligheid)"
#: common/utils.py:134 #: common/utils.py:170
msgid "Hôtel de Ville / Maison Communale" msgid "Hôtel de Ville / Maison Communale"
msgstr "Stadhuis / Gemeentehuis" msgstr "Stadhuis / Gemeentehuis"
#: common/utils.py:135 #: common/utils.py:171
msgid "PEB" msgid "PEB"
msgstr "EPB" msgstr "EPB"
#: common/utils.py:136 #: common/utils.py:172
msgid "Performance Énergétique des Bâtiments (PEB)" msgid "Performance Énergétique des Bâtiments (PEB)"
msgstr "Energieprestatie van Gebouwen (EPB)" msgstr "Energieprestatie van Gebouwen (EPB)"
#: common/utils.py:137 #: common/utils.py:173
msgid "Bilan Carbone" msgid "Bilan Carbone"
msgstr "Koolstofbalans" msgstr "Koolstofbalans"
#: common/utils.py:138 #: common/utils.py:174
msgid "Émissions de Carbone / Bilan Énergétique" msgid "Émissions de Carbone / Bilan Énergétique"
msgstr "Koolstofemissies / Energiebalans" msgstr "Koolstofemissies / Energiebalans"
#: common/utils.py:139 #: common/utils.py:175
msgid "Accès public & PMR" msgid "Accès public & PMR"
msgstr "Publiekstoegang & PMR" msgstr "Publiekstoegang & PMR"
#: common/utils.py:140 #: common/utils.py:176
msgid "Accueil & Sécurité du Public (Normes PMR)" msgid "Accueil & Sécurité du Public (Normes PMR)"
msgstr "Publieksontvangst & Veiligheid (PMR-normen)" msgstr "Publieksontvangst & Veiligheid (PMR-normen)"
#: common/utils.py:141 #: common/utils.py:177
msgid "Catégorie d'accueil" msgid "Catégorie d'accueil"
msgstr "Ontvangstcategorie" msgstr "Ontvangstcategorie"
#: common/utils.py:142 #: common/utils.py:178
msgid "Type d'affectation" msgid "Type d'affectation"
msgstr "Bestemmingstype" msgstr "Bestemmingstype"
#: common/utils.py:145 #: common/utils.py:181
msgid "France (DPE / GES / Mairie / ERP)" msgid "France (DPE / GES / Mairie / ERP)"
msgstr "Frankrijk (DPE / BKG / Stadhuis / ERP)" msgstr "Frankrijk (DPE / BKG / Stadhuis / ERP)"
#: common/utils.py:146 #: common/utils.py:182
msgid "Mairie / Hôtel de Ville" msgid "Mairie / Hôtel de Ville"
msgstr "Gemeentehuis / Stadhuis" msgstr "Gemeentehuis / Stadhuis"
#: common/utils.py:147 #: common/utils.py:183
msgid "DPE" msgid "DPE"
msgstr "DPE" msgstr "DPE"
#: common/utils.py:148 #: common/utils.py:184
msgid "Diagnostic de Performance Énergétique (DPE)" msgid "Diagnostic de Performance Énergétique (DPE)"
msgstr "Energieprestatiediagnose (DPE)" msgstr "Energieprestatiediagnose (DPE)"
#: common/utils.py:149 #: common/utils.py:185
msgid "GES" msgid "GES"
msgstr "BKG" msgstr "BKG"
#: common/utils.py:150 #: common/utils.py:186
msgid "Émissions de Gaz à Effet de Serre (GES)" msgid "Émissions de Gaz à Effet de Serre (GES)"
msgstr "Broeikasgasemissies (BKG)" msgstr "Broeikasgasemissies (BKG)"
#: common/utils.py:151 #: common/utils.py:187
msgid "ERP" msgid "ERP"
msgstr "ERP" msgstr "ERP"
#: common/utils.py:152 #: common/utils.py:188
msgid "Établissement Recevant du Public (ERP)" msgid "Établissement Recevant du Public (ERP)"
msgstr "Publiek Toegankelijke Inrichting (ERP)" msgstr "Publiek Toegankelijke Inrichting (ERP)"
#: common/utils.py:153 #: common/utils.py:189
msgid "Catégorie ERP" msgid "Catégorie ERP"
msgstr "ERP-categorie" msgstr "ERP-categorie"
#: common/utils.py:154 #: common/utils.py:190
msgid "Type ERP" msgid "Type ERP"
msgstr "ERP-type" msgstr "ERP-type"
#: common/utils.py:157 #: common/utils.py:193
msgid "International / Générique" msgid "International / Générique"
msgstr "Internationaal / Generiek" msgstr "Internationaal / Generiek"
#: common/utils.py:158 #: common/utils.py:194
msgid "Bâtiment Administratif / Hôtel de Ville" msgid "Bâtiment Administratif / Hôtel de Ville"
msgstr "Administratief Gebouw / Stadhuis" msgstr "Administratief Gebouw / Stadhuis"
#: common/utils.py:159 #: common/utils.py:195
msgid "PEB / DPE" msgid "PEB / DPE"
msgstr "EPB / DPE" msgstr "EPB / DPE"
#: common/utils.py:160 #: common/utils.py:196
msgid "Performance Énergétique (PEB / DPE / EPC)" msgid "Performance Énergétique (PEB / DPE / EPC)"
msgstr "Energieprestatie (EPB / DPE / EPC)" msgstr "Energieprestatie (EPB / DPE / EPC)"
#: common/utils.py:161 #: common/utils.py:197
msgid "Émissions Carbone" msgid "Émissions Carbone"
msgstr "Koolstofemissies" msgstr "Koolstofemissies"
#: common/utils.py:162 #: common/utils.py:198
msgid "Bilan Carbone & Émissions" msgid "Bilan Carbone & Émissions"
msgstr "Koolstofbalans & Emissies" msgstr "Koolstofbalans & Emissies"
#: common/utils.py:163 #: common/utils.py:199
msgid "Accès Public" msgid "Accès Public"
msgstr "Publiekstoegang" msgstr "Publiekstoegang"
#: common/utils.py:164 #: common/utils.py:200
msgid "Bâtiment d'Accueil du Public (ERP / PMR)" msgid "Bâtiment d'Accueil du Public (ERP / PMR)"
msgstr "Publieksontvangstgebouw (ERP / PMR)" msgstr "Publieksontvangstgebouw (ERP / PMR)"
#: common/utils.py:165 #: common/utils.py:201
msgid "Capacité d'accueil" msgid "Capacité d'accueil"
msgstr "Ontvangstcapaciteit" msgstr "Ontvangstcapaciteit"
#: common/utils.py:166 #: common/utils.py:202
msgid "Type d'établissement" msgid "Type d'établissement"
msgstr "Type inrichting" msgstr "Type inrichting"
@ -465,8 +450,8 @@ msgid "Changement de compte effectué."
msgstr "Accountwissel uitgevoerd." msgstr "Accountwissel uitgevoerd."
#: common/views.py:304 common/views.py:329 common/views.py:356 #: common/views.py:304 common/views.py:329 common/views.py:356
#: common/views.py:397 common/views.py:428 common/views.py:457 #: common/views.py:397 common/views.py:428 common/views.py:459
#: common/views.py:524 common/views.py:551 #: common/views.py:488 common/views.py:555 common/views.py:582
msgid "Données invalides" msgid "Données invalides"
msgstr "Ongeldige gegevens" msgstr "Ongeldige gegevens"
@ -475,18 +460,19 @@ msgid "Layout invalide"
msgstr "Ongeldige lay-out" msgstr "Ongeldige lay-out"
#: common/views.py:316 common/views.py:341 common/views.py:383 #: common/views.py:316 common/views.py:341 common/views.py:383
#: common/views.py:414 common/views.py:445 common/views.py:511 #: common/views.py:414 common/views.py:445 common/views.py:476
#: common/views.py:537 common/views.py:568 common/views.py:586 #: common/views.py:542 common/views.py:568 common/views.py:599
#: common/views.py:617
msgid "Configuration utilisateur non trouvée" msgid "Configuration utilisateur non trouvée"
msgstr "Gebruikersconfiguratie niet gevonden" msgstr "Gebruikersconfiguratie niet gevonden"
#: common/views.py:363 common/views.py:403 common/views.py:434 #: common/views.py:363 common/views.py:403 common/views.py:434
#: common/views.py:557 #: common/views.py:465 common/views.py:588
msgid "Format de filtres invalide" msgid "Format de filtres invalide"
msgstr "Ongeldig filterformaat" msgstr "Ongeldig filterformaat"
#: common/views.py:367 common/views.py:406 common/views.py:437 #: common/views.py:367 common/views.py:406 common/views.py:437
#: common/views.py:560 #: common/views.py:468 common/views.py:591
msgid "Format de tri invalide" msgid "Format de tri invalide"
msgstr "Ongeldig sorteervoorbeeld" msgstr "Ongeldig sorteervoorbeeld"
@ -494,50 +480,50 @@ msgstr "Ongeldig sorteervoorbeeld"
msgid "Format de colonnes invalide" msgid "Format de colonnes invalide"
msgstr "Ongeldig kolomformaat" msgstr "Ongeldig kolomformaat"
#: common/views.py:472 #: common/views.py:503
msgid "Format de thématiques invalide" msgid "Format de thématiques invalide"
msgstr "Ongeldig thematiekformaat" msgstr "Ongeldig thematiekformaat"
#: common/views.py:474 #: common/views.py:505
msgid "Format de catégories invalide" msgid "Format de catégories invalide"
msgstr "Ongeldig categorieformaat" msgstr "Ongeldig categorieformaat"
#: common/views.py:476 #: common/views.py:507
msgid "Format de modèles invalide" msgid "Format de modèles invalide"
msgstr "Ongeldig modelformaat" msgstr "Ongeldig modelformaat"
#: common/views.py:478 #: common/views.py:509
msgid "Format de filtres thématiques invalide" msgid "Format de filtres thématiques invalide"
msgstr "Ongeldig thematiekfilterformaat" msgstr "Ongeldig thematiekfilterformaat"
#: common/views.py:480 #: common/views.py:511
msgid "Format de colonnes visibles invalide" msgid "Format de colonnes visibles invalide"
msgstr "Ongeldig zichtbare kolommenformaat" msgstr "Ongeldig zichtbare kolommenformaat"
#: common/views.py:482 #: common/views.py:513
msgid "Format de filtre type invalide" msgid "Format de filtre type invalide"
msgstr "Ongeldig type-filterformaat" msgstr "Ongeldig type-filterformaat"
#: common/views.py:484 #: common/views.py:515
msgid "Format de filtres statut invalide" msgid "Format de filtres statut invalide"
msgstr "Ongeldig statusfilterformaat" msgstr "Ongeldig statusfilterformaat"
#: common/views.py:486 #: common/views.py:517
msgid "Format de filtres statut de validation invalide" msgid "Format de filtres statut de validation invalide"
msgstr "Ongeldig validatiestatusfilterformaat" msgstr "Ongeldig validatiestatusfilterformaat"
#: common/views.py:530 #: common/views.py:561
msgid "Format de préférences invalide" msgid "Format de préférences invalide"
msgstr "Ongeldig filterformaat" msgstr "Ongeldig filterformaat"
#: common/views.py:581 common/views.py:607 #: common/views.py:612 common/views.py:638
msgid "Document non trouvé" msgid "Document non trouvé"
msgstr "Geen straat gevonden" msgstr "Geen straat gevonden"
#: common/views.py:591 common/views.py:595 #: common/views.py:622 common/views.py:626
msgid "Accès interdit" msgid "Accès interdit"
msgstr "" msgstr ""
#: common/views.py:613 #: common/views.py:644
msgid "Erreur lors de la lecture du document" msgid "Erreur lors de la lecture du document"
msgstr "" msgstr ""

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-21 12:07+0200\n" "POT-Creation-Date: 2026-09-13 09:05+0200\n"
"PO-Revision-Date: 2025-12-04 12:00+0100\n" "PO-Revision-Date: 2025-12-04 12:00+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English <LL@li.org>\n" "Language-Team: English <LL@li.org>\n"
@ -523,88 +523,90 @@ msgstr ""
"and crossing conditions" "and crossing conditions"
#: home/templates/home/widgets/exceptional_transport.html:23 #: home/templates/home/widgets/exceptional_transport.html:23
#| msgid "Ouvrages d'art"
msgid "ouvrages sur la carte" msgid "ouvrages sur la carte"
msgstr "structures on the map" msgstr "structures on the map"
#: home/templates/home/widgets/exceptional_transport.html:26 #: home/templates/home/widgets/exceptional_transport.html:25
msgid "Voir tous les ouvrages d'art"
msgstr "See all structures"
#: home/templates/home/widgets/exceptional_transport.html:27
msgid "Tous les ouvrages" msgid "Tous les ouvrages"
msgstr "All structures" msgstr "All structures"
#: home/templates/home/widgets/exceptional_transport.html:44 #: home/templates/home/widgets/exceptional_transport.html:45
msgid "Rechercher (ex: OA120, pont, tunnel, passerelle, VNR...)" msgid "Rechercher (ex: OA120, pont, tunnel, passerelle, VNR...)"
msgstr "Search (e.g. OA120, bridge, tunnel, footbridge, VNR...)" msgstr "Search (e.g. OA120, bridge, tunnel, footbridge, VNR...)"
#: home/templates/home/widgets/exceptional_transport.html:46 #: home/templates/home/widgets/exceptional_transport.html:47
msgid "Effacer la recherche" msgid "Effacer la recherche"
msgstr "Clear search" msgstr "Clear search"
#: home/templates/home/widgets/exceptional_transport.html:61 #: home/templates/home/widgets/exceptional_transport.html:62
msgid "Tous" msgid "Tous"
msgstr "All" msgstr "All"
#: home/templates/home/widgets/exceptional_transport.html:64 #: home/templates/home/widgets/exceptional_transport.html:65
msgid "Autorisé" msgid "Autorisé"
msgstr "Authorized" msgstr "Authorized"
#: home/templates/home/widgets/exceptional_transport.html:67 #: home/templates/home/widgets/exceptional_transport.html:68
#| msgid "Groupes de conditions"
msgid "Sous conditions" msgid "Sous conditions"
msgstr "Conditional" msgstr "Conditional"
#: home/templates/home/widgets/exceptional_transport.html:70 #: home/templates/home/widgets/exceptional_transport.html:71
msgid "Non évalué" msgid "Non évalué"
msgstr "Not evaluated" msgstr "Not evaluated"
#: home/templates/home/widgets/exceptional_transport.html:73 #: home/templates/home/widgets/exceptional_transport.html:74
msgid "Restreint/Interdit" msgid "Restreint/Interdit"
msgstr "Restricted/Forbidden" msgstr "Restricted/Forbidden"
#: home/templates/home/widgets/exceptional_transport.html:85 #: home/templates/home/widgets/exceptional_transport.html:86
msgid "Réinitialiser la vue" msgid "Réinitialiser la vue"
msgstr "Reset view" msgstr "Reset view"
#: home/templates/home/widgets/exceptional_transport.html:94 #: home/templates/home/widgets/exceptional_transport.html:95
msgid "Statut de passage" msgid "Statut de passage"
msgstr "Passage status" msgstr "Passage status"
#: home/templates/home/widgets/exceptional_transport.html:99 #: home/templates/home/widgets/exceptional_transport.html:100
msgid "Autorisé (standard / calculé)" msgid "Autorisé (standard / calculé)"
msgstr "Authorized (standard / calculated)" msgstr "Authorized (standard / calculated)"
#: home/templates/home/widgets/exceptional_transport.html:103 #: home/templates/home/widgets/exceptional_transport.html:104
msgid "Sous conditions / prescriptions" msgid "Sous conditions / prescriptions"
msgstr "Conditional / prescriptions" msgstr "Conditional / prescriptions"
#: home/templates/home/widgets/exceptional_transport.html:107 #: home/templates/home/widgets/exceptional_transport.html:108
msgid "Non évalué (fiche à compléter)" msgid "Non évalué (fiche à compléter)"
msgstr "Not evaluated (to be completed)" msgstr "Not evaluated (to be completed)"
#: home/templates/home/widgets/exceptional_transport.html:111 #: home/templates/home/widgets/exceptional_transport.html:112
msgid "Interdit / Étude requise" msgid "Interdit / Étude requise"
msgstr "Forbidden / Study required" msgstr "Forbidden / Study required"
#: home/templates/home/widgets/exceptional_transport.html:120 #: home/templates/home/widgets/exceptional_transport.html:121
msgid "Chargement..." msgid "Chargement..."
msgstr "" msgstr ""
#: home/templates/home/widgets/exceptional_transport.html:122 #: home/templates/home/widgets/exceptional_transport.html:123
msgid "Chargement du réseau d'ouvrages..." msgid "Chargement du réseau d'ouvrages..."
msgstr "Loading structure network..." msgstr "Loading structure network..."
#: home/templates/home/widgets/exceptional_transport.html:464 #: home/templates/home/widgets/exceptional_transport.html:465
msgid "Ouvrir la fiche de l'ouvrage" msgid "Ouvrir la fiche de l'ouvrage"
msgstr "Open structure detail" msgstr "Open structure detail"
#: home/templates/home/widgets/exceptional_transport.html:490 #: home/templates/home/widgets/exceptional_transport.html:491
msgid "Détail" msgid "Détail"
msgstr "Detail" msgstr "Detail"
#: home/templates/home/widgets/exceptional_transport.html:501 #: home/templates/home/widgets/exceptional_transport.html:502
msgid "ouvrages à cet endroit" msgid "ouvrages à cet endroit"
msgstr "structures at this location" msgstr "structures at this location"
#: home/templates/home/widgets/exceptional_transport.html:575 #: home/templates/home/widgets/exceptional_transport.html:576
msgid "Aucun ouvrage correspondant trouvé" msgid "Aucun ouvrage correspondant trouvé"
msgstr "No matching structure found" msgstr "No matching structure found"

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-21 12:07+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: 2025-12-04 12:00+0100\n" "PO-Revision-Date: 2025-12-04 12:00+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French <LL@li.org>\n" "Language-Team: French <LL@li.org>\n"
@ -532,88 +532,90 @@ msgstr ""
"passerelles) et conditions de passage" "passerelles) et conditions de passage"
#: home/templates/home/widgets/exceptional_transport.html:23 #: home/templates/home/widgets/exceptional_transport.html:23
#| msgid "Ouvrages d'art"
msgid "ouvrages sur la carte" msgid "ouvrages sur la carte"
msgstr "ouvrages sur la carte" msgstr "ouvrages sur la carte"
#: home/templates/home/widgets/exceptional_transport.html:26 #: home/templates/home/widgets/exceptional_transport.html:25
msgid "Voir tous les ouvrages d'art"
msgstr "Voir tous les ouvrages d'art"
#: home/templates/home/widgets/exceptional_transport.html:27
msgid "Tous les ouvrages" msgid "Tous les ouvrages"
msgstr "Tous les ouvrages" msgstr "Tous les ouvrages"
#: home/templates/home/widgets/exceptional_transport.html:44 #: home/templates/home/widgets/exceptional_transport.html:45
msgid "Rechercher (ex: OA120, pont, tunnel, passerelle, VNR...)" msgid "Rechercher (ex: OA120, pont, tunnel, passerelle, VNR...)"
msgstr "Rechercher (ex: OA120, pont, tunnel, passerelle, VNR...)" msgstr "Rechercher (ex: OA120, pont, tunnel, passerelle, VNR...)"
#: home/templates/home/widgets/exceptional_transport.html:46 #: home/templates/home/widgets/exceptional_transport.html:47
msgid "Effacer la recherche" msgid "Effacer la recherche"
msgstr "Effacer la recherche" msgstr "Effacer la recherche"
#: home/templates/home/widgets/exceptional_transport.html:61 #: home/templates/home/widgets/exceptional_transport.html:62
msgid "Tous" msgid "Tous"
msgstr "Tous" msgstr "Tous"
#: home/templates/home/widgets/exceptional_transport.html:64 #: home/templates/home/widgets/exceptional_transport.html:65
msgid "Autorisé" msgid "Autorisé"
msgstr "Autorisé" msgstr "Autorisé"
#: home/templates/home/widgets/exceptional_transport.html:67 #: home/templates/home/widgets/exceptional_transport.html:68
#| msgid "Groupes de conditions"
msgid "Sous conditions" msgid "Sous conditions"
msgstr "Sous conditions" msgstr "Sous conditions"
#: home/templates/home/widgets/exceptional_transport.html:70 #: home/templates/home/widgets/exceptional_transport.html:71
msgid "Non évalué" msgid "Non évalué"
msgstr "Non évalué" msgstr "Non évalué"
#: home/templates/home/widgets/exceptional_transport.html:73 #: home/templates/home/widgets/exceptional_transport.html:74
msgid "Restreint/Interdit" msgid "Restreint/Interdit"
msgstr "Restreint/Interdit" msgstr "Restreint/Interdit"
#: home/templates/home/widgets/exceptional_transport.html:85 #: home/templates/home/widgets/exceptional_transport.html:86
msgid "Réinitialiser la vue" msgid "Réinitialiser la vue"
msgstr "Réinitialiser la vue" msgstr "Réinitialiser la vue"
#: home/templates/home/widgets/exceptional_transport.html:94 #: home/templates/home/widgets/exceptional_transport.html:95
msgid "Statut de passage" msgid "Statut de passage"
msgstr "Statut de passage" msgstr "Statut de passage"
#: home/templates/home/widgets/exceptional_transport.html:99 #: home/templates/home/widgets/exceptional_transport.html:100
msgid "Autorisé (standard / calculé)" msgid "Autorisé (standard / calculé)"
msgstr "Autorisé (standard / calculé)" msgstr "Autorisé (standard / calculé)"
#: home/templates/home/widgets/exceptional_transport.html:103 #: home/templates/home/widgets/exceptional_transport.html:104
msgid "Sous conditions / prescriptions" msgid "Sous conditions / prescriptions"
msgstr "Sous conditions / prescriptions" msgstr "Sous conditions / prescriptions"
#: home/templates/home/widgets/exceptional_transport.html:107 #: home/templates/home/widgets/exceptional_transport.html:108
msgid "Non évalué (fiche à compléter)" msgid "Non évalué (fiche à compléter)"
msgstr "Non évalué (fiche à compléter)" msgstr "Non évalué (fiche à compléter)"
#: home/templates/home/widgets/exceptional_transport.html:111 #: home/templates/home/widgets/exceptional_transport.html:112
msgid "Interdit / Étude requise" msgid "Interdit / Étude requise"
msgstr "Interdit / Étude requise" msgstr "Interdit / Étude requise"
#: home/templates/home/widgets/exceptional_transport.html:120 #: home/templates/home/widgets/exceptional_transport.html:121
msgid "Chargement..." msgid "Chargement..."
msgstr "" msgstr ""
#: home/templates/home/widgets/exceptional_transport.html:122 #: home/templates/home/widgets/exceptional_transport.html:123
msgid "Chargement du réseau d'ouvrages..." msgid "Chargement du réseau d'ouvrages..."
msgstr "Chargement du réseau d'ouvrages..." msgstr "Chargement du réseau d'ouvrages..."
#: home/templates/home/widgets/exceptional_transport.html:464 #: home/templates/home/widgets/exceptional_transport.html:465
msgid "Ouvrir la fiche de l'ouvrage" msgid "Ouvrir la fiche de l'ouvrage"
msgstr "Ouvrir la fiche de l'ouvrage" msgstr "Ouvrir la fiche de l'ouvrage"
#: home/templates/home/widgets/exceptional_transport.html:490 #: home/templates/home/widgets/exceptional_transport.html:491
msgid "Détail" msgid "Détail"
msgstr "Détail" msgstr "Détail"
#: home/templates/home/widgets/exceptional_transport.html:501 #: home/templates/home/widgets/exceptional_transport.html:502
msgid "ouvrages à cet endroit" msgid "ouvrages à cet endroit"
msgstr "ouvrages à cet endroit" msgstr "ouvrages à cet endroit"
#: home/templates/home/widgets/exceptional_transport.html:575 #: home/templates/home/widgets/exceptional_transport.html:576
msgid "Aucun ouvrage correspondant trouvé" msgid "Aucun ouvrage correspondant trouvé"
msgstr "Aucun ouvrage correspondant trouvé" msgstr "Aucun ouvrage correspondant trouvé"

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-21 12:07+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: 2025-12-04 12:00+0100\n" "PO-Revision-Date: 2025-12-04 12:00+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch <LL@li.org>\n" "Language-Team: Dutch <LL@li.org>\n"
@ -529,88 +529,90 @@ msgstr ""
"voetgangersbruggen) en doorgangsvoorwaarden" "voetgangersbruggen) en doorgangsvoorwaarden"
#: home/templates/home/widgets/exceptional_transport.html:23 #: home/templates/home/widgets/exceptional_transport.html:23
#| msgid "Ouvrages d'art"
msgid "ouvrages sur la carte" msgid "ouvrages sur la carte"
msgstr "kunstwerken op de kaart" msgstr "kunstwerken op de kaart"
#: home/templates/home/widgets/exceptional_transport.html:26 #: home/templates/home/widgets/exceptional_transport.html:25
msgid "Voir tous les ouvrages d'art"
msgstr "Bekijk alle kunstwerken"
#: home/templates/home/widgets/exceptional_transport.html:27
msgid "Tous les ouvrages" msgid "Tous les ouvrages"
msgstr "Alle kunstwerken" msgstr "Alle kunstwerken"
#: home/templates/home/widgets/exceptional_transport.html:44 #: home/templates/home/widgets/exceptional_transport.html:45
msgid "Rechercher (ex: OA120, pont, tunnel, passerelle, VNR...)" msgid "Rechercher (ex: OA120, pont, tunnel, passerelle, VNR...)"
msgstr "Zoeken (bijv. OA120, brug, tunnel, voetgangersbrug, VNR...)" msgstr "Zoeken (bijv. OA120, brug, tunnel, voetgangersbrug, VNR...)"
#: home/templates/home/widgets/exceptional_transport.html:46 #: home/templates/home/widgets/exceptional_transport.html:47
msgid "Effacer la recherche" msgid "Effacer la recherche"
msgstr "Zoekopdracht wissen" msgstr "Zoekopdracht wissen"
#: home/templates/home/widgets/exceptional_transport.html:61 #: home/templates/home/widgets/exceptional_transport.html:62
msgid "Tous" msgid "Tous"
msgstr "Alle" msgstr "Alle"
#: home/templates/home/widgets/exceptional_transport.html:64 #: home/templates/home/widgets/exceptional_transport.html:65
msgid "Autorisé" msgid "Autorisé"
msgstr "Toegestaan" msgstr "Toegestaan"
#: home/templates/home/widgets/exceptional_transport.html:67 #: home/templates/home/widgets/exceptional_transport.html:68
#| msgid "Groupes de conditions"
msgid "Sous conditions" msgid "Sous conditions"
msgstr "Onder voorwaarden" msgstr "Onder voorwaarden"
#: home/templates/home/widgets/exceptional_transport.html:70 #: home/templates/home/widgets/exceptional_transport.html:71
msgid "Non évalué" msgid "Non évalué"
msgstr "Niet geëvalueerd" msgstr "Niet geëvalueerd"
#: home/templates/home/widgets/exceptional_transport.html:73 #: home/templates/home/widgets/exceptional_transport.html:74
msgid "Restreint/Interdit" msgid "Restreint/Interdit"
msgstr "Beperkt/Verboden" msgstr "Beperkt/Verboden"
#: home/templates/home/widgets/exceptional_transport.html:85 #: home/templates/home/widgets/exceptional_transport.html:86
msgid "Réinitialiser la vue" msgid "Réinitialiser la vue"
msgstr "Weergave herstellen" msgstr "Weergave herstellen"
#: home/templates/home/widgets/exceptional_transport.html:94 #: home/templates/home/widgets/exceptional_transport.html:95
msgid "Statut de passage" msgid "Statut de passage"
msgstr "Doorgangsstatus" msgstr "Doorgangsstatus"
#: home/templates/home/widgets/exceptional_transport.html:99 #: home/templates/home/widgets/exceptional_transport.html:100
msgid "Autorisé (standard / calculé)" msgid "Autorisé (standard / calculé)"
msgstr "Toegestaan (standaard / berekend)" msgstr "Toegestaan (standaard / berekend)"
#: home/templates/home/widgets/exceptional_transport.html:103 #: home/templates/home/widgets/exceptional_transport.html:104
msgid "Sous conditions / prescriptions" msgid "Sous conditions / prescriptions"
msgstr "Onder voorwaarden / voorschriften" msgstr "Onder voorwaarden / voorschriften"
#: home/templates/home/widgets/exceptional_transport.html:107 #: home/templates/home/widgets/exceptional_transport.html:108
msgid "Non évalué (fiche à compléter)" msgid "Non évalué (fiche à compléter)"
msgstr "Niet geëvalueerd (in te vullen)" msgstr "Niet geëvalueerd (in te vullen)"
#: home/templates/home/widgets/exceptional_transport.html:111 #: home/templates/home/widgets/exceptional_transport.html:112
msgid "Interdit / Étude requise" msgid "Interdit / Étude requise"
msgstr "Verboden / Studie vereist" msgstr "Verboden / Studie vereist"
#: home/templates/home/widgets/exceptional_transport.html:120 #: home/templates/home/widgets/exceptional_transport.html:121
msgid "Chargement..." msgid "Chargement..."
msgstr "" msgstr ""
#: home/templates/home/widgets/exceptional_transport.html:122 #: home/templates/home/widgets/exceptional_transport.html:123
msgid "Chargement du réseau d'ouvrages..." msgid "Chargement du réseau d'ouvrages..."
msgstr "Netwerk van kunstwerken laden..." msgstr "Netwerk van kunstwerken laden..."
#: home/templates/home/widgets/exceptional_transport.html:464 #: home/templates/home/widgets/exceptional_transport.html:465
msgid "Ouvrir la fiche de l'ouvrage" msgid "Ouvrir la fiche de l'ouvrage"
msgstr "Kunstwerkfiche openen" msgstr "Kunstwerkfiche openen"
#: home/templates/home/widgets/exceptional_transport.html:490 #: home/templates/home/widgets/exceptional_transport.html:491
msgid "Détail" msgid "Détail"
msgstr "Detail" msgstr "Detail"
#: home/templates/home/widgets/exceptional_transport.html:501 #: home/templates/home/widgets/exceptional_transport.html:502
msgid "ouvrages à cet endroit" msgid "ouvrages à cet endroit"
msgstr "kunstwerken op deze locatie" msgstr "kunstwerken op deze locatie"
#: home/templates/home/widgets/exceptional_transport.html:575 #: home/templates/home/widgets/exceptional_transport.html:576
msgid "Aucun ouvrage correspondant trouvé" msgid "Aucun ouvrage correspondant trouvé"
msgstr "Geen overeenkomend kunstwerk gevonden" msgstr "Geen overeenkomend kunstwerk gevonden"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -78,7 +78,7 @@
<div class="col-12 col-md-7"> <div class="col-12 col-md-7">
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
<span class="input-group-text bg-white"><i class="bi bi-search text-muted"></i></span> <span class="input-group-text bg-white"><i class="bi bi-search text-muted"></i></span>
<input type="text" id="giep_modal_search_input" class="form-control" placeholder="{% translate 'Filtrer par code ou type d\'ouvrage...' %}"> <input type="text" id="giep_modal_search_input" class="form-control" placeholder="{% translate "Filtrer par code ou type d'ouvrage..." %}">
</div> </div>
</div> </div>
<div class="col-12 col-md-5"> <div class="col-12 col-md-5">

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-21 12:07+0200\n" "POT-Creation-Date: 2026-09-13 09:05+0200\n"
"PO-Revision-Date: 2025-12-04 12:00+0100\n" "PO-Revision-Date: 2025-12-04 12:00+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English <LL@li.org>\n" "Language-Team: English <LL@li.org>\n"
@ -16,6 +16,124 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: mobile/templates/mobile/assets/assets_index_mobile.html:6
#: mobile/templates/mobile/mobile_index.html:145
msgid "Patrimoine & Assets"
msgstr "Assets & Heritage"
#: mobile/templates/mobile/assets/assets_index_mobile.html:302
msgid "Code, nom, modèle..."
msgstr "Code, name, model..."
#: mobile/templates/mobile/assets/assets_index_mobile.html:307
msgid "Effacer"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:316
msgid "Réinitialiser la recherche, les filtres et le zoom"
msgstr "Reset search, filters and zoom"
#: mobile/templates/mobile/assets/assets_index_mobile.html:318
msgid "Reset"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:322
msgid "Mode d'affichage"
msgstr "Display mode"
#: mobile/templates/mobile/assets/assets_index_mobile.html:324
msgid "Carte"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:327
msgid "Liste"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:337
msgid "Tous statuts"
msgstr "All statuses"
#: mobile/templates/mobile/assets/assets_index_mobile.html:362
msgid "Limite atteinte"
msgstr "Limit reached"
#: mobile/templates/mobile/assets/assets_index_mobile.html:362
msgid ""
"Plus de 500 assets correspondent. Veuillez zoomer sur la carte ou affiner "
"vos critères de recherche."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:369
msgid "asset(s) trouvé(s)"
msgstr "asset(s) found"
#: mobile/templates/mobile/assets/assets_index_mobile.html:371
msgid "500 affichés"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:373
msgid ""
"Filtré selon la zone visible sur la carte. Cliquez pour élargir à toute la "
"commune."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:374
msgid "Zone visible"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:377
msgid "Trié par distance"
msgstr "Sorted by distance"
#: mobile/templates/mobile/assets/assets_index_mobile.html:381
#: mobile/templates/mobile/mobile_base.html:220
msgid "Chargement..."
msgstr "Loading..."
#: mobile/templates/mobile/assets/assets_index_mobile.html:395
#: mobile/templates/mobile/assets/assets_index_mobile.html:416
msgid "Sélectionnez une thématique"
msgstr "Select a thematic"
#: mobile/templates/mobile/assets/assets_index_mobile.html:396
msgid ""
"Veuillez choisir une thématique ci-dessus pour afficher les assets sur la "
"carte."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:400
msgid "Ma position"
msgstr "My location"
#: mobile/templates/mobile/assets/assets_index_mobile.html:417
msgid ""
"Veuillez choisir une thématique ci-dessus pour afficher la liste des assets."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:424
msgid "Aucun asset trouvé"
msgstr "No assets found"
#: mobile/templates/mobile/assets/assets_index_mobile.html:425
msgid "Modifiez votre recherche ou zoomez sur une autre zone."
msgstr "Modify your search or zoom into another area."
#: mobile/templates/mobile/assets/assets_index_mobile.html:427
msgid "Réinitialiser les filtres"
msgstr "Reset filters"
#: mobile/templates/mobile/assets/assets_index_mobile.html:461
msgid "Consulter la fiche"
msgstr "View details"
#: mobile/templates/mobile/assets/assets_index_mobile.html:463
msgid "Itinéraire GPS"
msgstr "GPS Directions"
#: mobile/templates/mobile/assets/assets_index_mobile.html:996
msgid "La géolocalisation n'est pas supportée par votre navigateur."
msgstr "Geolocation is not supported by your browser."
#: mobile/templates/mobile/green_surfaces_edit_v2.html:240 #: mobile/templates/mobile/green_surfaces_edit_v2.html:240
msgid "Espaces verts - V2" msgid "Espaces verts - V2"
msgstr "Green spaces - V2" msgstr "Green spaces - V2"
@ -34,7 +152,8 @@ msgstr "selected item(s)"
#: mobile/templates/mobile/green_surfaces_edit_v2.html:275 #: mobile/templates/mobile/green_surfaces_edit_v2.html:275
msgid "" msgid ""
"Sélectionnez un modèle ci-dessous pour l'appliquer aux éléments sélectionnés." "Sélectionnez un modèle ci-dessous pour l'appliquer aux éléments "
"sélectionnés."
msgstr "Select a template below to apply it to the selected elements." msgstr "Select a template below to apply it to the selected elements."
#: mobile/templates/mobile/green_surfaces_edit_v2.html:280 #: mobile/templates/mobile/green_surfaces_edit_v2.html:280
@ -197,7 +316,7 @@ msgid ""
msgstr "Draw a line to cut the polygon. Double-click to finish." msgstr "Draw a line to cut the polygon. Double-click to finish."
#: mobile/templates/mobile/green_surfaces_edit_v2.html:1107 #: mobile/templates/mobile/green_surfaces_edit_v2.html:1107
#: mobile/templates/mobile/mobile_index.html:146 #: mobile/templates/mobile/mobile_index.html:158
msgid "Espaces verts" msgid "Espaces verts"
msgstr "Green spaces" msgstr "Green spaces"
@ -222,19 +341,15 @@ msgstr "Active"
msgid "Quitter" msgid "Quitter"
msgstr "Exit" msgstr "Exit"
#: mobile/templates/mobile/mobile_base.html:218 #: mobile/templates/mobile/mobile_base.html:244
msgid "Chargement..."
msgstr "Loading..."
#: mobile/templates/mobile/mobile_base.html:242
msgid "Notifications" msgid "Notifications"
msgstr "Notifications" msgstr "Notifications"
#: mobile/templates/mobile/mobile_base.html:248 #: mobile/templates/mobile/mobile_base.html:250
msgid "notifications non lues" msgid "notifications non lues"
msgstr "unread notifications" msgstr "unread notifications"
#: mobile/templates/mobile/mobile_base.html:254 #: mobile/templates/mobile/mobile_base.html:256
msgid "Scanner un QR Code" msgid "Scanner un QR Code"
msgstr "Scan a QR Code" msgstr "Scan a QR Code"
@ -246,13 +361,11 @@ msgstr "Unread notifications"
#, python-format #, python-format
msgid "" msgid ""
"\n" "\n"
" Vous avez <strong class=\"home-unread-" " Vous avez <strong class=\"home-unread-notifications-count\">%(count)s</strong> notification non lue.\n"
"notifications-count\">%(count)s</strong> notification non lue.\n"
" " " "
msgid_plural "" msgid_plural ""
"\n" "\n"
" Vous avez <strong class=\"home-unread-" " Vous avez <strong class=\"home-unread-notifications-count\">%(count)s</strong> notifications non lues.\n"
"notifications-count\">%(count)s</strong> notifications non lues.\n"
" " " "
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
@ -325,15 +438,19 @@ msgstr "Asset inspections"
msgid "Consulter la liste et l'historique des vérifications d'assets" msgid "Consulter la liste et l'historique des vérifications d'assets"
msgstr "View the list and history of asset verifications" msgstr "View the list and history of asset verifications"
#: mobile/templates/mobile/mobile_index.html:147 #: mobile/templates/mobile/mobile_index.html:146
msgid "Consulter et localiser les assets sur le terrain"
msgstr "Browse and locate assets in the field"
#: mobile/templates/mobile/mobile_index.html:159
msgid "Éditer les espaces verts" msgid "Éditer les espaces verts"
msgstr "Edit green spaces" msgstr "Edit green spaces"
#: mobile/templates/mobile/mobile_index.html:158 #: mobile/templates/mobile/mobile_index.html:170
msgid "Stock" msgid "Stock"
msgstr "Stock" msgstr "Stock"
#: mobile/templates/mobile/mobile_index.html:159 #: mobile/templates/mobile/mobile_index.html:171
msgid "Gérer les produits, commandes et mouvements de stock" msgid "Gérer les produits, commandes et mouvements de stock"
msgstr "Manage products, orders and stock movements" msgstr "Manage products, orders and stock movements"
@ -355,7 +472,8 @@ msgid "Télécharger l'APK Android"
msgstr "Download Android APK" msgstr "Download Android APK"
#: mobile/templates/mobile/mobile_install.html:77 #: mobile/templates/mobile/mobile_install.html:77
msgid "Installez la version native (recommandé pour les appareils de terrain)." msgid ""
"Installez la version native (recommandé pour les appareils de terrain)."
msgstr "Install the native version (recommended for field devices)." msgstr "Install the native version (recommended for field devices)."
#: mobile/templates/mobile/mobile_install.html:79 #: mobile/templates/mobile/mobile_install.html:79
@ -398,7 +516,8 @@ msgid "Confirmez : l'icône apparaît comme une application."
msgstr "Confirm: the icon appears as an application." msgstr "Confirm: the icon appears as an application."
#: mobile/templates/mobile/mobile_install.html:103 #: mobile/templates/mobile/mobile_install.html:103
msgid "Assurez-vous d'accepter l'installation quand la bannière PWA s'affiche." msgid ""
"Assurez-vous d'accepter l'installation quand la bannière PWA s'affiche."
msgstr "Make sure to accept the installation when the PWA banner appears." msgstr "Make sure to accept the installation when the PWA banner appears."
#: mobile/templates/mobile/mobile_install.html:106 #: mobile/templates/mobile/mobile_install.html:106
@ -490,7 +609,7 @@ msgstr "Point to a QR code…"
msgid "QR Code détecté, résolution…" msgid "QR Code détecté, résolution…"
msgstr "QR Code detected, resolution…" msgstr "QR Code detected, resolution…"
#: mobile/templates/mobile/qr_scanner.html:210 mobile/views.py:264 #: mobile/templates/mobile/qr_scanner.html:210 mobile/views.py:273
msgid "QR Code non reconnu." msgid "QR Code non reconnu."
msgstr "QR Code not recognized." msgstr "QR Code not recognized."
@ -498,85 +617,85 @@ msgstr "QR Code not recognized."
msgid "Erreur lors de la résolution." msgid "Erreur lors de la résolution."
msgstr "Error resolving QR code." msgstr "Error resolving QR code."
#: mobile/views.py:268 #: mobile/views.py:277
msgid "Format de QR Code invalide." msgid "Format de QR Code invalide."
msgstr "Invalid QR Code format." msgstr "Invalid QR Code format."
#: mobile/views.py:292 #: mobile/views.py:301
msgid "Commande introuvable." msgid "Commande introuvable."
msgstr "Order not found." msgstr "Order not found."
#: mobile/views.py:448 #: mobile/views.py:457
msgid "A traiter" msgid "A traiter"
msgstr "To process" msgstr "To process"
#: mobile/views.py:449 #: mobile/views.py:458
msgid "En attente" msgid "En attente"
msgstr "On hold" msgstr "On hold"
#: mobile/views.py:450 #: mobile/views.py:459
msgid "Traité" msgid "Traité"
msgstr "Processed" msgstr "Processed"
#: mobile/views.py:451 #: mobile/views.py:460
msgid "Annulé" msgid "Annulé"
msgstr "Cancelled" msgstr "Cancelled"
#: mobile/views.py:454 #: mobile/views.py:463
msgid "Urgent" msgid "Urgent"
msgstr "Urgent" msgstr "Urgent"
#: mobile/views.py:455 #: mobile/views.py:464
msgid "Elevé" msgid "Elevé"
msgstr "High" msgstr "High"
#: mobile/views.py:456 #: mobile/views.py:465
msgid "Normal" msgid "Normal"
msgstr "Normal" msgstr "Normal"
#: mobile/views.py:457 #: mobile/views.py:466
msgid "Bas" msgid "Bas"
msgstr "Low" msgstr "Low"
#: mobile/views.py:607 #: mobile/views.py:616
msgid "Vous n'avez pas la permission d'accéder à cette page." msgid "Vous n'avez pas la permission d'accéder à cette page."
msgstr "You do not have permission to access this page." msgstr "You do not have permission to access this page."
#: mobile/views.py:637 #: mobile/views.py:646
#, python-brace-format #, python-brace-format
msgid "Issu de l'article {product} du bon de préparation #{order_number}" msgid "Issu de l'article {product} du bon de préparation #{order_number}"
msgstr "From the article {product} of the preparation order #{order_number}" msgstr "From the article {product} of the preparation order #{order_number}"
#: mobile/views.py:656 #: mobile/views.py:665
#, python-brace-format #, python-brace-format
msgid "Issu de l'item #{id} du bon de préparation #{order_number}: {desc}" msgid "Issu de l'item #{id} du bon de préparation #{order_number}: {desc}"
msgstr "From item #{id} of preparation order #{order_number}: {desc}" msgstr "From item #{id} of preparation order #{order_number}: {desc}"
#: mobile/views.py:685 #: mobile/views.py:694
msgid "Bon de confection créé avec succès." msgid "Bon de confection créé avec succès."
msgstr "Crafting voucher successfully created." msgstr "Crafting voucher successfully created."
#: mobile/views.py:745 #: mobile/views.py:754
msgid "Vous n'avez pas la permission d'ajouter une signature à ce lot." msgid "Vous n'avez pas la permission d'ajouter une signature à ce lot."
msgstr "You do not have permission to add a signature to this batch." msgstr "You do not have permission to add a signature to this batch."
#: mobile/views.py:761 #: mobile/views.py:770
msgid "Signature enregistrée avec succès." msgid "Signature enregistrée avec succès."
msgstr "Signature registered successfully." msgstr "Signature registered successfully."
#: mobile/views.py:847 #: mobile/views.py:856
msgid "Veuillez sélectionner un emplacement." msgid "Veuillez sélectionner un emplacement."
msgstr "Please select a location." msgstr "Please select a location."
#: mobile/views.py:854 #: mobile/views.py:863
msgid "Emplacement invalide ou non accessible." msgid "Emplacement invalide ou non accessible."
msgstr "Invalid or inaccessible location." msgstr "Invalid or inaccessible location."
#: mobile/views.py:875 #: mobile/views.py:884
msgid "Inventaire créé avec succès." msgid "Inventaire créé avec succès."
msgstr "Inventory created successfully." msgstr "Inventory created successfully."
#: mobile/views.py:976 #: mobile/views.py:985
msgid "Document(s) ajouté(s) avec succès." msgid "Document(s) ajouté(s) avec succès."
msgstr "Document(s) added successfully." msgstr "Document(s) added successfully."

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-21 12:07+0200\n" "POT-Creation-Date: 2026-09-13 09:05+0200\n"
"PO-Revision-Date: 2025-12-04 12:00+0100\n" "PO-Revision-Date: 2025-12-04 12:00+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French <LL@li.org>\n" "Language-Team: French <LL@li.org>\n"
@ -16,6 +16,124 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: mobile/templates/mobile/assets/assets_index_mobile.html:6
#: mobile/templates/mobile/mobile_index.html:145
msgid "Patrimoine & Assets"
msgstr "Patrimoine & Assets"
#: mobile/templates/mobile/assets/assets_index_mobile.html:302
msgid "Code, nom, modèle..."
msgstr "Code, nom, modèle..."
#: mobile/templates/mobile/assets/assets_index_mobile.html:307
msgid "Effacer"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:316
msgid "Réinitialiser la recherche, les filtres et le zoom"
msgstr "Réinitialiser la recherche, les filtres et le zoom"
#: mobile/templates/mobile/assets/assets_index_mobile.html:318
msgid "Reset"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:322
msgid "Mode d'affichage"
msgstr "Mode d'affichage"
#: mobile/templates/mobile/assets/assets_index_mobile.html:324
msgid "Carte"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:327
msgid "Liste"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:337
msgid "Tous statuts"
msgstr "Tous statuts"
#: mobile/templates/mobile/assets/assets_index_mobile.html:362
msgid "Limite atteinte"
msgstr "Limite atteinte"
#: mobile/templates/mobile/assets/assets_index_mobile.html:362
msgid ""
"Plus de 500 assets correspondent. Veuillez zoomer sur la carte ou affiner "
"vos critères de recherche."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:369
msgid "asset(s) trouvé(s)"
msgstr "asset(s) trouvé(s)"
#: mobile/templates/mobile/assets/assets_index_mobile.html:371
msgid "500 affichés"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:373
msgid ""
"Filtré selon la zone visible sur la carte. Cliquez pour élargir à toute la "
"commune."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:374
msgid "Zone visible"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:377
msgid "Trié par distance"
msgstr "Trié par distance"
#: mobile/templates/mobile/assets/assets_index_mobile.html:381
#: mobile/templates/mobile/mobile_base.html:220
msgid "Chargement..."
msgstr "Chargement..."
#: mobile/templates/mobile/assets/assets_index_mobile.html:395
#: mobile/templates/mobile/assets/assets_index_mobile.html:416
msgid "Sélectionnez une thématique"
msgstr "Sélectionnez une thématique"
#: mobile/templates/mobile/assets/assets_index_mobile.html:396
msgid ""
"Veuillez choisir une thématique ci-dessus pour afficher les assets sur la "
"carte."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:400
msgid "Ma position"
msgstr "Ma position"
#: mobile/templates/mobile/assets/assets_index_mobile.html:417
msgid ""
"Veuillez choisir une thématique ci-dessus pour afficher la liste des assets."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:424
msgid "Aucun asset trouvé"
msgstr "Aucun asset trouvé"
#: mobile/templates/mobile/assets/assets_index_mobile.html:425
msgid "Modifiez votre recherche ou zoomez sur une autre zone."
msgstr "Modifiez votre recherche ou zoomez sur une autre zone."
#: mobile/templates/mobile/assets/assets_index_mobile.html:427
msgid "Réinitialiser les filtres"
msgstr "Réinitialiser les filtres"
#: mobile/templates/mobile/assets/assets_index_mobile.html:461
msgid "Consulter la fiche"
msgstr "Consulter la fiche"
#: mobile/templates/mobile/assets/assets_index_mobile.html:463
msgid "Itinéraire GPS"
msgstr "Itinéraire GPS"
#: mobile/templates/mobile/assets/assets_index_mobile.html:996
msgid "La géolocalisation n'est pas supportée par votre navigateur."
msgstr "La géolocalisation n'est pas supportée par votre navigateur."
#: mobile/templates/mobile/green_surfaces_edit_v2.html:240 #: mobile/templates/mobile/green_surfaces_edit_v2.html:240
msgid "Espaces verts - V2" msgid "Espaces verts - V2"
msgstr "Espaces verts - V2" msgstr "Espaces verts - V2"
@ -34,9 +152,11 @@ msgstr "élément(s) sélectionné(s)"
#: mobile/templates/mobile/green_surfaces_edit_v2.html:275 #: mobile/templates/mobile/green_surfaces_edit_v2.html:275
msgid "" msgid ""
"Sélectionnez un modèle ci-dessous pour l'appliquer aux éléments sélectionnés." "Sélectionnez un modèle ci-dessous pour l'appliquer aux éléments "
"sélectionnés."
msgstr "" msgstr ""
"Sélectionnez un modèle ci-dessous pour l'appliquer aux éléments sélectionnés." "Sélectionnez un modèle ci-dessous pour l'appliquer aux éléments "
"sélectionnés."
#: mobile/templates/mobile/green_surfaces_edit_v2.html:280 #: mobile/templates/mobile/green_surfaces_edit_v2.html:280
msgid "Édition des attributs" msgid "Édition des attributs"
@ -201,7 +321,7 @@ msgstr ""
"Tracez une ligne pour découper le polygone. Double-cliquez pour terminer." "Tracez une ligne pour découper le polygone. Double-cliquez pour terminer."
#: mobile/templates/mobile/green_surfaces_edit_v2.html:1107 #: mobile/templates/mobile/green_surfaces_edit_v2.html:1107
#: mobile/templates/mobile/mobile_index.html:146 #: mobile/templates/mobile/mobile_index.html:158
msgid "Espaces verts" msgid "Espaces verts"
msgstr "Espaces verts" msgstr "Espaces verts"
@ -226,19 +346,15 @@ msgstr "Actif"
msgid "Quitter" msgid "Quitter"
msgstr "Quitter" msgstr "Quitter"
#: mobile/templates/mobile/mobile_base.html:218 #: mobile/templates/mobile/mobile_base.html:244
msgid "Chargement..."
msgstr "Chargement..."
#: mobile/templates/mobile/mobile_base.html:242
msgid "Notifications" msgid "Notifications"
msgstr "Notifications" msgstr "Notifications"
#: mobile/templates/mobile/mobile_base.html:248 #: mobile/templates/mobile/mobile_base.html:250
msgid "notifications non lues" msgid "notifications non lues"
msgstr "notifications non lues" msgstr "notifications non lues"
#: mobile/templates/mobile/mobile_base.html:254 #: mobile/templates/mobile/mobile_base.html:256
msgid "Scanner un QR Code" msgid "Scanner un QR Code"
msgstr "Scanner un QR Code" msgstr "Scanner un QR Code"
@ -250,13 +366,11 @@ msgstr "Notifications non lues"
#, python-format #, python-format
msgid "" msgid ""
"\n" "\n"
" Vous avez <strong class=\"home-unread-" " Vous avez <strong class=\"home-unread-notifications-count\">%(count)s</strong> notification non lue.\n"
"notifications-count\">%(count)s</strong> notification non lue.\n"
" " " "
msgid_plural "" msgid_plural ""
"\n" "\n"
" Vous avez <strong class=\"home-unread-" " Vous avez <strong class=\"home-unread-notifications-count\">%(count)s</strong> notifications non lues.\n"
"notifications-count\">%(count)s</strong> notifications non lues.\n"
" " " "
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
@ -329,15 +443,19 @@ msgstr "Inspections d'assets"
msgid "Consulter la liste et l'historique des vérifications d'assets" msgid "Consulter la liste et l'historique des vérifications d'assets"
msgstr "Consulter la liste et l'historique des vérifications d'assets" msgstr "Consulter la liste et l'historique des vérifications d'assets"
#: mobile/templates/mobile/mobile_index.html:147 #: mobile/templates/mobile/mobile_index.html:146
msgid "Consulter et localiser les assets sur le terrain"
msgstr "Consulter et localiser les assets sur le terrain"
#: mobile/templates/mobile/mobile_index.html:159
msgid "Éditer les espaces verts" msgid "Éditer les espaces verts"
msgstr "Éditer les espaces verts" msgstr "Éditer les espaces verts"
#: mobile/templates/mobile/mobile_index.html:158 #: mobile/templates/mobile/mobile_index.html:170
msgid "Stock" msgid "Stock"
msgstr "Stock" msgstr "Stock"
#: mobile/templates/mobile/mobile_index.html:159 #: mobile/templates/mobile/mobile_index.html:171
msgid "Gérer les produits, commandes et mouvements de stock" msgid "Gérer les produits, commandes et mouvements de stock"
msgstr "Gérer les produits, commandes et mouvements de stock" msgstr "Gérer les produits, commandes et mouvements de stock"
@ -360,7 +478,8 @@ msgid "Télécharger l'APK Android"
msgstr "Télécharger l'APK Android" msgstr "Télécharger l'APK Android"
#: mobile/templates/mobile/mobile_install.html:77 #: mobile/templates/mobile/mobile_install.html:77
msgid "Installez la version native (recommandé pour les appareils de terrain)." msgid ""
"Installez la version native (recommandé pour les appareils de terrain)."
msgstr "" msgstr ""
"Installez la version native (recommandé pour les appareils de " "Installez la version native (recommandé pour les appareils de "
"terrain).Installez la version native (recommandé pour les appareils de " "terrain).Installez la version native (recommandé pour les appareils de "
@ -407,7 +526,8 @@ msgid "Confirmez : l'icône apparaît comme une application."
msgstr "Confirmez : l'icône apparaît comme une application." msgstr "Confirmez : l'icône apparaît comme une application."
#: mobile/templates/mobile/mobile_install.html:103 #: mobile/templates/mobile/mobile_install.html:103
msgid "Assurez-vous d'accepter l'installation quand la bannière PWA s'affiche." msgid ""
"Assurez-vous d'accepter l'installation quand la bannière PWA s'affiche."
msgstr "" msgstr ""
"Assurez-vous d'accepter l'installation quand la bannière PWA " "Assurez-vous d'accepter l'installation quand la bannière PWA "
"s'affiche.Assurez-vous d'accepter l'installation quand la bannière PWA " "s'affiche.Assurez-vous d'accepter l'installation quand la bannière PWA "
@ -504,7 +624,7 @@ msgstr "Pointez vers un QR code…"
msgid "QR Code détecté, résolution…" msgid "QR Code détecté, résolution…"
msgstr "QR Code détecté, résolution…" msgstr "QR Code détecté, résolution…"
#: mobile/templates/mobile/qr_scanner.html:210 mobile/views.py:264 #: mobile/templates/mobile/qr_scanner.html:210 mobile/views.py:273
msgid "QR Code non reconnu." msgid "QR Code non reconnu."
msgstr "QR Code non reconnu." msgstr "QR Code non reconnu."
@ -512,88 +632,92 @@ msgstr "QR Code non reconnu."
msgid "Erreur lors de la résolution." msgid "Erreur lors de la résolution."
msgstr "Erreur lors de la résolution." msgstr "Erreur lors de la résolution."
#: mobile/views.py:268 #: mobile/views.py:277
msgid "Format de QR Code invalide." msgid "Format de QR Code invalide."
msgstr "Format de QR Code invalide." msgstr "Format de QR Code invalide."
#: mobile/views.py:292 #: mobile/views.py:301
msgid "Commande introuvable." msgid "Commande introuvable."
msgstr "Commande introuvable." msgstr "Commande introuvable."
#: mobile/views.py:448 #: mobile/views.py:457
msgid "A traiter" msgid "A traiter"
msgstr "A traiter" msgstr "A traiter"
#: mobile/views.py:449 #: mobile/views.py:458
msgid "En attente" msgid "En attente"
msgstr "En attente" msgstr "En attente"
#: mobile/views.py:450 #: mobile/views.py:459
msgid "Traité" msgid "Traité"
msgstr "Traité" msgstr "Traité"
#: mobile/views.py:451 #: mobile/views.py:460
msgid "Annulé" msgid "Annulé"
msgstr "Annulé" msgstr "Annulé"
#: mobile/views.py:454 #: mobile/views.py:463
msgid "Urgent" msgid "Urgent"
msgstr "Urgent" msgstr "Urgent"
#: mobile/views.py:455 #: mobile/views.py:464
msgid "Elevé" msgid "Elevé"
msgstr "Elevé" msgstr "Elevé"
#: mobile/views.py:456 #: mobile/views.py:465
msgid "Normal" msgid "Normal"
msgstr "Normal" msgstr "Normal"
#: mobile/views.py:457 #: mobile/views.py:466
msgid "Bas" msgid "Bas"
msgstr "Bas" msgstr "Bas"
#: mobile/views.py:607 #: mobile/views.py:616
msgid "Vous n'avez pas la permission d'accéder à cette page." msgid "Vous n'avez pas la permission d'accéder à cette page."
msgstr "Vous n'avez pas la permission d'accéder à cette page." msgstr "Vous n'avez pas la permission d'accéder à cette page."
#: mobile/views.py:637 #: mobile/views.py:646
#, python-brace-format #, python-brace-format
msgid "Issu de l'article {product} du bon de préparation #{order_number}" msgid "Issu de l'article {product} du bon de préparation #{order_number}"
msgstr "Issu de l'article {product} du bon de préparation #{order_number}" msgstr "Issu de l'article {product} du bon de préparation #{order_number}"
#: mobile/views.py:656 #: mobile/views.py:665
#, python-brace-format #, python-brace-format
msgid "Issu de l'item #{id} du bon de préparation #{order_number}: {desc}" msgid "Issu de l'item #{id} du bon de préparation #{order_number}: {desc}"
msgstr "Issu de l'item #{id} du bon de préparation #{order_number}: {desc}" msgstr "Issu de l'item #{id} du bon de préparation #{order_number}: {desc}"
#: mobile/views.py:685 #: mobile/views.py:694
msgid "Bon de confection créé avec succès." msgid "Bon de confection créé avec succès."
msgstr "Bon de confection créé avec succès." msgstr "Bon de confection créé avec succès."
#: mobile/views.py:745 #: mobile/views.py:754
msgid "Vous n'avez pas la permission d'ajouter une signature à ce lot." msgid "Vous n'avez pas la permission d'ajouter une signature à ce lot."
msgstr "Vous n'avez pas la permission d'ajouter une signature à ce lot." msgstr "Vous n'avez pas la permission d'ajouter une signature à ce lot."
#: mobile/views.py:761 #: mobile/views.py:770
msgid "Signature enregistrée avec succès." msgid "Signature enregistrée avec succès."
msgstr "Signature enregistrée avec succès." msgstr "Signature enregistrée avec succès."
#: mobile/views.py:847 #: mobile/views.py:856
msgid "Veuillez sélectionner un emplacement." msgid "Veuillez sélectionner un emplacement."
msgstr "Veuillez sélectionner un emplacement." msgstr "Veuillez sélectionner un emplacement."
#: mobile/views.py:854 #: mobile/views.py:863
msgid "Emplacement invalide ou non accessible." msgid "Emplacement invalide ou non accessible."
msgstr "Emplacement invalide ou non accessible." msgstr "Emplacement invalide ou non accessible."
#: mobile/views.py:875 #: mobile/views.py:884
msgid "Inventaire créé avec succès." msgid "Inventaire créé avec succès."
msgstr "Inventaire créé avec succès." msgstr "Inventaire créé avec succès."
#: mobile/views.py:976 #: mobile/views.py:985
msgid "Document(s) ajouté(s) avec succès." msgid "Document(s) ajouté(s) avec succès."
msgstr "Document(s) ajouté(s) avec succès." msgstr "Document(s) ajouté(s) avec succès."
#, fuzzy
#~ msgid "Mode d\\"
#~ msgstr "Mode dessin"
#~ msgid "StreetUp" #~ msgid "StreetUp"
#~ msgstr "StreetUp" #~ msgstr "StreetUp"

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-21 12:07+0200\n" "POT-Creation-Date: 2026-09-13 09:05+0200\n"
"PO-Revision-Date: 2025-12-04 12:00+0100\n" "PO-Revision-Date: 2025-12-04 12:00+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch <LL@li.org>\n" "Language-Team: Dutch <LL@li.org>\n"
@ -16,6 +16,124 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: mobile/templates/mobile/assets/assets_index_mobile.html:6
#: mobile/templates/mobile/mobile_index.html:145
msgid "Patrimoine & Assets"
msgstr "Patrimonium & Assets"
#: mobile/templates/mobile/assets/assets_index_mobile.html:302
msgid "Code, nom, modèle..."
msgstr "Code, naam, model..."
#: mobile/templates/mobile/assets/assets_index_mobile.html:307
msgid "Effacer"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:316
msgid "Réinitialiser la recherche, les filtres et le zoom"
msgstr "Zoekopdracht, filters en zoom resetten"
#: mobile/templates/mobile/assets/assets_index_mobile.html:318
msgid "Reset"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:322
msgid "Mode d'affichage"
msgstr "Weergavemodus"
#: mobile/templates/mobile/assets/assets_index_mobile.html:324
msgid "Carte"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:327
msgid "Liste"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:337
msgid "Tous statuts"
msgstr "Alle statussen"
#: mobile/templates/mobile/assets/assets_index_mobile.html:362
msgid "Limite atteinte"
msgstr "Limiet bereikt"
#: mobile/templates/mobile/assets/assets_index_mobile.html:362
msgid ""
"Plus de 500 assets correspondent. Veuillez zoomer sur la carte ou affiner "
"vos critères de recherche."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:369
msgid "asset(s) trouvé(s)"
msgstr "asset(s) gevonden"
#: mobile/templates/mobile/assets/assets_index_mobile.html:371
msgid "500 affichés"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:373
msgid ""
"Filtré selon la zone visible sur la carte. Cliquez pour élargir à toute la "
"commune."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:374
msgid "Zone visible"
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:377
msgid "Trié par distance"
msgstr "Gesorteerd op afstand"
#: mobile/templates/mobile/assets/assets_index_mobile.html:381
#: mobile/templates/mobile/mobile_base.html:220
msgid "Chargement..."
msgstr "Laden..."
#: mobile/templates/mobile/assets/assets_index_mobile.html:395
#: mobile/templates/mobile/assets/assets_index_mobile.html:416
msgid "Sélectionnez une thématique"
msgstr "Selecteer een thema"
#: mobile/templates/mobile/assets/assets_index_mobile.html:396
msgid ""
"Veuillez choisir une thématique ci-dessus pour afficher les assets sur la "
"carte."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:400
msgid "Ma position"
msgstr "Mijn positie"
#: mobile/templates/mobile/assets/assets_index_mobile.html:417
msgid ""
"Veuillez choisir une thématique ci-dessus pour afficher la liste des assets."
msgstr ""
#: mobile/templates/mobile/assets/assets_index_mobile.html:424
msgid "Aucun asset trouvé"
msgstr "Geen assets gevonden"
#: mobile/templates/mobile/assets/assets_index_mobile.html:425
msgid "Modifiez votre recherche ou zoomez sur une autre zone."
msgstr "Pas uw zoekopdracht aan of zoom in op een andere zone."
#: mobile/templates/mobile/assets/assets_index_mobile.html:427
msgid "Réinitialiser les filtres"
msgstr "Filters resetten"
#: mobile/templates/mobile/assets/assets_index_mobile.html:461
msgid "Consulter la fiche"
msgstr "Fiche bekijken"
#: mobile/templates/mobile/assets/assets_index_mobile.html:463
msgid "Itinéraire GPS"
msgstr "GPS Routebeschrijving"
#: mobile/templates/mobile/assets/assets_index_mobile.html:996
msgid "La géolocalisation n'est pas supportée par votre navigateur."
msgstr "Geolocatie wordt niet ondersteund door uw browser."
#: mobile/templates/mobile/green_surfaces_edit_v2.html:240 #: mobile/templates/mobile/green_surfaces_edit_v2.html:240
msgid "Espaces verts - V2" msgid "Espaces verts - V2"
msgstr "Groene ruimtes - V2" msgstr "Groene ruimtes - V2"
@ -34,7 +152,8 @@ msgstr "geselecteerde elementen"
#: mobile/templates/mobile/green_surfaces_edit_v2.html:275 #: mobile/templates/mobile/green_surfaces_edit_v2.html:275
msgid "" msgid ""
"Sélectionnez un modèle ci-dessous pour l'appliquer aux éléments sélectionnés." "Sélectionnez un modèle ci-dessous pour l'appliquer aux éléments "
"sélectionnés."
msgstr "" msgstr ""
"Selecteer een model hieronder om toe te passen op de geselecteerde items." "Selecteer een model hieronder om toe te passen op de geselecteerde items."
@ -200,7 +319,7 @@ msgid ""
msgstr "Teken een lijn om de polygoon te knippen. Dubbelklik om te voltooien." msgstr "Teken een lijn om de polygoon te knippen. Dubbelklik om te voltooien."
#: mobile/templates/mobile/green_surfaces_edit_v2.html:1107 #: mobile/templates/mobile/green_surfaces_edit_v2.html:1107
#: mobile/templates/mobile/mobile_index.html:146 #: mobile/templates/mobile/mobile_index.html:158
msgid "Espaces verts" msgid "Espaces verts"
msgstr "Groene ruimtes" msgstr "Groene ruimtes"
@ -225,19 +344,15 @@ msgstr "Actief"
msgid "Quitter" msgid "Quitter"
msgstr "Afsluiten" msgstr "Afsluiten"
#: mobile/templates/mobile/mobile_base.html:218 #: mobile/templates/mobile/mobile_base.html:244
msgid "Chargement..."
msgstr "Laden..."
#: mobile/templates/mobile/mobile_base.html:242
msgid "Notifications" msgid "Notifications"
msgstr "Meldingen" msgstr "Meldingen"
#: mobile/templates/mobile/mobile_base.html:248 #: mobile/templates/mobile/mobile_base.html:250
msgid "notifications non lues" msgid "notifications non lues"
msgstr "ongelezen meldingen" msgstr "ongelezen meldingen"
#: mobile/templates/mobile/mobile_base.html:254 #: mobile/templates/mobile/mobile_base.html:256
msgid "Scanner un QR Code" msgid "Scanner un QR Code"
msgstr "Scan een QR-code" msgstr "Scan een QR-code"
@ -249,13 +364,11 @@ msgstr "Ongelezen meldingen"
#, python-format #, python-format
msgid "" msgid ""
"\n" "\n"
" Vous avez <strong class=\"home-unread-" " Vous avez <strong class=\"home-unread-notifications-count\">%(count)s</strong> notification non lue.\n"
"notifications-count\">%(count)s</strong> notification non lue.\n"
" " " "
msgid_plural "" msgid_plural ""
"\n" "\n"
" Vous avez <strong class=\"home-unread-" " Vous avez <strong class=\"home-unread-notifications-count\">%(count)s</strong> notifications non lues.\n"
"notifications-count\">%(count)s</strong> notifications non lues.\n"
" " " "
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
@ -328,15 +441,19 @@ msgstr "Assetinspecties"
msgid "Consulter la liste et l'historique des vérifications d'assets" msgid "Consulter la liste et l'historique des vérifications d'assets"
msgstr "Bekijk de lijst en geschiedenis van assetcontroles" msgstr "Bekijk de lijst en geschiedenis van assetcontroles"
#: mobile/templates/mobile/mobile_index.html:147 #: mobile/templates/mobile/mobile_index.html:146
msgid "Consulter et localiser les assets sur le terrain"
msgstr "Assets op het terrein raadplegen en lokaliseren"
#: mobile/templates/mobile/mobile_index.html:159
msgid "Éditer les espaces verts" msgid "Éditer les espaces verts"
msgstr "Groene ruimtes bewerken" msgstr "Groene ruimtes bewerken"
#: mobile/templates/mobile/mobile_index.html:158 #: mobile/templates/mobile/mobile_index.html:170
msgid "Stock" msgid "Stock"
msgstr "Voorraad" msgstr "Voorraad"
#: mobile/templates/mobile/mobile_index.html:159 #: mobile/templates/mobile/mobile_index.html:171
msgid "Gérer les produits, commandes et mouvements de stock" msgid "Gérer les produits, commandes et mouvements de stock"
msgstr "Beheer producten, bestellingen en voorraadbewegingen" msgstr "Beheer producten, bestellingen en voorraadbewegingen"
@ -358,7 +475,8 @@ msgid "Télécharger l'APK Android"
msgstr "Download Android APK" msgstr "Download Android APK"
#: mobile/templates/mobile/mobile_install.html:77 #: mobile/templates/mobile/mobile_install.html:77
msgid "Installez la version native (recommandé pour les appareils de terrain)." msgid ""
"Installez la version native (recommandé pour les appareils de terrain)."
msgstr "Installeer de native versie (aanbevolen voor veldapparaten)." msgstr "Installeer de native versie (aanbevolen voor veldapparaten)."
#: mobile/templates/mobile/mobile_install.html:79 #: mobile/templates/mobile/mobile_install.html:79
@ -401,9 +519,11 @@ msgid "Confirmez : l'icône apparaît comme une application."
msgstr "Bevestig: het pictogram verschijnt als een applicatie." msgstr "Bevestig: het pictogram verschijnt als een applicatie."
#: mobile/templates/mobile/mobile_install.html:103 #: mobile/templates/mobile/mobile_install.html:103
msgid "Assurez-vous d'accepter l'installation quand la bannière PWA s'affiche." msgid ""
"Assurez-vous d'accepter l'installation quand la bannière PWA s'affiche."
msgstr "" msgstr ""
"Zorg ervoor dat u de installatie accepteert wanneer de PWA-banner verschijnt." "Zorg ervoor dat u de installatie accepteert wanneer de PWA-banner "
"verschijnt."
#: mobile/templates/mobile/mobile_install.html:106 #: mobile/templates/mobile/mobile_install.html:106
msgid "Ouvrir l'application" msgid "Ouvrir l'application"
@ -496,7 +616,7 @@ msgstr "Wijs een QR-code aan..."
msgid "QR Code détecté, résolution…" msgid "QR Code détecté, résolution…"
msgstr "QR-code gedetecteerd, resolutie..." msgstr "QR-code gedetecteerd, resolutie..."
#: mobile/templates/mobile/qr_scanner.html:210 mobile/views.py:264 #: mobile/templates/mobile/qr_scanner.html:210 mobile/views.py:273
msgid "QR Code non reconnu." msgid "QR Code non reconnu."
msgstr "QR-code niet herkend." msgstr "QR-code niet herkend."
@ -504,90 +624,94 @@ msgstr "QR-code niet herkend."
msgid "Erreur lors de la résolution." msgid "Erreur lors de la résolution."
msgstr "Fout bij het verwerken van de QR-code." msgstr "Fout bij het verwerken van de QR-code."
#: mobile/views.py:268 #: mobile/views.py:277
msgid "Format de QR Code invalide." msgid "Format de QR Code invalide."
msgstr "Ongeldig QR-codeformaat." msgstr "Ongeldig QR-codeformaat."
#: mobile/views.py:292 #: mobile/views.py:301
msgid "Commande introuvable." msgid "Commande introuvable."
msgstr "Bestelling niet gevonden." msgstr "Bestelling niet gevonden."
#: mobile/views.py:448 #: mobile/views.py:457
msgid "A traiter" msgid "A traiter"
msgstr "Te verwerken" msgstr "Te verwerken"
#: mobile/views.py:449 #: mobile/views.py:458
msgid "En attente" msgid "En attente"
msgstr "In afwachting" msgstr "In afwachting"
#: mobile/views.py:450 #: mobile/views.py:459
msgid "Traité" msgid "Traité"
msgstr "Verwerkt" msgstr "Verwerkt"
#: mobile/views.py:451 #: mobile/views.py:460
msgid "Annulé" msgid "Annulé"
msgstr "Geannuleerd" msgstr "Geannuleerd"
#: mobile/views.py:454 #: mobile/views.py:463
msgid "Urgent" msgid "Urgent"
msgstr "Dringend" msgstr "Dringend"
#: mobile/views.py:455 #: mobile/views.py:464
msgid "Elevé" msgid "Elevé"
msgstr "Hoog" msgstr "Hoog"
#: mobile/views.py:456 #: mobile/views.py:465
msgid "Normal" msgid "Normal"
msgstr "Normaal" msgstr "Normaal"
#: mobile/views.py:457 #: mobile/views.py:466
msgid "Bas" msgid "Bas"
msgstr "Laag" msgstr "Laag"
#: mobile/views.py:607 #: mobile/views.py:616
msgid "Vous n'avez pas la permission d'accéder à cette page." msgid "Vous n'avez pas la permission d'accéder à cette page."
msgstr "U heeft geen toestemming om deze pagina te bezoeken." msgstr "U heeft geen toestemming om deze pagina te bezoeken."
#: mobile/views.py:637 #: mobile/views.py:646
#, python-brace-format #, python-brace-format
msgid "Issu de l'article {product} du bon de préparation #{order_number}" msgid "Issu de l'article {product} du bon de préparation #{order_number}"
msgstr "" msgstr ""
"Uit het artikel {product} van de voorbereidingsbestelling #{order_number}" "Uit het artikel {product} van de voorbereidingsbestelling #{order_number}"
#: mobile/views.py:656 #: mobile/views.py:665
#, python-brace-format #, python-brace-format
msgid "Issu de l'item #{id} du bon de préparation #{order_number}: {desc}" msgid "Issu de l'item #{id} du bon de préparation #{order_number}: {desc}"
msgstr "Van item #{id} van voorbereidingsorder #{order_number}: {desc}" msgstr "Van item #{id} van voorbereidingsorder #{order_number}: {desc}"
#: mobile/views.py:685 #: mobile/views.py:694
msgid "Bon de confection créé avec succès." msgid "Bon de confection créé avec succès."
msgstr "Craftingvoucher succesvol aangemaakt." msgstr "Craftingvoucher succesvol aangemaakt."
#: mobile/views.py:745 #: mobile/views.py:754
msgid "Vous n'avez pas la permission d'ajouter une signature à ce lot." msgid "Vous n'avez pas la permission d'ajouter une signature à ce lot."
msgstr "" msgstr ""
"U heeft geen toestemming om een ​​handtekening aan deze batch toe te voegen." "U heeft geen toestemming om een ​​handtekening aan deze batch toe te voegen."
#: mobile/views.py:761 #: mobile/views.py:770
msgid "Signature enregistrée avec succès." msgid "Signature enregistrée avec succès."
msgstr "Handtekening succesvol geregistreerd." msgstr "Handtekening succesvol geregistreerd."
#: mobile/views.py:847 #: mobile/views.py:856
msgid "Veuillez sélectionner un emplacement." msgid "Veuillez sélectionner un emplacement."
msgstr "Selecteer een locatie." msgstr "Selecteer een locatie."
#: mobile/views.py:854 #: mobile/views.py:863
msgid "Emplacement invalide ou non accessible." msgid "Emplacement invalide ou non accessible."
msgstr "Ongeldige of ontoegankelijke locatie." msgstr "Ongeldige of ontoegankelijke locatie."
#: mobile/views.py:875 #: mobile/views.py:884
msgid "Inventaire créé avec succès." msgid "Inventaire créé avec succès."
msgstr "Inventaris succesvol aangemaakt." msgstr "Inventaris succesvol aangemaakt."
#: mobile/views.py:976 #: mobile/views.py:985
msgid "Document(s) ajouté(s) avec succès." msgid "Document(s) ajouté(s) avec succès."
msgstr "Document(en) succesvol toegevoegd." msgstr "Document(en) succesvol toegevoegd."
#, fuzzy
#~ msgid "Mode d\\"
#~ msgstr "Tekenmodus"
#~ msgid "StreetUp" #~ msgid "StreetUp"
#~ msgstr "StraatUp" #~ msgstr "StraatUp"

File diff suppressed because it is too large Load diff

View file

@ -207,6 +207,8 @@
})(); })();
</script> </script>
{% block head %}
{% endblock head %}
{% block extra_head %} {% block extra_head %}
{% endblock extra_head %} {% endblock extra_head %}
</head> </head>
@ -404,6 +406,8 @@ if ('serviceWorker' in navigator) {
{% endblock extra_scripts %} {% endblock extra_scripts %}
{% block extra_js %} {% block extra_js %}
{% endblock extra_js %} {% endblock extra_js %}
{% block script %}
{% endblock script %}
</body> </body>
</html> </html>

View file

@ -136,6 +136,18 @@
</div> </div>
{% endif %} {% endif %}
{% if can_view_assets %}
<div class="col-12">
<a class="card-link d-block" href="{% url 'mobile:mobile_assets_index' %}">
<div class="icon-wrapper">
<i class="bi bi-pin-map"></i>
</div>
<h2 class="fw-semibold">{% translate "Patrimoine & Assets" %}</h2>
<p>{% translate "Consulter et localiser les assets sur le terrain" %}</p>
</a>
</div>
{% endif %}
<!-- If user has permission to edit green surfaces --> <!-- If user has permission to edit green surfaces -->
{% if can_edit_green_surfaces %} {% if can_edit_green_surfaces %}
<div class="col-12"> <div class="col-12">

View file

@ -0,0 +1,373 @@
from django.test import TestCase, Client
from django.urls import reverse
from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType
from django.utils import translation
import json
from common.models import UserConfig, Role, Thematic, UserThematics
from assets.models import NatureTree, NatureLocation, NatureShrub
User = get_user_model()
class MobileAssetDetailTests(TestCase):
def setUp(self):
self.client = Client()
# Create or get thematic 'nature'
self.thematic, _ = Thematic.objects.get_or_create(
code="nature",
defaults={
"name_fr": "Espaces Verts & Nature",
"name_nl": "Groen & Natuur",
"icon": "bi-tree"
}
)
# Create Roles
self.admin_role, _ = Role.objects.get_or_create(name="admin")
self.editor_role, _ = Role.objects.get_or_create(name="editor")
self.viewer_role, _ = Role.objects.get_or_create(name="viewer")
self.observer_role, _ = Role.objects.get_or_create(name="observer")
# Create test tree asset
self.tree = NatureTree.objects.create(
code="ARB-TEST-001",
name_fr="Chêne pédonculé",
name_nl="Zomereik",
status="active",
height=15.5,
circumference=160.0,
crown_diameter=8.0,
crown_clearance=3.5,
development_stage="mature",
vitality="strong",
mechanical_state="good",
risk_level="low",
tag_number="TAG-48010",
)
# Create test shrub asset (generic asset without specific template)
self.shrub = NatureShrub.objects.create(
code="ARB-SHRUB-001",
name_fr="Rosier buisson",
name_nl="Struikroos",
status="active",
)
def test_anonymous_user_redirected_to_login(self):
"""Anonymous user trying to access mobile asset detail is redirected to login."""
url = reverse("mobile:mobile_asset_detail_direct", args=["naturetree", self.tree.id])
response = self.client.get(url)
self.assertEqual(response.status_code, 302)
self.assertIn("/login", response.url)
def test_unauthorized_user_forbidden(self):
"""User without view permissions on nature thematic receives HTTP 403."""
user = User.objects.create_user(username="forbidden_user", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.observer_role)
# Create UserThematics with can_view_assets=False
UserThematics.objects.create(
user_config=user_config,
thematic=self.thematic,
can_view_assets=False,
can_edit_assets=False
)
self.client.login(username="forbidden_user", password="password")
url = reverse("mobile:mobile_asset_detail_direct", args=["naturetree", self.tree.id])
response = self.client.get(url)
self.assertEqual(response.status_code, 403)
def test_authorized_user_can_view_tree_mobile(self):
"""User with view permission can view tree on mobile."""
user = User.objects.create_user(username="viewer_user", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.viewer_role)
UserThematics.objects.create(
user_config=user_config,
thematic=self.thematic,
can_view_assets=True,
can_edit_assets=False
)
self.client.login(username="viewer_user", password="password")
url = reverse("mobile:mobile_asset_detail_direct", args=["naturetree", self.tree.id])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "assets/naturetree_detail.html")
self.assertContains(response, "ARB-TEST-001")
self.assertContains(response, "Chêne pédonculé")
self.assertTrue(response.context["mobile_view"])
self.assertTrue(response.context["is_mobile"])
def test_mobile_read_only_user_has_no_edit_bar(self):
"""Read-only user has no edit bar or buttons on mobile."""
user = User.objects.create_user(username="readonly_user", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.viewer_role)
UserThematics.objects.create(
user_config=user_config,
thematic=self.thematic,
can_view_assets=True,
can_edit_assets=False
)
self.client.login(username="readonly_user", password="password")
url = reverse("mobile:mobile_asset_detail_direct", args=["naturetree", self.tree.id])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertNotContains(response, 'id="asset-cms-edit-bar"')
self.assertNotContains(response, 'id="asset-cms-edit-btn"')
def test_mobile_editor_has_sticky_edit_bar_and_actions(self):
"""User with edit permission sees the mobile sticky edit bar and action buttons."""
user = User.objects.create_user(username="editor_user", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.admin_role)
self.client.login(username="editor_user", password="password")
url = reverse("mobile:mobile_asset_detail_direct", args=["naturetree", self.tree.id])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'id="asset-cms-edit-bar"')
self.assertContains(response, 'mobile-edit-bar')
self.assertContains(response, 'id="asset-edit-mode-badge"')
self.assertContains(response, 'id="asset-cms-edit-btn"')
self.assertContains(response, 'id="asset-cms-save-btn"')
self.assertContains(response, 'id="asset-cms-cancel-btn"')
def test_tree_mobile_specific_elements(self):
"""NatureTree specific mobile design: dendrometric widgets, icons and input attributes."""
user = User.objects.create_user(username="tree_admin", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.admin_role)
self.client.login(username="tree_admin", password="password")
url = reverse("mobile:mobile_asset_detail_direct", args=["naturetree", self.tree.id])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
# Responsive dendrometric widgets
self.assertContains(response, "tree-metric-widget")
self.assertContains(response, "tree-header-icon")
# Touch friendly input attributes
self.assertContains(response, 'inputmode="decimal"')
self.assertContains(response, 'inputmode="numeric"')
def test_thematic_url_route(self):
"""Route with thematic prefix /mobile/assets/nature/naturetree/<id>/ works properly."""
user = User.objects.create_user(username="thematic_user", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.admin_role)
self.client.login(username="thematic_user", password="password")
url = reverse("mobile:mobile_asset_detail", args=["nature", "naturetree", self.tree.id])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context["thematic_code"], "nature")
self.assertEqual(response.context["asset"].id, self.tree.id)
def test_update_tree_via_ajax_endpoint(self):
"""Saving updated fields via update_asset AJAX endpoint updates tree in database."""
user = User.objects.create_user(username="update_user", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.admin_role)
self.client.login(username="update_user", password="password")
update_url = reverse("assets:update_asset", args=["naturetree", self.tree.id])
payload = {
"height": 18.2,
"circumference": 175.0,
"vitality": "strong",
"tag_number": "TAG-99999"
}
response = self.client.post(
update_url,
data=json.dumps(payload),
content_type="application/json"
)
self.assertEqual(response.status_code, 200)
data = response.json()
self.assertTrue(data.get("success"))
# Verify database update
self.tree.refresh_from_db()
self.assertEqual(self.tree.height, 18.2)
self.assertEqual(self.tree.circumference, 175.0)
self.assertEqual(self.tree.vitality, "strong")
self.assertEqual(self.tree.tag_number, "TAG-99999")
def test_mobile_index_shows_assets_card_when_authorized(self):
"""User with asset view rights sees 'Patrimoine & Assets' card on mobile home."""
user = User.objects.create_user(username="asset_viewer", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.viewer_role)
UserThematics.objects.create(
user_config=user_config,
thematic=self.thematic,
can_view_assets=True
)
self.client.login(username="asset_viewer", password="password")
response = self.client.get(reverse("mobile:mobile_index"))
self.assertEqual(response.status_code, 200)
self.assertTrue(response.context["can_view_assets"])
self.assertContains(response, reverse("mobile:mobile_assets_index"))
content = response.content.decode()
self.assertTrue(
"Patrimoine & Assets" in content or
"Assets & Heritage" in content or
"Patrimoine &amp; Assets" in content or
"Assets &amp; Heritage" in content
)
def test_mobile_index_hides_assets_card_when_unauthorized(self):
"""User without asset view rights does NOT see 'Patrimoine & Assets' card on mobile home."""
user = User.objects.create_user(username="no_asset_user", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.viewer_role)
UserThematics.objects.create(
user_config=user_config,
thematic=self.thematic,
can_view_assets=False
)
self.client.login(username="no_asset_user", password="password")
response = self.client.get(reverse("mobile:mobile_index"))
self.assertEqual(response.status_code, 200)
self.assertFalse(response.context["can_view_assets"])
self.assertNotContains(response, reverse("mobile:mobile_assets_index"))
def test_mobile_assets_index_view_permissions(self):
"""Test access controls on mobile_assets_index."""
# Anonymous -> 302
response = self.client.get(reverse("mobile:mobile_assets_index"))
self.assertEqual(response.status_code, 302)
# Unauthorized user -> 403
user_forbidden = User.objects.create_user(username="index_forbidden", password="password")
user_config = UserConfig.objects.create(user=user_forbidden, is_intern=True)
user_config.roles.add(self.viewer_role)
self.client.login(username="index_forbidden", password="password")
response = self.client.get(reverse("mobile:mobile_assets_index"))
self.assertEqual(response.status_code, 403)
# Authorized user -> 200 with template and context
UserThematics.objects.create(
user_config=user_config,
thematic=self.thematic,
can_view_assets=True
)
response = self.client.get(reverse("mobile:mobile_assets_index"))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "mobile/assets/assets_index_mobile.html")
self.assertIn("accessible_thematics", response.context)
self.assertIn("thematic_config_json", response.context)
self.assertIn("asset_status_choices", response.context)
# Assert JS script block is rendered and loaded
self.assertContains(response, "initMap")
self.assertContains(response, "maplibre-gl.js")
def test_mobile_assets_search_api(self):
"""Test mobile_assets_search JSON endpoint with filters and search queries."""
user = User.objects.create_user(username="search_user", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.viewer_role)
UserThematics.objects.create(
user_config=user_config,
thematic=self.thematic,
can_view_assets=True
)
self.client.login(username="search_user", password="password")
search_url = reverse("mobile:mobile_assets_search")
# 1. Search without thematic returns empty results (thematic required)
response = self.client.get(search_url)
self.assertEqual(response.status_code, 200)
data = response.json()
self.assertEqual(data["count"], 0)
self.assertEqual(data["results"], [])
self.assertFalse(data["limit_reached"])
# 2. Search with mandatory thematic 'nature'
response = self.client.get(search_url, {"thematic": "nature"})
self.assertEqual(response.status_code, 200)
data = response.json()
self.assertIn("results", data)
self.assertIn("geojson", data)
self.assertEqual(data["limit"], 500)
self.assertFalse(data["limit_reached"])
codes = [item["code"] for item in data["results"]]
self.assertIn("ARB-TEST-001", codes)
self.assertIn("ARB-SHRUB-001", codes)
# 3. Test limit reached logic with limit=1
response = self.client.get(search_url, {"thematic": "nature", "limit": "1"})
self.assertEqual(response.status_code, 200)
data = response.json()
self.assertEqual(data["count"], 1)
self.assertEqual(data["limit"], 1)
self.assertTrue(data["limit_reached"])
self.assertGreater(data["total_count"], 1)
# 4. Search with keyword 'Chêne'
response = self.client.get(search_url, {"thematic": "nature", "q": "Chêne"})
self.assertEqual(response.status_code, 200)
data = response.json()
codes = [item["code"] for item in data["results"]]
self.assertIn("ARB-TEST-001", codes)
self.assertNotIn("ARB-SHRUB-001", codes)
# 5. Filter by status 'active'
response = self.client.get(search_url, {"thematic": "nature", "status": "active"})
self.assertEqual(response.status_code, 200)
data = response.json()
self.assertGreaterEqual(data["count"], 1)
def test_generic_asset_uses_mobile_generic_template(self):
"""An asset model without specific template (NatureShrub) uses detail_generic_mobile.html."""
user = User.objects.create_user(username="shrub_viewer", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.admin_role)
self.client.login(username="shrub_viewer", password="password")
url = reverse("mobile:mobile_asset_detail_direct", args=["natureshrub", self.shrub.id])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "assets/detail_generic_mobile.html")
self.assertContains(response, "ARB-SHRUB-001")
self.assertContains(response, "Rosier buisson")
# Assert mobile navigation tabs and scripts are present
self.assertContains(response, "mobile-asset-tabs-nav")
self.assertContains(response, 'data-target-tab="tab-infos"')
self.assertContains(response, 'data-target-tab="tab-geo"')
self.assertContains(response, 'data-target-tab="tab-docs"')
self.assertContains(response, 'data-target-tab="tab-links"')
self.assertContains(response, "asset_cms_edit_mode.js")
self.assertContains(response, "initMobileAssetTabs")
def test_specific_asset_retains_specific_template(self):
"""NatureTree continues to use its specific template naturetree_detail.html."""
user = User.objects.create_user(username="tree_viewer", password="password")
user_config = UserConfig.objects.create(user=user, is_intern=True)
user_config.roles.add(self.admin_role)
self.client.login(username="tree_viewer", password="password")
url = reverse("mobile:mobile_asset_detail_direct", args=["naturetree", self.tree.id])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "assets/naturetree_detail.html")

View file

@ -37,7 +37,10 @@ urlpatterns = [
path("nature/green-surfaces/", views.green_surfaces_edit_mobile, name='green_surfaces_edit_mobile'), path("nature/green-surfaces/", views.green_surfaces_edit_mobile, name='green_surfaces_edit_mobile'),
path("nature/green-surfaces-custom-draw/", views.green_surfaces_edit_custom_draw, name='green_surfaces_edit_custom_draw'), path("nature/green-surfaces-custom-draw/", views.green_surfaces_edit_custom_draw, name='green_surfaces_edit_custom_draw'),
path("nature/green-surfaces-standalone/", views.green_surfaces_edit_standalone, name='green_surfaces_edit_standalone'), path("nature/green-surfaces-standalone/", views.green_surfaces_edit_standalone, name='green_surfaces_edit_standalone'),
path('assets/', views.mobile_assets_index, name='mobile_assets_index'),
path('assets/search/', views.mobile_assets_search, name='mobile_assets_search'),
path('assets/<str:thematic_code>/<str:asset_model>/<int:asset_id>/', mobile_asset_detail, name='mobile_asset_detail'), path('assets/<str:thematic_code>/<str:asset_model>/<int:asset_id>/', mobile_asset_detail, name='mobile_asset_detail'),
path('assets/<str:asset_model>/<int:asset_id>/', mobile_asset_detail, name='mobile_asset_detail_direct'),
path('inspections/', inspections.inspections_list, name='inspections_list_mobile'), path('inspections/', inspections.inspections_list, name='inspections_list_mobile'),
path('inspections/new/', inspections.quick_inspection_map, name='quick_inspection_map_mobile'), path('inspections/new/', inspections.quick_inspection_map, name='quick_inspection_map_mobile'),
# Stock mobile # Stock mobile

View file

@ -113,6 +113,12 @@ def index(request):
can_inspect = user_config.get_inspectable_thematics().exists() can_inspect = user_config.get_inspectable_thematics().exists()
can_view_inspections = can_inspect or user_config.has_role('viewer') can_view_inspections = can_inspect or user_config.has_role('viewer')
# Check if user has permission to view assets across any thematic
can_view_assets = request.user.is_superuser or UserThematics.objects.filter(
user_config=user_config,
can_view_assets=True
).exists()
return render(request, "mobile/mobile_index.html", { return render(request, "mobile/mobile_index.html", {
'can_edit_green_surfaces': can_edit_green_surfaces, 'can_edit_green_surfaces': can_edit_green_surfaces,
'can_access_stock': can_access_stock, 'can_access_stock': can_access_stock,
@ -122,6 +128,7 @@ def index(request):
'inspection_configs': inspection_configs, 'inspection_configs': inspection_configs,
'can_inspect': can_inspect, 'can_inspect': can_inspect,
'can_view_inspections': can_view_inspections, 'can_view_inspections': can_view_inspections,
'can_view_assets': can_view_assets,
}) })
@login_not_required @login_not_required
@ -1116,3 +1123,369 @@ def green_surfaces_edit_standalone(request):
context = {} context = {}
return render(request, "mobile/green_surfaces_edit_standalone.html", context) return render(request, "mobile/green_surfaces_edit_standalone.html", context)
@login_required
def mobile_assets_index(request):
"""
Dedicated mobile assets index page with MapLibre interactive map,
thematic and status filters, and switchable map/list view.
"""
import json
from common.models import Thematic, UserThematics, UserConfig
from assets.views.core import build_thematic_config, ASSET_STATUS_CHOICES
lang = get_language() or 'fr'
user_config = getattr(request.user, 'config', None)
if not user_config:
try:
user_config = UserConfig.objects.get(user=request.user)
except UserConfig.DoesNotExist:
user_config = None
if getattr(request.user, 'is_superuser', False):
accessible_thematics = list(Thematic.objects.order_by(f'{"name_nl" if lang == "nl" else "name_fr"}'))
elif user_config:
thematic_qs = (
UserThematics.objects
.filter(user_config=user_config, can_view_assets=True)
.select_related('thematic')
.order_by(f'thematic__{"name_nl" if lang == "nl" else "name_fr"}')
)
accessible_thematics = [tc.thematic for tc in thematic_qs]
else:
accessible_thematics = []
if not accessible_thematics and not getattr(request.user, 'is_superuser', False):
return render(request, "403.html", status=403)
thematic_config = build_thematic_config(accessible_thematics)
selected_thematic = request.GET.get('thematic', '')
if not selected_thematic and user_config and user_config.default_thematic and user_config.default_thematic in accessible_thematics:
selected_thematic = user_config.default_thematic.code
context = {
'accessible_thematics': accessible_thematics,
'thematic_config_json': json.dumps(thematic_config),
'asset_status_choices': list(ASSET_STATUS_CHOICES.items()),
'selected_thematic': selected_thematic,
'initial_query': request.GET.get('q', '').strip(),
'initial_view': request.GET.get('view', 'map'),
}
return render(request, "mobile/assets/assets_index_mobile.html", context)
@login_required
def mobile_assets_search(request):
"""
Search and filter endpoint for mobile assets.
Returns JSON results for list view and GeoJSON FeatureCollection for MapLibre map.
Supports proximity sorting if lat/lon parameters are provided.
"""
import math
from urllib.parse import quote
from django.urls import reverse
from django.db.models import Q
from common.models import Thematic, UserThematics, UserConfig
from assets.models import (
NatureTree, NatureGreenSurface, NatureShrub, NatureBench,
SignPanel, SignPole,
TrafficLightPole, TrafficLightLantern, TrafficLightElectricalCabinet,
PublicLightingPole, PublicLightingLightFixture, PublicLightingElectricalCabinet,
Roadway, RoadSidewalk, RoadFurniture,
CleanLitterBin, CleanGlassContainer,
ArtworkMonument, ArtworkFountain,
StructureGeoAsset, ControlCenterGeoAsset, ITSGeoAsset,
OutdoorAsset, ParkingSpot,
)
from assets.views.core import get_element_type_label
lang = get_language() or 'fr'
user_config = getattr(request.user, 'config', None)
if not user_config:
try:
user_config = UserConfig.objects.get(user=request.user)
except UserConfig.DoesNotExist:
user_config = None
if getattr(request.user, 'is_superuser', False):
accessible_thematics = list(Thematic.objects.all())
elif user_config:
thematic_qs = (
UserThematics.objects
.filter(user_config=user_config, can_view_assets=True)
.select_related('thematic')
)
accessible_thematics = [tc.thematic for tc in thematic_qs]
else:
accessible_thematics = []
accessible_codes = {t.code for t in accessible_thematics}
thematic_map = {t.code: t for t in accessible_thematics}
q = (request.GET.get('q') or '').strip()
thematic_filter = (request.GET.get('thematic') or '').strip()
status_filter = (request.GET.get('status') or '').strip()
MAX_MOBILE_ASSETS = 500
try:
limit = min(int(request.GET.get('limit', MAX_MOBILE_ASSETS)), MAX_MOBILE_ASSETS)
except (TypeError, ValueError):
limit = MAX_MOBILE_ASSETS
# L'utilisateur doit choisir au minimum une thématique pour voir quelque chose
if not thematic_filter or thematic_filter not in accessible_codes:
return JsonResponse({
'count': 0,
'total_count': 0,
'limit': limit,
'limit_reached': False,
'thematic': '',
'results': [],
'geojson': {
'type': 'FeatureCollection',
'features': [],
}
})
try:
user_lat = float(request.GET.get('lat'))
user_lon = float(request.GET.get('lon'))
except (TypeError, ValueError):
user_lat = None
user_lon = None
# Filtrage spatial par bounding box (bbox) sur la carte MapLibre
bbox_str = (request.GET.get('bbox') or '').strip()
bbox_poly_3812 = None
min_lon, min_lat, max_lon, max_lat = None, None, None, None
if bbox_str:
try:
parts = [float(x.strip()) for x in bbox_str.split(',')]
if len(parts) == 4:
min_lon, min_lat, max_lon, max_lat = parts
from django.contrib.gis.geos import Polygon
bbox_poly_4326 = Polygon.from_bbox((min_lon, min_lat, max_lon, max_lat))
bbox_poly_4326.srid = 4326
bbox_poly_3812 = bbox_poly_4326.clone()
bbox_poly_3812.transform(3812)
except Exception:
bbox_poly_3812 = None
min_lon, min_lat, max_lon, max_lat = None, None, None, None
thematic_models_registry = {
'nature': [
('naturetree', NatureTree),
('naturegreensurface', NatureGreenSurface),
('natureshrub', NatureShrub),
('naturebench', NatureBench),
],
'sign': [
('signpanel', SignPanel),
('signpole', SignPole),
],
'trafficlights': [
('trafficlightpole', TrafficLightPole),
('trafficlightlantern', TrafficLightLantern),
('trafficlightelectricalcabinet', TrafficLightElectricalCabinet),
],
'publiclighting': [
('publiclightingpole', PublicLightingPole),
('publiclightinglightfixture', PublicLightingLightFixture),
('publiclightingelectricalcabinet', PublicLightingElectricalCabinet),
],
'roads': [
('roadway', Roadway),
('roadsidewalk', RoadSidewalk),
('roadfurniture', RoadFurniture),
],
'clean': [
('cleanlitterbin', CleanLitterBin),
('cleanglasscontainer', CleanGlassContainer),
],
'artworks': [
('artworkmonument', ArtworkMonument),
('artworkfountain', ArtworkFountain),
],
'structures': [
('structuregeoasset', StructureGeoAsset),
],
'controlcenters': [
('controlcentergeoasset', ControlCenterGeoAsset),
],
'its': [
('itsgeoasset', ITSGeoAsset),
],
'outdoorfacilities': [
('outdoorasset', OutdoorAsset),
],
'outdoor': [
('outdoorasset', OutdoorAsset),
],
'parking': [
('parkingspot', ParkingSpot),
],
}
def _haversine(lat1, lon1, lat2, lon2):
R = 6371000
phi1 = math.radians(lat1)
phi2 = math.radians(lat2)
delta_phi = math.radians(lat2 - lat1)
delta_lambda = math.radians(lon2 - lon1)
a = math.sin(delta_phi / 2.0) ** 2 + math.cos(phi1) * math.cos(phi2) * math.sin(delta_lambda / 2.0) ** 2
c = 2.0 * math.atan2(math.sqrt(a), math.sqrt(max(0.0, 1.0 - a)))
return R * c
results = []
features = []
total_count = 0
t_code = thematic_filter
thematic_obj = thematic_map.get(t_code)
thematic_name = (getattr(thematic_obj, f'name_{lang}', None) or getattr(thematic_obj, 'name_fr', None) or t_code) if thematic_obj else t_code
thematic_icon = getattr(thematic_obj, 'icon', '') if thematic_obj else ''
models_list = thematic_models_registry.get(t_code, [])
for model_key, model_class in models_list:
qs = model_class.objects.all()
# Filtrage par boîte englobante (bbox / zoom de la carte)
if bbox_poly_3812:
if hasattr(model_class, 'geom'):
qs = qs.filter(geom__bboverlaps=bbox_poly_3812)
elif min_lon is not None and hasattr(model_class, 'lon') and hasattr(model_class, 'lat'):
qs = qs.filter(lon__gte=min_lon, lon__lte=max_lon, lat__gte=min_lat, lat__lte=max_lat)
if status_filter:
if hasattr(model_class, 'status'):
qs = qs.filter(status=status_filter)
else:
if hasattr(model_class, 'status'):
qs = qs.exclude(status='removed')
if q:
search_q = Q(code__icontains=q)
if hasattr(model_class, 'name_fr'):
search_q |= Q(name_fr__icontains=q)
if hasattr(model_class, 'name_nl'):
search_q |= Q(name_nl__icontains=q)
qs = qs.filter(search_q)
# Nombre total d'assets correspondants (pour savoir si limite atteinte)
count_for_model = qs.count()
total_count += count_for_model
remaining_slots = limit - len(results)
if remaining_slots > 0:
items = list(qs[:remaining_slots])
for item in items:
lat = None
lon = None
if hasattr(item, 'lat') and item.lat is not None and hasattr(item, 'lon') and item.lon is not None:
try:
lat = float(str(item.lat).replace(',', '.'))
lon = float(str(item.lon).replace(',', '.'))
except (ValueError, TypeError):
pass
elif hasattr(item, 'geom') and item.geom:
try:
g = item.geom.clone()
g.transform(4326)
centroid = g.centroid
lon = float(centroid.x)
lat = float(centroid.y)
except Exception:
pass
elif hasattr(item, 'location') and item.location:
loc = item.location
if hasattr(loc, 'lat') and loc.lat and hasattr(loc, 'lon') and loc.lon:
try:
lat = float(str(loc.lat).replace(',', '.'))
lon = float(str(loc.lon).replace(',', '.'))
except (ValueError, TypeError):
pass
distance_m = None
if user_lat is not None and user_lon is not None and lat is not None and lon is not None:
try:
distance_m = round(_haversine(user_lat, user_lon, lat, lon))
except Exception:
distance_m = None
item_name = (
getattr(item, f'name_{lang}', None) or
getattr(item, 'name_fr', None) or
(getattr(item.model, f'name_{lang}', None) or getattr(item.model, 'name_fr', None) if getattr(item, 'model', None) else '') or
''
)
status_val = getattr(item, 'status', 'active')
status_display = item.get_status_display() if hasattr(item, 'get_status_display') else status_val
element_type = get_element_type_label(model_key)
detail_url = reverse('mobile:mobile_asset_detail_direct', kwargs={'asset_model': model_key, 'asset_id': item.id})
res_item = {
'id': item.id,
'code': getattr(item, 'code', f'#{item.id}'),
'name': item_name,
'thematic': t_code,
'thematic_name': thematic_name,
'thematic_icon': thematic_icon,
'model_key': model_key,
'element_type': element_type,
'status': status_val,
'status_display': status_display,
'lat': lat,
'lon': lon,
'distance_m': distance_m,
'detail_url': detail_url,
}
results.append(res_item)
if lon is not None and lat is not None:
features.append({
'type': 'Feature',
'id': f"{model_key}_{item.id}",
'geometry': {
'type': 'Point',
'coordinates': [lon, lat],
},
'properties': {
'id': item.id,
'code': getattr(item, 'code', f'#{item.id}'),
'name': item_name,
'thematic': t_code,
'thematic_name': thematic_name,
'thematic_icon': thematic_icon,
'model_key': model_key,
'element_type': element_type,
'status': status_val,
'status_display': status_display,
'distance_m': distance_m,
'detail_url': detail_url,
}
})
if user_lat is not None and user_lon is not None:
results.sort(key=lambda x: (x['distance_m'] if x['distance_m'] is not None else 999999999, x['code']))
else:
results.sort(key=lambda x: x['code'])
results = results[:limit]
limit_reached = total_count > limit
return JsonResponse({
'count': len(results),
'total_count': total_count,
'limit': limit,
'limit_reached': limit_reached,
'thematic': t_code,
'results': results,
'geojson': {
'type': 'FeatureCollection',
'features': features[:limit],
}
})

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-13 09:05+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -23,7 +23,7 @@ msgid "Titre"
msgstr "Title" msgstr "Title"
#: notifications/forms.py:40 notifications/models.py:72 #: notifications/forms.py:40 notifications/models.py:72
#: notifications/models.py:455 #: notifications/models.py:529
msgid "Contenu" msgid "Contenu"
msgstr "Content" msgstr "Content"
@ -45,7 +45,7 @@ msgid "Expire le"
msgstr "Expires on" msgstr "Expires on"
#: notifications/forms.py:68 notifications/models.py:284 #: notifications/forms.py:68 notifications/models.py:284
#: notifications/templates/notifications/_new_discussion_modal.html:41 #: notifications/templates/notifications/_new_discussion_modal.html:69
msgid "Pièces jointes" msgid "Pièces jointes"
msgstr "Attachments" msgstr "Attachments"
@ -57,7 +57,7 @@ msgstr "Photos or documents (multiple files allowed)."
msgid "Destinataires individuels" msgid "Destinataires individuels"
msgstr "Individual recipients" msgstr "Individual recipients"
#: notifications/forms.py:82 notifications/models.py:553 #: notifications/forms.py:82 notifications/models.py:632
msgid "Équipes destinataires" msgid "Équipes destinataires"
msgstr "Recipient teams" msgstr "Recipient teams"
@ -94,6 +94,7 @@ msgstr ""
"hour(s) ago:" "hour(s) ago:"
#: notifications/management/commands/send_unread_notification_reminders.py:118 #: notifications/management/commands/send_unread_notification_reminders.py:118
#: notifications/services.py:479
msgid "Système" msgid "Système"
msgstr "System" msgstr "System"
@ -168,8 +169,8 @@ msgstr "Team"
msgid "Équipes" msgid "Équipes"
msgstr "Teams" msgstr "Teams"
#: notifications/models.py:49 notifications/models.py:464 #: notifications/models.py:49 notifications/models.py:543
#: notifications/models.py:593 #: notifications/models.py:672
msgid "Message" msgid "Message"
msgstr "Message" msgstr "Message"
@ -221,7 +222,7 @@ msgstr "System notification"
msgid "Générée automatiquement par le système." msgid "Générée automatiquement par le système."
msgstr "Generated automatically by the system." msgstr "Generated automatically by the system."
#: notifications/models.py:114 notifications/models.py:566 #: notifications/models.py:114 notifications/models.py:645
msgid "Prise en charge unique" msgid "Prise en charge unique"
msgstr "Single claim" msgstr "Single claim"
@ -283,11 +284,11 @@ msgstr "Team notification"
msgid "Notifications d'équipe" msgid "Notifications d'équipe"
msgstr "Team notifications" msgstr "Team notifications"
#: notifications/models.py:250 notifications/models.py:597 #: notifications/models.py:250 notifications/models.py:676
msgid "Fichier" msgid "Fichier"
msgstr "File" msgstr "File"
#: notifications/models.py:255 notifications/models.py:599 #: notifications/models.py:255 notifications/models.py:678
msgid "Nom du fichier" msgid "Nom du fichier"
msgstr "File name" msgstr "File name"
@ -295,7 +296,7 @@ msgstr "File name"
msgid "Ajouté par" msgid "Ajouté par"
msgstr "Added by" msgstr "Added by"
#: notifications/models.py:265 notifications/models.py:600 #: notifications/models.py:265 notifications/models.py:679
msgid "Ajouté le" msgid "Ajouté le"
msgstr "Added on" msgstr "Added on"
@ -303,7 +304,7 @@ msgstr "Added on"
msgid "Pièce jointe" msgid "Pièce jointe"
msgstr "Attachment" msgstr "Attachment"
#: notifications/models.py:301 #: notifications/models.py:301 notifications/models.py:713
msgid "Utilisateur" msgid "Utilisateur"
msgstr "User" msgstr "User"
@ -315,22 +316,22 @@ msgstr "Team notification read"
msgid "Lectures de notifications d'équipe" msgid "Lectures de notifications d'équipe"
msgstr "Team notification reads" msgstr "Team notification reads"
#: notifications/models.py:331 #: notifications/models.py:331 notifications/models.py:751
msgid "Mis à jour le" msgid "Mis à jour le"
msgstr "Updated on" msgstr "Updated on"
#: notifications/models.py:336 #: notifications/models.py:336
#: notifications/templates/notifications/discussion_detail.html:105 #: notifications/templates/notifications/discussion_detail.html:164
#: notifications/templates/notifications/discussion_list.html:144 #: notifications/templates/notifications/discussion_list.html:155
#: notifications/templates/notifications/inbox.html:421 #: notifications/templates/notifications/inbox.html:460
msgid "Participants" msgid "Participants"
msgstr "Participants" msgstr "Participants"
#: notifications/models.py:338 #: notifications/models.py:338
#: notifications/templates/notifications/discussion_detail.html:97 #: notifications/templates/notifications/discussion_detail.html:98
#: notifications/templates/notifications/discussion_list.html:120 #: notifications/templates/notifications/discussion_list.html:127
#: notifications/templates/notifications/inbox.html:397 #: notifications/templates/notifications/inbox.html:432
#: notifications/templates/notifications/inbox_mobile.html:338 #: notifications/templates/notifications/inbox_mobile.html:360
msgid "Clôturée" msgid "Clôturée"
msgstr "Closed" msgstr "Closed"
@ -342,106 +343,164 @@ msgstr "Linked object type"
msgid "ID objet lié" msgid "ID objet lié"
msgstr "Linked object ID" msgstr "Linked object ID"
#: notifications/models.py:355 #: notifications/models.py:360
msgid "Aucun"
msgstr ""
#: notifications/models.py:361 notifications/models.py:368
#: notifications/templates/notifications/_new_discussion_modal.html:34
#: notifications/templates/notifications/discussion_detail.html:132
msgid "Important / À traiter"
msgstr ""
#: notifications/models.py:362 notifications/models.py:377
#: notifications/models.py:378
#: notifications/templates/notifications/_new_discussion_modal.html:39
#: notifications/templates/notifications/discussion_detail.html:139
#: notifications/templates/notifications/inbox.html:374
#: notifications/templates/notifications/inbox_mobile.html:306
msgid "En cours"
msgstr ""
#: notifications/models.py:363 notifications/models.py:386
#: notifications/templates/notifications/_new_discussion_modal.html:44
#: notifications/templates/notifications/discussion_detail.html:146
msgid "Traité / Fait"
msgstr ""
#: notifications/models.py:369
#: notifications/templates/notifications/inbox.html:371
#: notifications/templates/notifications/inbox_mobile.html:303
msgid "Important"
msgstr ""
#: notifications/models.py:387
#: notifications/templates/notifications/inbox.html:377
#: notifications/templates/notifications/inbox_mobile.html:309
msgid "Traité"
msgstr ""
#: notifications/models.py:401
msgid "Flag"
msgstr ""
#: notifications/models.py:409
msgid "Flag défini par"
msgstr ""
#: notifications/models.py:414
msgid "Flag défini le"
msgstr ""
#: notifications/models.py:419
msgid "URL objet lié" msgid "URL objet lié"
msgstr "Linked object URL" msgstr "Linked object URL"
#: notifications/models.py:358 #: notifications/models.py:422
msgid "Libellé objet lié" msgid "Libellé objet lié"
msgstr "Linked object label" msgstr "Linked object label"
#: notifications/models.py:392 #: notifications/models.py:466
msgid "Intervention" msgid "Intervention"
msgstr "Intervention" msgstr "Intervention"
#: notifications/models.py:400 #: notifications/models.py:474
msgid "Observation" msgid "Observation"
msgstr "Observation" msgstr "Observation"
#: notifications/models.py:408 #: notifications/models.py:482
msgid "Ordre de préparation" msgid "Ordre de préparation"
msgstr "Preparation order" msgstr "Preparation order"
#: notifications/models.py:416 #: notifications/models.py:490
msgid "Projet" msgid "Projet"
msgstr "Project" msgstr "Project"
#: notifications/models.py:424 #: notifications/models.py:498
msgid "Générale" msgid "Générale"
msgstr "General" msgstr "General"
#: notifications/models.py:429 notifications/models.py:445 #: notifications/models.py:503 notifications/models.py:519
msgid "Discussion" msgid "Discussion"
msgstr "Discussion" msgstr "Discussion"
#: notifications/models.py:430 #: notifications/models.py:504
#: notifications/templates/notifications/discussion_list.html:70 #: notifications/templates/notifications/discussion_list.html:70
#: notifications/templates/notifications/inbox.html:133 #: notifications/templates/notifications/inbox.html:133
#: notifications/templates/notifications/inbox_mobile.html:152 #: notifications/templates/notifications/inbox_mobile.html:152
msgid "Discussions" msgid "Discussions"
msgstr "Discussions" msgstr "Discussions"
#: notifications/models.py:453 #: notifications/models.py:527
msgid "Auteur" msgid "Auteur"
msgstr "Author" msgstr "Author"
#: notifications/models.py:456 #: notifications/models.py:530
msgid "Envoyé le" msgid "Envoyé le"
msgstr "Sent on" msgstr "Sent on"
#: notifications/models.py:457 #: notifications/models.py:531
msgid "Supprimé" msgid "Supprimé"
msgstr "Deleted" msgstr "Deleted"
#: notifications/models.py:465 #: notifications/models.py:534
msgid "Message système"
msgstr "System message"
#: notifications/models.py:535
msgid "Indique si le message a été généré automatiquement par le système."
msgstr ""
"Indicates whether the message was automatically generated by the system."
#: notifications/models.py:544
msgid "Messages" msgid "Messages"
msgstr "Messages" msgstr "Messages"
#: notifications/models.py:490 #: notifications/models.py:569
msgid "Intervention annulée" msgid "Intervention annulée"
msgstr "Intervention cancelled" msgstr "Intervention cancelled"
#: notifications/models.py:495 #: notifications/models.py:574
msgid "Tous (pas de filtre)" msgid "Tous (pas de filtre)"
msgstr "All (no filter)" msgstr "All (no filter)"
#: notifications/models.py:496 #: notifications/models.py:575
msgid "Doublon" msgid "Doublon"
msgstr "Duplicate" msgstr "Duplicate"
#: notifications/models.py:497 #: notifications/models.py:576
msgid "A rediriger" msgid "A rediriger"
msgstr "To redirect" msgstr "To redirect"
#: notifications/models.py:498 #: notifications/models.py:577
msgid "Pas sous notre gestion" msgid "Pas sous notre gestion"
msgstr "Not under our management" msgstr "Not under our management"
#: notifications/models.py:499 #: notifications/models.py:578
msgid "Non-relevant" msgid "Non-relevant"
msgstr "Not relevant" msgstr "Not relevant"
#: notifications/models.py:500 #: notifications/models.py:579
msgid "Autre" msgid "Autre"
msgstr "Other" msgstr "Other"
#: notifications/models.py:504 #: notifications/models.py:583
msgid "Nom de la règle" msgid "Nom de la règle"
msgstr "Rule name" msgstr "Rule name"
#: notifications/models.py:505 #: notifications/models.py:584
msgid "Active" msgid "Active"
msgstr "Active" msgstr "Active"
#: notifications/models.py:511 #: notifications/models.py:590
msgid "Événement déclencheur" msgid "Événement déclencheur"
msgstr "Trigger event" msgstr "Trigger event"
#: notifications/models.py:517 #: notifications/models.py:596
msgid "Filtre : type d'annulation" msgid "Filtre : type d'annulation"
msgstr "Filter: cancellation type" msgstr "Filter: cancellation type"
#: notifications/models.py:519 #: notifications/models.py:598
msgid "" msgid ""
"Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une " "Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une "
"valeur pour n'agir que sur ce type précis." "valeur pour n'agir que sur ce type précis."
@ -449,15 +508,15 @@ msgstr ""
"Leave blank to trigger on all cancellation types. Select a value to trigger " "Leave blank to trigger on all cancellation types. Select a value to trigger "
"only on that type." "only on that type."
#: notifications/models.py:529 #: notifications/models.py:608
msgid "Type de notification" msgid "Type de notification"
msgstr "Notification type" msgstr "Notification type"
#: notifications/models.py:533 #: notifications/models.py:612
msgid "Modèle de titre" msgid "Modèle de titre"
msgstr "Title template" msgstr "Title template"
#: notifications/models.py:535 #: notifications/models.py:614
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"Variables disponibles : {intervention_code}, {intervention_title}, " "Variables disponibles : {intervention_code}, {intervention_title}, "
@ -466,11 +525,11 @@ msgstr ""
"Available variables: {intervention_code}, {intervention_title}, " "Available variables: {intervention_code}, {intervention_title}, "
"{cancellation_type_label}" "{cancellation_type_label}"
#: notifications/models.py:541 #: notifications/models.py:620
msgid "Modèle de contenu" msgid "Modèle de contenu"
msgstr "Content template" msgstr "Content template"
#: notifications/models.py:543 #: notifications/models.py:622
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"Variables disponibles : {intervention_code}, {intervention_title}, " "Variables disponibles : {intervention_code}, {intervention_title}, "
@ -479,50 +538,119 @@ msgstr ""
"Available variables: {intervention_code}, {intervention_title}, " "Available variables: {intervention_code}, {intervention_title}, "
"{cancellation_type_label}, {cancellation_reason}" "{cancellation_type_label}, {cancellation_reason}"
#: notifications/models.py:554 #: notifications/models.py:633
msgid "" msgid ""
"Les notifications seront envoyées à tous les membres (CompanyMember) de ces " "Les notifications seront envoyées à tous les membres (CompanyMember) de ces "
"équipes." "équipes."
msgstr "" msgstr ""
"Notifications will be sent to all members (CompanyMember) of these teams." "Notifications will be sent to all members (CompanyMember) of these teams."
#: notifications/models.py:560 #: notifications/models.py:639
msgid "Utilisateurs destinataires supplémentaires" msgid "Utilisateurs destinataires supplémentaires"
msgstr "Additional individual recipients" msgstr "Additional individual recipients"
#: notifications/models.py:568 #: notifications/models.py:647
msgid "" msgid ""
"Si activé, dès qu'un destinataire marque la notification comme lue (prise en " "Si activé, dès qu'un destinataire marque la notification comme lue (prise en"
"charge), elle est automatiquement archivée pour tous les autres " " charge), elle est automatiquement archivée pour tous les autres "
"destinataires." "destinataires."
msgstr "" msgstr ""
"If enabled, as soon as one recipient claims the notification, it is " "If enabled, as soon as one recipient claims the notification, it is "
"automatically archived for all other recipients." "automatically archived for all other recipients."
#: notifications/models.py:574 #: notifications/models.py:653
msgid "Créée le" msgid "Créée le"
msgstr "Created on" msgstr "Created on"
#: notifications/models.py:575 #: notifications/models.py:654
msgid "Mise à jour le" msgid "Mise à jour le"
msgstr "Updated on" msgstr "Updated on"
#: notifications/models.py:581 #: notifications/models.py:660
msgid "Règle de notification" msgid "Règle de notification"
msgstr "Notification rule" msgstr "Notification rule"
#: notifications/models.py:582 #: notifications/models.py:661
msgid "Règles de notification" msgid "Règles de notification"
msgstr "Notification rules" msgstr "Notification rules"
#: notifications/models.py:618 #: notifications/models.py:697
msgid "Pièce jointe de message" msgid "Pièce jointe de message"
msgstr "Message attachment" msgstr "Message attachment"
#: notifications/models.py:619 #: notifications/models.py:698
msgid "Pièces jointes de messages" msgid "Pièces jointes de messages"
msgstr "Message attachments" msgstr "Message attachments"
#: notifications/models.py:717
msgid "Endpoint Push"
msgstr ""
#: notifications/models.py:718
msgid "URL unique de réception push fournie par le navigateur."
msgstr ""
#: notifications/models.py:722
msgid "Clé p256dh"
msgstr ""
#: notifications/models.py:723
msgid "Clé publique du client."
msgstr ""
#: notifications/models.py:727
msgid "Secret auth"
msgstr ""
#: notifications/models.py:728
msgid "Secret d'authentification pour le chiffrement."
msgstr ""
#: notifications/models.py:733
msgid "User Agent"
msgstr ""
#: notifications/models.py:738
msgid "Navigateur"
msgstr ""
#: notifications/models.py:743
msgid "Système d'exploitation"
msgstr ""
#: notifications/models.py:748
msgid "Nom de l'appareil"
msgstr "Device name"
#: notifications/models.py:750
#: notifications/templates/notifications/notification_settings.html:96
msgid "Enregistré le"
msgstr "Saved on"
#: notifications/models.py:754
msgid "Appareil inconnu"
msgstr ""
#: notifications/models.py:758
msgid "Abonnement Web Push"
msgstr ""
#: notifications/models.py:759
msgid "Abonnements Web Push"
msgstr ""
#: notifications/services.py:498
#, python-brace-format
msgid "{icon} {user} a défini le statut : {label}"
msgstr ""
#: notifications/services.py:504
#, python-brace-format
msgid ""
"<i class=\"bi bi-flag text-muted me-1\"></i> {user} a retiré le drapeau de "
"suivi."
msgstr ""
#: notifications/templates/notifications/_new_discussion_modal.html:8 #: notifications/templates/notifications/_new_discussion_modal.html:8
#: notifications/templates/notifications/discussion_list.html:74 #: notifications/templates/notifications/discussion_list.html:74
#: notifications/templates/notifications/inbox.html:165 #: notifications/templates/notifications/inbox.html:165
@ -534,40 +662,50 @@ msgstr "New discussion"
msgid "Fermer" msgid "Fermer"
msgstr "Close" msgstr "Close"
#: notifications/templates/notifications/_new_discussion_modal.html:17 #: notifications/templates/notifications/_new_discussion_modal.html:18
msgid "Sujet / Titre (optionnel)" msgid "Sujet / Titre (optionnel)"
msgstr "Subject / Title (optional)" msgstr "Subject / Title (optional)"
#: notifications/templates/notifications/_new_discussion_modal.html:20 #: notifications/templates/notifications/_new_discussion_modal.html:21
msgid "Ex: Question sur le dossier..." msgid "Ex: Question sur le dossier..."
msgstr "E.g.: Question about the file..." msgstr "E.g.: Question about the file..."
#: notifications/templates/notifications/_new_discussion_modal.html:25 #: notifications/templates/notifications/_new_discussion_modal.html:25
#: notifications/templates/notifications/_new_discussion_modal.html:27
msgid "Statut initial"
msgstr ""
#: notifications/templates/notifications/_new_discussion_modal.html:29
#: notifications/templates/notifications/discussion_detail.html:154
msgid "Aucun drapeau"
msgstr "No flag"
#: notifications/templates/notifications/_new_discussion_modal.html:53
msgid "Message *" msgid "Message *"
msgstr "Message *" msgstr "Message *"
#: notifications/templates/notifications/_new_discussion_modal.html:28 #: notifications/templates/notifications/_new_discussion_modal.html:56
msgid "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes." msgid "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes."
msgstr "Type @ to mention/tag users or teams." msgstr "Type @ to mention/tag users or teams."
#: notifications/templates/notifications/_new_discussion_modal.html:32 #: notifications/templates/notifications/_new_discussion_modal.html:60
msgid "Rédigez votre message... (@ pour tagger quelqu'un)" msgid "Rédigez votre message... (@ pour tagger quelqu'un)"
msgstr "Write your message... (@ to tag someone)" msgstr "Write your message... (@ to tag someone)"
#: notifications/templates/notifications/_new_discussion_modal.html:44 #: notifications/templates/notifications/_new_discussion_modal.html:72
msgid "Joindre des fichiers" msgid "Joindre des fichiers"
msgstr "Attach files" msgstr "Attach files"
#: notifications/templates/notifications/_new_discussion_modal.html:52 #: notifications/templates/notifications/_new_discussion_modal.html:80
#: notifications/templates/notifications/create.html:82 #: notifications/templates/notifications/create.html:82
#: notifications/templates/notifications/notification_settings.html:104 #: notifications/templates/notifications/notification_settings.html:200
#: notifications/templates/notifications/team_form.html:39 #: notifications/templates/notifications/team_form.html:39
msgid "Annuler" msgid "Annuler"
msgstr "Cancel" msgstr "Cancel"
#: notifications/templates/notifications/_new_discussion_modal.html:55 #: notifications/templates/notifications/_new_discussion_modal.html:83
#: notifications/templates/notifications/create.html:85 #: notifications/templates/notifications/create.html:85
#: notifications/templates/notifications/discussion_detail.html:194 #: notifications/templates/notifications/discussion_detail.html:268
msgid "Envoyer" msgid "Envoyer"
msgstr "Send" msgstr "Send"
@ -580,55 +718,68 @@ msgstr "Create notification"
msgid "Ctrl+clic pour sélectionner plusieurs" msgid "Ctrl+clic pour sélectionner plusieurs"
msgstr "Ctrl+click to select multiple" msgstr "Ctrl+click to select multiple"
#: notifications/templates/notifications/discussion_detail.html:85 #: notifications/templates/notifications/discussion_detail.html:86
msgid "Retour aux discussions" msgid "Retour aux discussions"
msgstr "Back to discussions" msgstr "Back to discussions"
#: notifications/templates/notifications/discussion_detail.html:120 #: notifications/templates/notifications/discussion_detail.html:123
#: notifications/templates/notifications/discussion_detail.html:504
#: notifications/templates/notifications/inbox.html:366
msgid "Statut"
msgstr ""
#: notifications/templates/notifications/discussion_detail.html:128
msgid "Statut de suivi"
msgstr ""
#: notifications/templates/notifications/discussion_detail.html:179
msgid "Aucun message pour l'instant. Soyez le premier à écrire." msgid "Aucun message pour l'instant. Soyez le premier à écrire."
msgstr "No messages yet. Be the first to write." msgstr "No messages yet. Be the first to write."
#: notifications/templates/notifications/discussion_detail.html:184 #: notifications/templates/notifications/discussion_detail.html:254
msgid "Écrire un message... (@ pour mentionner)" msgid "Écrire un message... (@ pour mentionner)"
msgstr "Write a message... (@ to mention)" msgstr "Write a message... (@ to mention)"
#: notifications/templates/notifications/discussion_detail.html:187 #: notifications/templates/notifications/discussion_detail.html:261
msgid "Joindre" msgid "Joindre"
msgstr "Attach" msgstr "Attach"
#: notifications/templates/notifications/discussion_detail.html:202 #: notifications/templates/notifications/discussion_detail.html:276
msgid "Cette discussion est clôturée." msgid "Cette discussion est clôturée."
msgstr "This discussion is closed." msgstr "This discussion is closed."
#: notifications/templates/notifications/discussion_detail.html:458
msgid "Le message ne peut pas être vide."
msgstr "The message cannot be empty."
#: notifications/templates/notifications/discussion_list.html:79 #: notifications/templates/notifications/discussion_list.html:79
#: notifications/templates/notifications/discussion_list.html:80 #: notifications/templates/notifications/discussion_list.html:80
#: notifications/templates/notifications/inbox.html:170 #: notifications/templates/notifications/inbox.html:170
#: notifications/templates/notifications/inbox.html:171 #: notifications/templates/notifications/inbox.html:171
#: notifications/templates/notifications/inbox_mobile.html:115 #: notifications/templates/notifications/inbox_mobile.html:115
#: notifications/templates/notifications/notification_settings.html:4
msgid "Paramètres" msgid "Paramètres"
msgstr "Settings" msgstr "Settings"
#: notifications/templates/notifications/discussion_list.html:89 #: notifications/templates/notifications/discussion_list.html:89
#: notifications/templates/notifications/inbox.html:366 #: notifications/templates/notifications/inbox.html:394
#: notifications/templates/notifications/inbox_mobile.html:301 #: notifications/templates/notifications/inbox_mobile.html:317
msgid "Vous n'avez encore aucune discussion." msgid "Vous n'avez encore aucune discussion."
msgstr "You don't have any discussions yet." msgstr "You don't have any discussions yet."
#: notifications/templates/notifications/discussion_list.html:137 #: notifications/templates/notifications/discussion_list.html:148
#: notifications/templates/notifications/inbox.html:414 #: notifications/templates/notifications/inbox.html:453
#: notifications/templates/notifications/inbox_mobile.html:350 #: notifications/templates/notifications/inbox_mobile.html:376
msgid "Aucun message encore." msgid "Aucun message encore."
msgstr "No messages yet." msgstr "No messages yet."
#: notifications/templates/notifications/discussion_list.html:160 #: notifications/templates/notifications/discussion_list.html:171
#: notifications/templates/notifications/inbox.html:437 #: notifications/templates/notifications/inbox.html:476
msgid "participants au total" msgid "participants au total"
msgstr "participants in total" msgstr "participants in total"
#: notifications/templates/notifications/discussion_list.html:170 #: notifications/templates/notifications/discussion_list.html:181
#: notifications/templates/notifications/inbox.html:447 #: notifications/templates/notifications/inbox.html:486
#: notifications/templates/notifications/inbox_mobile.html:372 #: notifications/templates/notifications/inbox_mobile.html:398
msgid "non lu(s)" msgid "non lu(s)"
msgstr "unread" msgstr "unread"
@ -652,6 +803,7 @@ msgid "Archivées"
msgstr "Archived" msgstr "Archived"
#: notifications/templates/notifications/inbox.html:210 #: notifications/templates/notifications/inbox.html:210
#: notifications/templates/notifications/inbox.html:383
#: notifications/templates/notifications/inbox_mobile.html:194 #: notifications/templates/notifications/inbox_mobile.html:194
msgid "Réinitialiser" msgid "Réinitialiser"
msgstr "Reset" msgstr "Reset"
@ -686,6 +838,11 @@ msgstr "No archived notifications."
msgid "Vous n'avez aucune notification." msgid "Vous n'avez aucune notification."
msgstr "You have no notifications." msgstr "You have no notifications."
#: notifications/templates/notifications/inbox.html:368
#: notifications/templates/notifications/inbox_mobile.html:300
msgid "Tous"
msgstr ""
#: notifications/templates/notifications/inbox_mobile.html:119 #: notifications/templates/notifications/inbox_mobile.html:119
msgid "Accueil" msgid "Accueil"
msgstr "Home" msgstr "Home"
@ -698,40 +855,112 @@ msgstr "Take"
msgid "Lu" msgid "Lu"
msgstr "Read" msgstr "Read"
#: notifications/templates/notifications/notification_settings.html:4
#: notifications/templates/notifications/notification_settings.html:17
msgid "Paramètres des notifications"
msgstr "Notification settings"
#: notifications/templates/notifications/notification_settings.html:12 #: notifications/templates/notifications/notification_settings.html:12
#: notifications/templates/notifications/team_list.html:18 #: notifications/templates/notifications/team_list.html:18
msgid "Retour aux notifications" msgid "Retour aux notifications"
msgstr "Back to notifications" msgstr "Back to notifications"
#: notifications/templates/notifications/notification_settings.html:17
msgid "Paramètres des notifications"
msgstr "Notification settings"
#: notifications/templates/notifications/notification_settings.html:19 #: notifications/templates/notifications/notification_settings.html:19
msgid "" msgid ""
"Gérez vos préférences de rappel par e-mail pour les notifications non lues." "Gérez vos alertes instantanées sur cet appareil et vos rappels par e-mail."
msgstr "Manage your email reminder preferences for unread notifications." msgstr ""
#: notifications/templates/notifications/notification_settings.html:28 #: notifications/templates/notifications/notification_settings.html:28
msgid "Notifications sur cet appareil (Alertes système / Push)"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:31
msgid "Vérification..."
msgstr "Verifying..."
#: notifications/templates/notifications/notification_settings.html:36
msgid ""
"Recevez des alertes instantanées sur votre écran (ordinateur ou smartphone) "
"dès qu'une tâche, intervention ou mention vous concerne, même si le site est"
" en arrière-plan."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:42
msgid ""
"Votre navigateur ou appareil actuel ne prend pas en charge les notifications"
" Web Push. (Sur iPhone/iPad, installez l'application via le menu Partager > "
"'Sur l'écran d'accueil')."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:48
msgid ""
"Les notifications sont bloquées dans les paramètres de votre navigateur pour"
" ce site. Veuillez modifier vos permissions de site pour les autoriser."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:55
msgid "Activer les notifications sur cet appareil"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:58
msgid "Cliquez pour autoriser et enregistrer cet appareil."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:64
msgid "Activer sur cet appareil"
msgstr "Enable on this device"
#: notifications/templates/notifications/notification_settings.html:66
msgid "Envoyer une notification test"
msgstr "Send test notification"
#: notifications/templates/notifications/notification_settings.html:68
msgid "Tester"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:76
msgid "Appareils enregistrés pour votre compte"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:93
#: notifications/views.py:986
msgid "Appareil"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:103
msgid "Retirer cet appareil"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:103
msgid "Voulez-vous retirer cet appareil des notifications push ?"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:112
msgid ""
"Aucun appareil n'est actuellement enregistré pour recevoir des notifications"
" push."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:124
msgid "Rappels par e-mail" msgid "Rappels par e-mail"
msgstr "Email reminders" msgstr "Email reminders"
#: notifications/templates/notifications/notification_settings.html:41 #: notifications/templates/notifications/notification_settings.html:137
msgid "Langue préférée pour les e-mails et notifications" msgid "Langue préférée pour les e-mails et notifications"
msgstr "Preferred language for emails and notifications" msgstr "Preferred language for emails and notifications"
#: notifications/templates/notifications/notification_settings.html:50 #: notifications/templates/notifications/notification_settings.html:146
msgid "" msgid ""
"Les e-mails de rappel et les notifications automatiques vous seront envoyés " "Les e-mails de rappel et les notifications automatiques vous seront envoyés "
"dans cette langue." "dans cette langue."
msgstr "" msgstr ""
"Reminder emails and automatic notifications will be sent in this language." "Reminder emails and automatic notifications will be sent in this language."
#: notifications/templates/notifications/notification_settings.html:58 #: notifications/templates/notifications/notification_settings.html:154
msgid "Activer les rappels par e-mail" msgid "Activer les rappels par e-mail"
msgstr "Enable email reminders" msgstr "Enable email reminders"
#: notifications/templates/notifications/notification_settings.html:61 #: notifications/templates/notifications/notification_settings.html:157
msgid "" msgid ""
"Recevoir un récapitulatif par e-mail si des notifications restent non lues " "Recevoir un récapitulatif par e-mail si des notifications restent non lues "
"au-delà du délai spécifié." "au-delà du délai spécifié."
@ -739,27 +968,27 @@ msgstr ""
"Receive an email summary if notifications remain unread past the specified " "Receive an email summary if notifications remain unread past the specified "
"delay." "delay."
#: notifications/templates/notifications/notification_settings.html:72 #: notifications/templates/notifications/notification_settings.html:168
msgid "Adresse(s) e-mail de réception" msgid "Adresse(s) e-mail de réception"
msgstr "Recipient email address(es)" msgstr "Recipient email address(es)"
#: notifications/templates/notifications/notification_settings.html:80 #: notifications/templates/notifications/notification_settings.html:176
msgid "Laissez vide pour utiliser l'e-mail principal de votre compte" msgid "Laissez vide pour utiliser l'e-mail principal de votre compte"
msgstr "Leave blank to use your account's primary email" msgstr "Leave blank to use your account's primary email"
#: notifications/templates/notifications/notification_settings.html:81 #: notifications/templates/notifications/notification_settings.html:177
msgid "Pour plusieurs destinataires, séparez les adresses par des virgules." msgid "Pour plusieurs destinataires, séparez les adresses par des virgules."
msgstr "For multiple recipients, separate addresses with commas." msgstr "For multiple recipients, separate addresses with commas."
#: notifications/templates/notifications/notification_settings.html:88 #: notifications/templates/notifications/notification_settings.html:184
msgid "Délai avant l'envoi du rappel (en heures)" msgid "Délai avant l'envoi du rappel (en heures)"
msgstr "Delay before sending reminder (in hours)" msgstr "Delay before sending reminder (in hours)"
#: notifications/templates/notifications/notification_settings.html:92 #: notifications/templates/notifications/notification_settings.html:188
msgid "heures" msgid "heures"
msgstr "hours" msgstr "hours"
#: notifications/templates/notifications/notification_settings.html:98 #: notifications/templates/notifications/notification_settings.html:194
msgid "" msgid ""
"Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au " "Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au "
"bout de 24 heures." "bout de 24 heures."
@ -767,7 +996,7 @@ msgstr ""
"Example: 24h = a reminder will be sent if a notification is unread after 24 " "Example: 24h = a reminder will be sent if a notification is unread after 24 "
"hours." "hours."
#: notifications/templates/notifications/notification_settings.html:107 #: notifications/templates/notifications/notification_settings.html:203
msgid "Enregistrer mes préférences" msgid "Enregistrer mes préférences"
msgstr "Save my preferences" msgstr "Save my preferences"
@ -788,7 +1017,7 @@ msgid "Nouvelle équipe"
msgstr "New team" msgstr "New team"
#: notifications/templates/notifications/team_list.html:46 #: notifications/templates/notifications/team_list.html:46
#: notifications/views.py:498 #: notifications/views.py:533
msgid "Modifier" msgid "Modifier"
msgstr "Edit" msgstr "Edit"
@ -820,63 +1049,124 @@ msgstr "No teams defined."
msgid "Créer une équipe" msgid "Créer une équipe"
msgstr "Create team" msgstr "Create team"
#: notifications/views.py:390 #: notifications/tests.py:319
msgid "Alerte Intervention"
msgstr "Intervention Alert"
#: notifications/tests.py:320
msgid "Nouvelle intervention assignée"
msgstr "New intervention assigned"
#: notifications/views.py:425
msgid "Vous n'avez pas les droits pour créer une notification." msgid "Vous n'avez pas les droits pour créer une notification."
msgstr "You do not have permission to create a notification." msgstr "You do not have permission to create a notification."
#: notifications/views.py:423 #: notifications/views.py:458
msgid "Notification envoyée avec succès." msgid "Notification envoyée avec succès."
msgstr "Notification sent successfully." msgstr "Notification sent successfully."
#: notifications/views.py:460 #: notifications/views.py:495
msgid "Vous n'avez pas les droits pour créer une équipe." msgid "Vous n'avez pas les droits pour créer une équipe."
msgstr "You do not have permission to create a team." msgstr "You do not have permission to create a team."
#: notifications/views.py:470 #: notifications/views.py:505
msgid "Équipe créée avec succès." msgid "Équipe créée avec succès."
msgstr "Team created successfully." msgstr "Team created successfully."
#: notifications/views.py:475 #: notifications/views.py:510
msgid "Créer" msgid "Créer"
msgstr "Create" msgstr "Create"
#: notifications/views.py:486 #: notifications/views.py:521
msgid "Vous n'avez pas les droits pour modifier une équipe." msgid "Vous n'avez pas les droits pour modifier une équipe."
msgstr "You do not have permission to edit a team." msgstr "You do not have permission to edit a team."
#: notifications/views.py:493 #: notifications/views.py:528
msgid "Équipe mise à jour." msgid "Équipe mise à jour."
msgstr "Team updated." msgstr "Team updated."
#: notifications/views.py:508 #: notifications/views.py:543
msgid "Vous n'avez pas les droits pour supprimer une équipe." msgid "Vous n'avez pas les droits pour supprimer une équipe."
msgstr "You do not have permission to delete a team." msgstr "You do not have permission to delete a team."
#: notifications/views.py:511 #: notifications/views.py:546
msgid "Équipe supprimée." msgid "Équipe supprimée."
msgstr "Team deleted." msgstr "Team deleted."
#: notifications/views.py:561 #: notifications/views.py:604
msgid "Vous n'êtes pas participant de cette discussion." msgid "Vous n'êtes pas participant de cette discussion."
msgstr "You are not a participant in this discussion." msgstr "You are not a participant in this discussion."
#: notifications/views.py:574 #: notifications/views.py:620
msgid "Message envoyé." msgid "Message envoyé."
msgstr "Message sent." msgstr "Message sent."
#: notifications/views.py:602 #: notifications/views.py:648
msgid "Vous n'avez pas accès à cette discussion."
msgstr "You do not have access to this discussion."
#: notifications/views.py:699
msgid "Statut de la discussion mis à jour."
msgstr "Discussion status updated."
#: notifications/views.py:722
#, python-format #, python-format
msgid "Discussion de %(name)s" msgid "Discussion de %(name)s"
msgstr "Discussion from %(name)s" msgstr "Discussion from %(name)s"
#: notifications/views.py:613 #: notifications/views.py:736
msgid "Discussion créée avec succès." msgid "Discussion créée avec succès."
msgstr "Discussion created successfully." msgstr "Discussion created successfully."
#: notifications/views.py:616 #: notifications/views.py:739
msgid "Le contenu du message ne peut pas être vide." msgid "Le contenu du message ne peut pas être vide."
msgstr "Message content cannot be empty." msgstr "Message content cannot be empty."
#: notifications/views.py:640 #: notifications/views.py:763
msgid "Vos préférences de rappel par e-mail ont été enregistrées." msgid "Vos préférences de rappel par e-mail ont été enregistrées."
msgstr "Your email reminder preferences have been saved." msgstr "Your email reminder preferences have been saved."
#: notifications/views.py:896
msgid "Requête invalide"
msgstr ""
#: notifications/views.py:904
msgid "Paramètres d'abonnement push incomplets"
msgstr ""
#: notifications/views.py:954
msgid "Aucun appareil actif n'est enregistré pour votre compte."
msgstr ""
#: notifications/views.py:959
msgid "Test de notification Loko"
msgstr "Loko notification test"
#: notifications/views.py:960
msgid ""
"Les notifications instantanées sur votre appareil fonctionnent correctement "
"!"
msgstr ""
#: notifications/views.py:968
#, python-format
msgid "Notification de test envoyée avec succès sur %(count)d appareil(s) !"
msgstr "Test notification sent successfully to %(count)d device(s)!"
#: notifications/views.py:972
msgid "Impossible de délivrer la notification au service push."
msgstr ""
#: notifications/views.py:974
#, python-format
msgid "Échec de distribution : %(error)s"
msgstr ""
#: notifications/views.py:988
#, python-format
msgid "L'appareil « %(name)s » a été retiré."
msgstr ""
#~ msgid ""
#~ "Gérez vos préférences de rappel par e-mail pour les notifications non lues."
#~ msgstr "Manage your email reminder preferences for unread notifications."

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -23,7 +23,7 @@ msgid "Titre"
msgstr "Titre" msgstr "Titre"
#: notifications/forms.py:40 notifications/models.py:72 #: notifications/forms.py:40 notifications/models.py:72
#: notifications/models.py:455 #: notifications/models.py:529
msgid "Contenu" msgid "Contenu"
msgstr "Contenu" msgstr "Contenu"
@ -45,7 +45,7 @@ msgid "Expire le"
msgstr "Expire le" msgstr "Expire le"
#: notifications/forms.py:68 notifications/models.py:284 #: notifications/forms.py:68 notifications/models.py:284
#: notifications/templates/notifications/_new_discussion_modal.html:41 #: notifications/templates/notifications/_new_discussion_modal.html:69
msgid "Pièces jointes" msgid "Pièces jointes"
msgstr "Pièces jointes" msgstr "Pièces jointes"
@ -57,7 +57,7 @@ msgstr "Photos ou documents (plusieurs fichiers possibles)."
msgid "Destinataires individuels" msgid "Destinataires individuels"
msgstr "Destinataires individuels" msgstr "Destinataires individuels"
#: notifications/forms.py:82 notifications/models.py:553 #: notifications/forms.py:82 notifications/models.py:632
msgid "Équipes destinataires" msgid "Équipes destinataires"
msgstr "Équipes destinataires" msgstr "Équipes destinataires"
@ -94,6 +94,7 @@ msgstr ""
"%(delay)d heure(s) :" "%(delay)d heure(s) :"
#: notifications/management/commands/send_unread_notification_reminders.py:118 #: notifications/management/commands/send_unread_notification_reminders.py:118
#: notifications/services.py:479
msgid "Système" msgid "Système"
msgstr "Système" msgstr "Système"
@ -168,8 +169,8 @@ msgstr "Équipe"
msgid "Équipes" msgid "Équipes"
msgstr "Équipes" msgstr "Équipes"
#: notifications/models.py:49 notifications/models.py:464 #: notifications/models.py:49 notifications/models.py:543
#: notifications/models.py:593 #: notifications/models.py:672
msgid "Message" msgid "Message"
msgstr "Message" msgstr "Message"
@ -221,7 +222,7 @@ msgstr "Notification système"
msgid "Générée automatiquement par le système." msgid "Générée automatiquement par le système."
msgstr "Générée automatiquement par le système." msgstr "Générée automatiquement par le système."
#: notifications/models.py:114 notifications/models.py:566 #: notifications/models.py:114 notifications/models.py:645
msgid "Prise en charge unique" msgid "Prise en charge unique"
msgstr "Prise en charge unique" msgstr "Prise en charge unique"
@ -283,11 +284,11 @@ msgstr "Notification d'équipe"
msgid "Notifications d'équipe" msgid "Notifications d'équipe"
msgstr "Notifications d'équipe" msgstr "Notifications d'équipe"
#: notifications/models.py:250 notifications/models.py:597 #: notifications/models.py:250 notifications/models.py:676
msgid "Fichier" msgid "Fichier"
msgstr "Fichier" msgstr "Fichier"
#: notifications/models.py:255 notifications/models.py:599 #: notifications/models.py:255 notifications/models.py:678
msgid "Nom du fichier" msgid "Nom du fichier"
msgstr "Nom du fichier" msgstr "Nom du fichier"
@ -295,7 +296,7 @@ msgstr "Nom du fichier"
msgid "Ajouté par" msgid "Ajouté par"
msgstr "Ajouté par" msgstr "Ajouté par"
#: notifications/models.py:265 notifications/models.py:600 #: notifications/models.py:265 notifications/models.py:679
msgid "Ajouté le" msgid "Ajouté le"
msgstr "Ajouté le" msgstr "Ajouté le"
@ -303,7 +304,7 @@ msgstr "Ajouté le"
msgid "Pièce jointe" msgid "Pièce jointe"
msgstr "Pièce jointe" msgstr "Pièce jointe"
#: notifications/models.py:301 #: notifications/models.py:301 notifications/models.py:713
msgid "Utilisateur" msgid "Utilisateur"
msgstr "Utilisateur" msgstr "Utilisateur"
@ -315,22 +316,22 @@ msgstr "Lecture de notification d'équipe"
msgid "Lectures de notifications d'équipe" msgid "Lectures de notifications d'équipe"
msgstr "Lectures de notifications d'équipe" msgstr "Lectures de notifications d'équipe"
#: notifications/models.py:331 #: notifications/models.py:331 notifications/models.py:751
msgid "Mis à jour le" msgid "Mis à jour le"
msgstr "Mis à jour le" msgstr "Mis à jour le"
#: notifications/models.py:336 #: notifications/models.py:336
#: notifications/templates/notifications/discussion_detail.html:105 #: notifications/templates/notifications/discussion_detail.html:164
#: notifications/templates/notifications/discussion_list.html:144 #: notifications/templates/notifications/discussion_list.html:155
#: notifications/templates/notifications/inbox.html:421 #: notifications/templates/notifications/inbox.html:460
msgid "Participants" msgid "Participants"
msgstr "Participants" msgstr "Participants"
#: notifications/models.py:338 #: notifications/models.py:338
#: notifications/templates/notifications/discussion_detail.html:97 #: notifications/templates/notifications/discussion_detail.html:98
#: notifications/templates/notifications/discussion_list.html:120 #: notifications/templates/notifications/discussion_list.html:127
#: notifications/templates/notifications/inbox.html:397 #: notifications/templates/notifications/inbox.html:432
#: notifications/templates/notifications/inbox_mobile.html:338 #: notifications/templates/notifications/inbox_mobile.html:360
msgid "Clôturée" msgid "Clôturée"
msgstr "Clôturée" msgstr "Clôturée"
@ -342,106 +343,163 @@ msgstr "Type d'objet lié"
msgid "ID objet lié" msgid "ID objet lié"
msgstr "ID objet lié" msgstr "ID objet lié"
#: notifications/models.py:355 #: notifications/models.py:360
msgid "Aucun"
msgstr ""
#: notifications/models.py:361 notifications/models.py:368
#: notifications/templates/notifications/_new_discussion_modal.html:34
#: notifications/templates/notifications/discussion_detail.html:132
msgid "Important / À traiter"
msgstr ""
#: notifications/models.py:362 notifications/models.py:377
#: notifications/models.py:378
#: notifications/templates/notifications/_new_discussion_modal.html:39
#: notifications/templates/notifications/discussion_detail.html:139
#: notifications/templates/notifications/inbox.html:374
#: notifications/templates/notifications/inbox_mobile.html:306
msgid "En cours"
msgstr ""
#: notifications/models.py:363 notifications/models.py:386
#: notifications/templates/notifications/_new_discussion_modal.html:44
#: notifications/templates/notifications/discussion_detail.html:146
msgid "Traité / Fait"
msgstr ""
#: notifications/models.py:369
#: notifications/templates/notifications/inbox.html:371
#: notifications/templates/notifications/inbox_mobile.html:303
msgid "Important"
msgstr ""
#: notifications/models.py:387
#: notifications/templates/notifications/inbox.html:377
#: notifications/templates/notifications/inbox_mobile.html:309
msgid "Traité"
msgstr ""
#: notifications/models.py:401
msgid "Flag"
msgstr ""
#: notifications/models.py:409
msgid "Flag défini par"
msgstr ""
#: notifications/models.py:414
msgid "Flag défini le"
msgstr ""
#: notifications/models.py:419
msgid "URL objet lié" msgid "URL objet lié"
msgstr "URL objet lié" msgstr "URL objet lié"
#: notifications/models.py:358 #: notifications/models.py:422
msgid "Libellé objet lié" msgid "Libellé objet lié"
msgstr "Libellé objet lié" msgstr "Libellé objet lié"
#: notifications/models.py:392 #: notifications/models.py:466
msgid "Intervention" msgid "Intervention"
msgstr "Intervention" msgstr "Intervention"
#: notifications/models.py:400 #: notifications/models.py:474
msgid "Observation" msgid "Observation"
msgstr "Observation" msgstr "Observation"
#: notifications/models.py:408 #: notifications/models.py:482
msgid "Ordre de préparation" msgid "Ordre de préparation"
msgstr "Ordre de préparation" msgstr "Ordre de préparation"
#: notifications/models.py:416 #: notifications/models.py:490
msgid "Projet" msgid "Projet"
msgstr "Projet" msgstr "Projet"
#: notifications/models.py:424 #: notifications/models.py:498
msgid "Générale" msgid "Générale"
msgstr "Générale" msgstr "Générale"
#: notifications/models.py:429 notifications/models.py:445 #: notifications/models.py:503 notifications/models.py:519
msgid "Discussion" msgid "Discussion"
msgstr "Discussion" msgstr "Discussion"
#: notifications/models.py:430 #: notifications/models.py:504
#: notifications/templates/notifications/discussion_list.html:70 #: notifications/templates/notifications/discussion_list.html:70
#: notifications/templates/notifications/inbox.html:133 #: notifications/templates/notifications/inbox.html:133
#: notifications/templates/notifications/inbox_mobile.html:152 #: notifications/templates/notifications/inbox_mobile.html:152
msgid "Discussions" msgid "Discussions"
msgstr "Discussions" msgstr "Discussions"
#: notifications/models.py:453 #: notifications/models.py:527
msgid "Auteur" msgid "Auteur"
msgstr "Auteur" msgstr "Auteur"
#: notifications/models.py:456 #: notifications/models.py:530
msgid "Envoyé le" msgid "Envoyé le"
msgstr "Envoyé le" msgstr "Envoyé le"
#: notifications/models.py:457 #: notifications/models.py:531
msgid "Supprimé" msgid "Supprimé"
msgstr "Supprimé" msgstr "Supprimé"
#: notifications/models.py:465 #: notifications/models.py:534
msgid "Message système"
msgstr "Message système"
#: notifications/models.py:535
msgid "Indique si le message a été généré automatiquement par le système."
msgstr "Indique si le message a été généré automatiquement par le système."
#: notifications/models.py:544
msgid "Messages" msgid "Messages"
msgstr "Messages" msgstr "Messages"
#: notifications/models.py:490 #: notifications/models.py:569
msgid "Intervention annulée" msgid "Intervention annulée"
msgstr "Intervention annulée" msgstr "Intervention annulée"
#: notifications/models.py:495 #: notifications/models.py:574
msgid "Tous (pas de filtre)" msgid "Tous (pas de filtre)"
msgstr "Tous (pas de filtre)" msgstr "Tous (pas de filtre)"
#: notifications/models.py:496 #: notifications/models.py:575
msgid "Doublon" msgid "Doublon"
msgstr "Doublon" msgstr "Doublon"
#: notifications/models.py:497 #: notifications/models.py:576
msgid "A rediriger" msgid "A rediriger"
msgstr "A rediriger" msgstr "A rediriger"
#: notifications/models.py:498 #: notifications/models.py:577
msgid "Pas sous notre gestion" msgid "Pas sous notre gestion"
msgstr "Pas sous notre gestion" msgstr "Pas sous notre gestion"
#: notifications/models.py:499 #: notifications/models.py:578
msgid "Non-relevant" msgid "Non-relevant"
msgstr "Non-relevant" msgstr "Non-relevant"
#: notifications/models.py:500 #: notifications/models.py:579
msgid "Autre" msgid "Autre"
msgstr "Autre" msgstr "Autre"
#: notifications/models.py:504 #: notifications/models.py:583
msgid "Nom de la règle" msgid "Nom de la règle"
msgstr "Nom de la règle" msgstr "Nom de la règle"
#: notifications/models.py:505 #: notifications/models.py:584
msgid "Active" msgid "Active"
msgstr "Active" msgstr "Active"
#: notifications/models.py:511 #: notifications/models.py:590
msgid "Événement déclencheur" msgid "Événement déclencheur"
msgstr "Événement déclencheur" msgstr "Événement déclencheur"
#: notifications/models.py:517 #: notifications/models.py:596
msgid "Filtre : type d'annulation" msgid "Filtre : type d'annulation"
msgstr "Filtre : type d'annulation" msgstr "Filtre : type d'annulation"
#: notifications/models.py:519 #: notifications/models.py:598
msgid "" msgid ""
"Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une " "Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une "
"valeur pour n'agir que sur ce type précis." "valeur pour n'agir que sur ce type précis."
@ -449,15 +507,15 @@ msgstr ""
"Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une " "Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une "
"valeur pour n'agir que sur ce type précis." "valeur pour n'agir que sur ce type précis."
#: notifications/models.py:529 #: notifications/models.py:608
msgid "Type de notification" msgid "Type de notification"
msgstr "Type de notification" msgstr "Type de notification"
#: notifications/models.py:533 #: notifications/models.py:612
msgid "Modèle de titre" msgid "Modèle de titre"
msgstr "Modèle de titre" msgstr "Modèle de titre"
#: notifications/models.py:535 #: notifications/models.py:614
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"Variables disponibles : {intervention_code}, {intervention_title}, " "Variables disponibles : {intervention_code}, {intervention_title}, "
@ -466,11 +524,11 @@ msgstr ""
"Variables disponibles : {intervention_code}, {intervention_title}, " "Variables disponibles : {intervention_code}, {intervention_title}, "
"{cancellation_type_label}" "{cancellation_type_label}"
#: notifications/models.py:541 #: notifications/models.py:620
msgid "Modèle de contenu" msgid "Modèle de contenu"
msgstr "Modèle de contenu" msgstr "Modèle de contenu"
#: notifications/models.py:543 #: notifications/models.py:622
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"Variables disponibles : {intervention_code}, {intervention_title}, " "Variables disponibles : {intervention_code}, {intervention_title}, "
@ -479,7 +537,7 @@ msgstr ""
"Variables disponibles : {intervention_code}, {intervention_title}, " "Variables disponibles : {intervention_code}, {intervention_title}, "
"{cancellation_type_label}, {cancellation_reason}" "{cancellation_type_label}, {cancellation_reason}"
#: notifications/models.py:554 #: notifications/models.py:633
msgid "" msgid ""
"Les notifications seront envoyées à tous les membres (CompanyMember) de ces " "Les notifications seront envoyées à tous les membres (CompanyMember) de ces "
"équipes." "équipes."
@ -487,44 +545,113 @@ msgstr ""
"Les notifications seront envoyées à tous les membres (CompanyMember) de ces " "Les notifications seront envoyées à tous les membres (CompanyMember) de ces "
"équipes." "équipes."
#: notifications/models.py:560 #: notifications/models.py:639
msgid "Utilisateurs destinataires supplémentaires" msgid "Utilisateurs destinataires supplémentaires"
msgstr "Utilisateurs destinataires supplémentaires" msgstr "Utilisateurs destinataires supplémentaires"
#: notifications/models.py:568 #: notifications/models.py:647
msgid "" msgid ""
"Si activé, dès qu'un destinataire marque la notification comme lue (prise en " "Si activé, dès qu'un destinataire marque la notification comme lue (prise en"
"charge), elle est automatiquement archivée pour tous les autres " " charge), elle est automatiquement archivée pour tous les autres "
"destinataires." "destinataires."
msgstr "" msgstr ""
"Si activé, dès qu'un destinataire marque la notification comme lue (prise en " "Si activé, dès qu'un destinataire marque la notification comme lue (prise en"
"charge), elle est automatiquement archivée pour tous les autres " " charge), elle est automatiquement archivée pour tous les autres "
"destinataires." "destinataires."
#: notifications/models.py:574 #: notifications/models.py:653
msgid "Créée le" msgid "Créée le"
msgstr "Créée le" msgstr "Créée le"
#: notifications/models.py:575 #: notifications/models.py:654
msgid "Mise à jour le" msgid "Mise à jour le"
msgstr "Mise à jour le" msgstr "Mise à jour le"
#: notifications/models.py:581 #: notifications/models.py:660
msgid "Règle de notification" msgid "Règle de notification"
msgstr "Règle de notification" msgstr "Règle de notification"
#: notifications/models.py:582 #: notifications/models.py:661
msgid "Règles de notification" msgid "Règles de notification"
msgstr "Règles de notification" msgstr "Règles de notification"
#: notifications/models.py:618 #: notifications/models.py:697
msgid "Pièce jointe de message" msgid "Pièce jointe de message"
msgstr "Pièce jointe de message" msgstr "Pièce jointe de message"
#: notifications/models.py:619 #: notifications/models.py:698
msgid "Pièces jointes de messages" msgid "Pièces jointes de messages"
msgstr "Pièces jointes de messages" msgstr "Pièces jointes de messages"
#: notifications/models.py:717
msgid "Endpoint Push"
msgstr ""
#: notifications/models.py:718
msgid "URL unique de réception push fournie par le navigateur."
msgstr ""
#: notifications/models.py:722
msgid "Clé p256dh"
msgstr ""
#: notifications/models.py:723
msgid "Clé publique du client."
msgstr ""
#: notifications/models.py:727
msgid "Secret auth"
msgstr ""
#: notifications/models.py:728
msgid "Secret d'authentification pour le chiffrement."
msgstr ""
#: notifications/models.py:733
msgid "User Agent"
msgstr ""
#: notifications/models.py:738
msgid "Navigateur"
msgstr ""
#: notifications/models.py:743
msgid "Système d'exploitation"
msgstr ""
#: notifications/models.py:748
msgid "Nom de l'appareil"
msgstr "Nom de l'appareil"
#: notifications/models.py:750
#: notifications/templates/notifications/notification_settings.html:96
msgid "Enregistré le"
msgstr "Enregistré le"
#: notifications/models.py:754
msgid "Appareil inconnu"
msgstr ""
#: notifications/models.py:758
msgid "Abonnement Web Push"
msgstr ""
#: notifications/models.py:759
msgid "Abonnements Web Push"
msgstr ""
#: notifications/services.py:498
#, python-brace-format
msgid "{icon} {user} a défini le statut : {label}"
msgstr ""
#: notifications/services.py:504
#, python-brace-format
msgid ""
"<i class=\"bi bi-flag text-muted me-1\"></i> {user} a retiré le drapeau de "
"suivi."
msgstr ""
#: notifications/templates/notifications/_new_discussion_modal.html:8 #: notifications/templates/notifications/_new_discussion_modal.html:8
#: notifications/templates/notifications/discussion_list.html:74 #: notifications/templates/notifications/discussion_list.html:74
#: notifications/templates/notifications/inbox.html:165 #: notifications/templates/notifications/inbox.html:165
@ -536,40 +663,50 @@ msgstr "Nouvelle discussion"
msgid "Fermer" msgid "Fermer"
msgstr "Fermer" msgstr "Fermer"
#: notifications/templates/notifications/_new_discussion_modal.html:17 #: notifications/templates/notifications/_new_discussion_modal.html:18
msgid "Sujet / Titre (optionnel)" msgid "Sujet / Titre (optionnel)"
msgstr "Sujet / Titre (optionnel)" msgstr "Sujet / Titre (optionnel)"
#: notifications/templates/notifications/_new_discussion_modal.html:20 #: notifications/templates/notifications/_new_discussion_modal.html:21
msgid "Ex: Question sur le dossier..." msgid "Ex: Question sur le dossier..."
msgstr "Ex: Question sur le dossier..." msgstr "Ex: Question sur le dossier..."
#: notifications/templates/notifications/_new_discussion_modal.html:25 #: notifications/templates/notifications/_new_discussion_modal.html:25
#: notifications/templates/notifications/_new_discussion_modal.html:27
msgid "Statut initial"
msgstr ""
#: notifications/templates/notifications/_new_discussion_modal.html:29
#: notifications/templates/notifications/discussion_detail.html:154
msgid "Aucun drapeau"
msgstr "Aucun drapeau"
#: notifications/templates/notifications/_new_discussion_modal.html:53
msgid "Message *" msgid "Message *"
msgstr "Message *" msgstr "Message *"
#: notifications/templates/notifications/_new_discussion_modal.html:28 #: notifications/templates/notifications/_new_discussion_modal.html:56
msgid "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes." msgid "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes."
msgstr "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes." msgstr "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes."
#: notifications/templates/notifications/_new_discussion_modal.html:32 #: notifications/templates/notifications/_new_discussion_modal.html:60
msgid "Rédigez votre message... (@ pour tagger quelqu'un)" msgid "Rédigez votre message... (@ pour tagger quelqu'un)"
msgstr "Rédigez votre message... (@ pour tagger quelqu'un)" msgstr "Rédigez votre message... (@ pour tagger quelqu'un)"
#: notifications/templates/notifications/_new_discussion_modal.html:44 #: notifications/templates/notifications/_new_discussion_modal.html:72
msgid "Joindre des fichiers" msgid "Joindre des fichiers"
msgstr "Joindre des fichiers" msgstr "Joindre des fichiers"
#: notifications/templates/notifications/_new_discussion_modal.html:52 #: notifications/templates/notifications/_new_discussion_modal.html:80
#: notifications/templates/notifications/create.html:82 #: notifications/templates/notifications/create.html:82
#: notifications/templates/notifications/notification_settings.html:104 #: notifications/templates/notifications/notification_settings.html:200
#: notifications/templates/notifications/team_form.html:39 #: notifications/templates/notifications/team_form.html:39
msgid "Annuler" msgid "Annuler"
msgstr "Annuler" msgstr "Annuler"
#: notifications/templates/notifications/_new_discussion_modal.html:55 #: notifications/templates/notifications/_new_discussion_modal.html:83
#: notifications/templates/notifications/create.html:85 #: notifications/templates/notifications/create.html:85
#: notifications/templates/notifications/discussion_detail.html:194 #: notifications/templates/notifications/discussion_detail.html:268
msgid "Envoyer" msgid "Envoyer"
msgstr "Envoyer" msgstr "Envoyer"
@ -582,55 +719,68 @@ msgstr "Créer une notification"
msgid "Ctrl+clic pour sélectionner plusieurs" msgid "Ctrl+clic pour sélectionner plusieurs"
msgstr "Ctrl+clic pour sélectionner plusieurs" msgstr "Ctrl+clic pour sélectionner plusieurs"
#: notifications/templates/notifications/discussion_detail.html:85 #: notifications/templates/notifications/discussion_detail.html:86
msgid "Retour aux discussions" msgid "Retour aux discussions"
msgstr "Retour aux discussions" msgstr "Retour aux discussions"
#: notifications/templates/notifications/discussion_detail.html:120 #: notifications/templates/notifications/discussion_detail.html:123
#: notifications/templates/notifications/discussion_detail.html:504
#: notifications/templates/notifications/inbox.html:366
msgid "Statut"
msgstr ""
#: notifications/templates/notifications/discussion_detail.html:128
msgid "Statut de suivi"
msgstr ""
#: notifications/templates/notifications/discussion_detail.html:179
msgid "Aucun message pour l'instant. Soyez le premier à écrire." msgid "Aucun message pour l'instant. Soyez le premier à écrire."
msgstr "Aucun message pour l'instant. Soyez le premier à écrire." msgstr "Aucun message pour l'instant. Soyez le premier à écrire."
#: notifications/templates/notifications/discussion_detail.html:184 #: notifications/templates/notifications/discussion_detail.html:254
msgid "Écrire un message... (@ pour mentionner)" msgid "Écrire un message... (@ pour mentionner)"
msgstr "Écrire un message... (@ pour mentionner)" msgstr "Écrire un message... (@ pour mentionner)"
#: notifications/templates/notifications/discussion_detail.html:187 #: notifications/templates/notifications/discussion_detail.html:261
msgid "Joindre" msgid "Joindre"
msgstr "Joindre" msgstr "Joindre"
#: notifications/templates/notifications/discussion_detail.html:202 #: notifications/templates/notifications/discussion_detail.html:276
msgid "Cette discussion est clôturée." msgid "Cette discussion est clôturée."
msgstr "Cette discussion est clôturée." msgstr "Cette discussion est clôturée."
#: notifications/templates/notifications/discussion_detail.html:458
msgid "Le message ne peut pas être vide."
msgstr "Le message ne peut pas être vide."
#: notifications/templates/notifications/discussion_list.html:79 #: notifications/templates/notifications/discussion_list.html:79
#: notifications/templates/notifications/discussion_list.html:80 #: notifications/templates/notifications/discussion_list.html:80
#: notifications/templates/notifications/inbox.html:170 #: notifications/templates/notifications/inbox.html:170
#: notifications/templates/notifications/inbox.html:171 #: notifications/templates/notifications/inbox.html:171
#: notifications/templates/notifications/inbox_mobile.html:115 #: notifications/templates/notifications/inbox_mobile.html:115
#: notifications/templates/notifications/notification_settings.html:4
msgid "Paramètres" msgid "Paramètres"
msgstr "Paramètres" msgstr "Paramètres"
#: notifications/templates/notifications/discussion_list.html:89 #: notifications/templates/notifications/discussion_list.html:89
#: notifications/templates/notifications/inbox.html:366 #: notifications/templates/notifications/inbox.html:394
#: notifications/templates/notifications/inbox_mobile.html:301 #: notifications/templates/notifications/inbox_mobile.html:317
msgid "Vous n'avez encore aucune discussion." msgid "Vous n'avez encore aucune discussion."
msgstr "Vous n'avez encore aucune discussion." msgstr "Vous n'avez encore aucune discussion."
#: notifications/templates/notifications/discussion_list.html:137 #: notifications/templates/notifications/discussion_list.html:148
#: notifications/templates/notifications/inbox.html:414 #: notifications/templates/notifications/inbox.html:453
#: notifications/templates/notifications/inbox_mobile.html:350 #: notifications/templates/notifications/inbox_mobile.html:376
msgid "Aucun message encore." msgid "Aucun message encore."
msgstr "Aucun message encore." msgstr "Aucun message encore."
#: notifications/templates/notifications/discussion_list.html:160 #: notifications/templates/notifications/discussion_list.html:171
#: notifications/templates/notifications/inbox.html:437 #: notifications/templates/notifications/inbox.html:476
msgid "participants au total" msgid "participants au total"
msgstr "participants au total" msgstr "participants au total"
#: notifications/templates/notifications/discussion_list.html:170 #: notifications/templates/notifications/discussion_list.html:181
#: notifications/templates/notifications/inbox.html:447 #: notifications/templates/notifications/inbox.html:486
#: notifications/templates/notifications/inbox_mobile.html:372 #: notifications/templates/notifications/inbox_mobile.html:398
msgid "non lu(s)" msgid "non lu(s)"
msgstr "non lu(s)" msgstr "non lu(s)"
@ -654,6 +804,7 @@ msgid "Archivées"
msgstr "Archivées" msgstr "Archivées"
#: notifications/templates/notifications/inbox.html:210 #: notifications/templates/notifications/inbox.html:210
#: notifications/templates/notifications/inbox.html:383
#: notifications/templates/notifications/inbox_mobile.html:194 #: notifications/templates/notifications/inbox_mobile.html:194
msgid "Réinitialiser" msgid "Réinitialiser"
msgstr "Réinitialiser" msgstr "Réinitialiser"
@ -688,6 +839,11 @@ msgstr "Aucune notification archivée."
msgid "Vous n'avez aucune notification." msgid "Vous n'avez aucune notification."
msgstr "Vous n'avez aucune notification." msgstr "Vous n'avez aucune notification."
#: notifications/templates/notifications/inbox.html:368
#: notifications/templates/notifications/inbox_mobile.html:300
msgid "Tous"
msgstr ""
#: notifications/templates/notifications/inbox_mobile.html:119 #: notifications/templates/notifications/inbox_mobile.html:119
msgid "Accueil" msgid "Accueil"
msgstr "Accueil" msgstr "Accueil"
@ -700,30 +856,101 @@ msgstr "Prendre"
msgid "Lu" msgid "Lu"
msgstr "Lu" msgstr "Lu"
#: notifications/templates/notifications/notification_settings.html:4
#: notifications/templates/notifications/notification_settings.html:17
msgid "Paramètres des notifications"
msgstr "Paramètres des notifications"
#: notifications/templates/notifications/notification_settings.html:12 #: notifications/templates/notifications/notification_settings.html:12
#: notifications/templates/notifications/team_list.html:18 #: notifications/templates/notifications/team_list.html:18
msgid "Retour aux notifications" msgid "Retour aux notifications"
msgstr "Retour aux notifications" msgstr "Retour aux notifications"
#: notifications/templates/notifications/notification_settings.html:17
msgid "Paramètres des notifications"
msgstr "Paramètres des notifications"
#: notifications/templates/notifications/notification_settings.html:19 #: notifications/templates/notifications/notification_settings.html:19
msgid "" msgid ""
"Gérez vos préférences de rappel par e-mail pour les notifications non lues." "Gérez vos alertes instantanées sur cet appareil et vos rappels par e-mail."
msgstr "" msgstr ""
"Gérez vos préférences de rappel par e-mail pour les notifications non lues."
#: notifications/templates/notifications/notification_settings.html:28 #: notifications/templates/notifications/notification_settings.html:28
msgid "Notifications sur cet appareil (Alertes système / Push)"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:31
msgid "Vérification..."
msgstr "Vérification..."
#: notifications/templates/notifications/notification_settings.html:36
msgid ""
"Recevez des alertes instantanées sur votre écran (ordinateur ou smartphone) "
"dès qu'une tâche, intervention ou mention vous concerne, même si le site est"
" en arrière-plan."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:42
msgid ""
"Votre navigateur ou appareil actuel ne prend pas en charge les notifications"
" Web Push. (Sur iPhone/iPad, installez l'application via le menu Partager > "
"'Sur l'écran d'accueil')."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:48
msgid ""
"Les notifications sont bloquées dans les paramètres de votre navigateur pour"
" ce site. Veuillez modifier vos permissions de site pour les autoriser."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:55
msgid "Activer les notifications sur cet appareil"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:58
msgid "Cliquez pour autoriser et enregistrer cet appareil."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:64
msgid "Activer sur cet appareil"
msgstr "Activer sur cet appareil"
#: notifications/templates/notifications/notification_settings.html:66
msgid "Envoyer une notification test"
msgstr "Envoyer une notification test"
#: notifications/templates/notifications/notification_settings.html:68
msgid "Tester"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:76
msgid "Appareils enregistrés pour votre compte"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:93
#: notifications/views.py:986
msgid "Appareil"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:103
msgid "Retirer cet appareil"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:103
msgid "Voulez-vous retirer cet appareil des notifications push ?"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:112
msgid ""
"Aucun appareil n'est actuellement enregistré pour recevoir des notifications"
" push."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:124
msgid "Rappels par e-mail" msgid "Rappels par e-mail"
msgstr "Rappels par e-mail" msgstr "Rappels par e-mail"
#: notifications/templates/notifications/notification_settings.html:41 #: notifications/templates/notifications/notification_settings.html:137
msgid "Langue préférée pour les e-mails et notifications" msgid "Langue préférée pour les e-mails et notifications"
msgstr "Langue préférée pour les e-mails et notifications" msgstr "Langue préférée pour les e-mails et notifications"
#: notifications/templates/notifications/notification_settings.html:50 #: notifications/templates/notifications/notification_settings.html:146
msgid "" msgid ""
"Les e-mails de rappel et les notifications automatiques vous seront envoyés " "Les e-mails de rappel et les notifications automatiques vous seront envoyés "
"dans cette langue." "dans cette langue."
@ -731,11 +958,11 @@ msgstr ""
"Les e-mails de rappel et les notifications automatiques vous seront envoyés " "Les e-mails de rappel et les notifications automatiques vous seront envoyés "
"dans cette langue." "dans cette langue."
#: notifications/templates/notifications/notification_settings.html:58 #: notifications/templates/notifications/notification_settings.html:154
msgid "Activer les rappels par e-mail" msgid "Activer les rappels par e-mail"
msgstr "Activer les rappels par e-mail" msgstr "Activer les rappels par e-mail"
#: notifications/templates/notifications/notification_settings.html:61 #: notifications/templates/notifications/notification_settings.html:157
msgid "" msgid ""
"Recevoir un récapitulatif par e-mail si des notifications restent non lues " "Recevoir un récapitulatif par e-mail si des notifications restent non lues "
"au-delà du délai spécifié." "au-delà du délai spécifié."
@ -743,27 +970,27 @@ msgstr ""
"Recevoir un récapitulatif par e-mail si des notifications restent non lues " "Recevoir un récapitulatif par e-mail si des notifications restent non lues "
"au-delà du délai spécifié." "au-delà du délai spécifié."
#: notifications/templates/notifications/notification_settings.html:72 #: notifications/templates/notifications/notification_settings.html:168
msgid "Adresse(s) e-mail de réception" msgid "Adresse(s) e-mail de réception"
msgstr "Adresse(s) e-mail de réception" msgstr "Adresse(s) e-mail de réception"
#: notifications/templates/notifications/notification_settings.html:80 #: notifications/templates/notifications/notification_settings.html:176
msgid "Laissez vide pour utiliser l'e-mail principal de votre compte" msgid "Laissez vide pour utiliser l'e-mail principal de votre compte"
msgstr "Laissez vide pour utiliser l'e-mail principal de votre compte" msgstr "Laissez vide pour utiliser l'e-mail principal de votre compte"
#: notifications/templates/notifications/notification_settings.html:81 #: notifications/templates/notifications/notification_settings.html:177
msgid "Pour plusieurs destinataires, séparez les adresses par des virgules." msgid "Pour plusieurs destinataires, séparez les adresses par des virgules."
msgstr "Pour plusieurs destinataires, séparez les adresses par des virgules." msgstr "Pour plusieurs destinataires, séparez les adresses par des virgules."
#: notifications/templates/notifications/notification_settings.html:88 #: notifications/templates/notifications/notification_settings.html:184
msgid "Délai avant l'envoi du rappel (en heures)" msgid "Délai avant l'envoi du rappel (en heures)"
msgstr "Délai avant l'envoi du rappel (en heures)" msgstr "Délai avant l'envoi du rappel (en heures)"
#: notifications/templates/notifications/notification_settings.html:92 #: notifications/templates/notifications/notification_settings.html:188
msgid "heures" msgid "heures"
msgstr "heures" msgstr "heures"
#: notifications/templates/notifications/notification_settings.html:98 #: notifications/templates/notifications/notification_settings.html:194
msgid "" msgid ""
"Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au " "Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au "
"bout de 24 heures." "bout de 24 heures."
@ -771,7 +998,7 @@ msgstr ""
"Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au " "Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au "
"bout de 24 heures." "bout de 24 heures."
#: notifications/templates/notifications/notification_settings.html:107 #: notifications/templates/notifications/notification_settings.html:203
msgid "Enregistrer mes préférences" msgid "Enregistrer mes préférences"
msgstr "Enregistrer mes préférences" msgstr "Enregistrer mes préférences"
@ -792,7 +1019,7 @@ msgid "Nouvelle équipe"
msgstr "Nouvelle équipe" msgstr "Nouvelle équipe"
#: notifications/templates/notifications/team_list.html:46 #: notifications/templates/notifications/team_list.html:46
#: notifications/views.py:498 #: notifications/views.py:533
msgid "Modifier" msgid "Modifier"
msgstr "Modifier" msgstr "Modifier"
@ -824,63 +1051,125 @@ msgstr "Aucune équipe définie."
msgid "Créer une équipe" msgid "Créer une équipe"
msgstr "Créer une équipe" msgstr "Créer une équipe"
#: notifications/views.py:390 #: notifications/tests.py:319
msgid "Alerte Intervention"
msgstr "Alerte Intervention"
#: notifications/tests.py:320
msgid "Nouvelle intervention assignée"
msgstr "Nouvelle intervention assignée"
#: notifications/views.py:425
msgid "Vous n'avez pas les droits pour créer une notification." msgid "Vous n'avez pas les droits pour créer une notification."
msgstr "Vous n'avez pas les droits pour créer une notification." msgstr "Vous n'avez pas les droits pour créer une notification."
#: notifications/views.py:423 #: notifications/views.py:458
msgid "Notification envoyée avec succès." msgid "Notification envoyée avec succès."
msgstr "Notification envoyée avec succès." msgstr "Notification envoyée avec succès."
#: notifications/views.py:460 #: notifications/views.py:495
msgid "Vous n'avez pas les droits pour créer une équipe." msgid "Vous n'avez pas les droits pour créer une équipe."
msgstr "Vous n'avez pas les droits pour créer une équipe." msgstr "Vous n'avez pas les droits pour créer une équipe."
#: notifications/views.py:470 #: notifications/views.py:505
msgid "Équipe créée avec succès." msgid "Équipe créée avec succès."
msgstr "Équipe créée avec succès." msgstr "Équipe créée avec succès."
#: notifications/views.py:475 #: notifications/views.py:510
msgid "Créer" msgid "Créer"
msgstr "Créer" msgstr "Créer"
#: notifications/views.py:486 #: notifications/views.py:521
msgid "Vous n'avez pas les droits pour modifier une équipe." msgid "Vous n'avez pas les droits pour modifier une équipe."
msgstr "Vous n'avez pas les droits pour modifier une équipe." msgstr "Vous n'avez pas les droits pour modifier une équipe."
#: notifications/views.py:493 #: notifications/views.py:528
msgid "Équipe mise à jour." msgid "Équipe mise à jour."
msgstr "Équipe mise à jour." msgstr "Équipe mise à jour."
#: notifications/views.py:508 #: notifications/views.py:543
msgid "Vous n'avez pas les droits pour supprimer une équipe." msgid "Vous n'avez pas les droits pour supprimer une équipe."
msgstr "Vous n'avez pas les droits pour supprimer une équipe." msgstr "Vous n'avez pas les droits pour supprimer une équipe."
#: notifications/views.py:511 #: notifications/views.py:546
msgid "Équipe supprimée." msgid "Équipe supprimée."
msgstr "Équipe supprimée." msgstr "Équipe supprimée."
#: notifications/views.py:561 #: notifications/views.py:604
msgid "Vous n'êtes pas participant de cette discussion." msgid "Vous n'êtes pas participant de cette discussion."
msgstr "Vous n'êtes pas participant de cette discussion." msgstr "Vous n'êtes pas participant de cette discussion."
#: notifications/views.py:574 #: notifications/views.py:620
msgid "Message envoyé." msgid "Message envoyé."
msgstr "Message envoyé." msgstr "Message envoyé."
#: notifications/views.py:602 #: notifications/views.py:648
msgid "Vous n'avez pas accès à cette discussion."
msgstr "Vous n'avez pas accès à cette discussion."
#: notifications/views.py:699
msgid "Statut de la discussion mis à jour."
msgstr "Statut de la discussion mis à jour."
#: notifications/views.py:722
#, python-format #, python-format
msgid "Discussion de %(name)s" msgid "Discussion de %(name)s"
msgstr "Discussion de %(name)s" msgstr "Discussion de %(name)s"
#: notifications/views.py:613 #: notifications/views.py:736
msgid "Discussion créée avec succès." msgid "Discussion créée avec succès."
msgstr "Discussion créée avec succès." msgstr "Discussion créée avec succès."
#: notifications/views.py:616 #: notifications/views.py:739
msgid "Le contenu du message ne peut pas être vide." msgid "Le contenu du message ne peut pas être vide."
msgstr "Le contenu du message ne peut pas être vide." msgstr "Le contenu du message ne peut pas être vide."
#: notifications/views.py:640 #: notifications/views.py:763
msgid "Vos préférences de rappel par e-mail ont été enregistrées." msgid "Vos préférences de rappel par e-mail ont été enregistrées."
msgstr "Vos préférences de rappel par e-mail ont été enregistrées." msgstr "Vos préférences de rappel par e-mail ont été enregistrées."
#: notifications/views.py:896
msgid "Requête invalide"
msgstr ""
#: notifications/views.py:904
msgid "Paramètres d'abonnement push incomplets"
msgstr ""
#: notifications/views.py:954
msgid "Aucun appareil actif n'est enregistré pour votre compte."
msgstr ""
#: notifications/views.py:959
msgid "Test de notification Loko"
msgstr "Test de notification Loko"
#: notifications/views.py:960
msgid ""
"Les notifications instantanées sur votre appareil fonctionnent correctement "
"!"
msgstr ""
#: notifications/views.py:968
#, python-format
msgid "Notification de test envoyée avec succès sur %(count)d appareil(s) !"
msgstr "Notification de test envoyée avec succès sur %(count)d appareil(s) !"
#: notifications/views.py:972
msgid "Impossible de délivrer la notification au service push."
msgstr ""
#: notifications/views.py:974
#, python-format
msgid "Échec de distribution : %(error)s"
msgstr ""
#: notifications/views.py:988
#, python-format
msgid "L'appareil « %(name)s » a été retiré."
msgstr ""
#~ msgid ""
#~ "Gérez vos préférences de rappel par e-mail pour les notifications non lues."
#~ msgstr ""
#~ "Gérez vos préférences de rappel par e-mail pour les notifications non lues."

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -23,7 +23,7 @@ msgid "Titre"
msgstr "Titel" msgstr "Titel"
#: notifications/forms.py:40 notifications/models.py:72 #: notifications/forms.py:40 notifications/models.py:72
#: notifications/models.py:455 #: notifications/models.py:529
msgid "Contenu" msgid "Contenu"
msgstr "Inhoud" msgstr "Inhoud"
@ -45,7 +45,7 @@ msgid "Expire le"
msgstr "Vervalt op" msgstr "Vervalt op"
#: notifications/forms.py:68 notifications/models.py:284 #: notifications/forms.py:68 notifications/models.py:284
#: notifications/templates/notifications/_new_discussion_modal.html:41 #: notifications/templates/notifications/_new_discussion_modal.html:69
msgid "Pièces jointes" msgid "Pièces jointes"
msgstr "Bijlagen" msgstr "Bijlagen"
@ -57,7 +57,7 @@ msgstr "Foto's of documenten (meerdere bestanden mogelijk)."
msgid "Destinataires individuels" msgid "Destinataires individuels"
msgstr "Individuele ontvangers" msgstr "Individuele ontvangers"
#: notifications/forms.py:82 notifications/models.py:553 #: notifications/forms.py:82 notifications/models.py:632
msgid "Équipes destinataires" msgid "Équipes destinataires"
msgstr "Ontvangende teams" msgstr "Ontvangende teams"
@ -94,6 +94,7 @@ msgstr ""
"zijn ontvangen:" "zijn ontvangen:"
#: notifications/management/commands/send_unread_notification_reminders.py:118 #: notifications/management/commands/send_unread_notification_reminders.py:118
#: notifications/services.py:479
msgid "Système" msgid "Système"
msgstr "Systeem" msgstr "Systeem"
@ -168,8 +169,8 @@ msgstr "Team"
msgid "Équipes" msgid "Équipes"
msgstr "Teams" msgstr "Teams"
#: notifications/models.py:49 notifications/models.py:464 #: notifications/models.py:49 notifications/models.py:543
#: notifications/models.py:593 #: notifications/models.py:672
msgid "Message" msgid "Message"
msgstr "Bericht" msgstr "Bericht"
@ -221,7 +222,7 @@ msgstr "Systeemmelding"
msgid "Générée automatiquement par le système." msgid "Générée automatiquement par le système."
msgstr "Automatisch gegenereerd door het systeem." msgstr "Automatisch gegenereerd door het systeem."
#: notifications/models.py:114 notifications/models.py:566 #: notifications/models.py:114 notifications/models.py:645
msgid "Prise en charge unique" msgid "Prise en charge unique"
msgstr "Enkele overname" msgstr "Enkele overname"
@ -283,11 +284,11 @@ msgstr "Teammelding"
msgid "Notifications d'équipe" msgid "Notifications d'équipe"
msgstr "Teammeldingen" msgstr "Teammeldingen"
#: notifications/models.py:250 notifications/models.py:597 #: notifications/models.py:250 notifications/models.py:676
msgid "Fichier" msgid "Fichier"
msgstr "Bestand" msgstr "Bestand"
#: notifications/models.py:255 notifications/models.py:599 #: notifications/models.py:255 notifications/models.py:678
msgid "Nom du fichier" msgid "Nom du fichier"
msgstr "Bestandsnaam" msgstr "Bestandsnaam"
@ -295,7 +296,7 @@ msgstr "Bestandsnaam"
msgid "Ajouté par" msgid "Ajouté par"
msgstr "Toegevoegd door" msgstr "Toegevoegd door"
#: notifications/models.py:265 notifications/models.py:600 #: notifications/models.py:265 notifications/models.py:679
msgid "Ajouté le" msgid "Ajouté le"
msgstr "Toegevoegd op" msgstr "Toegevoegd op"
@ -303,7 +304,7 @@ msgstr "Toegevoegd op"
msgid "Pièce jointe" msgid "Pièce jointe"
msgstr "Bijlage" msgstr "Bijlage"
#: notifications/models.py:301 #: notifications/models.py:301 notifications/models.py:713
msgid "Utilisateur" msgid "Utilisateur"
msgstr "Gebruiker" msgstr "Gebruiker"
@ -315,22 +316,22 @@ msgstr "Teammelding gelezen"
msgid "Lectures de notifications d'équipe" msgid "Lectures de notifications d'équipe"
msgstr "Teammeldingen gelezen" msgstr "Teammeldingen gelezen"
#: notifications/models.py:331 #: notifications/models.py:331 notifications/models.py:751
msgid "Mis à jour le" msgid "Mis à jour le"
msgstr "Bijgewerkt op" msgstr "Bijgewerkt op"
#: notifications/models.py:336 #: notifications/models.py:336
#: notifications/templates/notifications/discussion_detail.html:105 #: notifications/templates/notifications/discussion_detail.html:164
#: notifications/templates/notifications/discussion_list.html:144 #: notifications/templates/notifications/discussion_list.html:155
#: notifications/templates/notifications/inbox.html:421 #: notifications/templates/notifications/inbox.html:460
msgid "Participants" msgid "Participants"
msgstr "Deelnemers" msgstr "Deelnemers"
#: notifications/models.py:338 #: notifications/models.py:338
#: notifications/templates/notifications/discussion_detail.html:97 #: notifications/templates/notifications/discussion_detail.html:98
#: notifications/templates/notifications/discussion_list.html:120 #: notifications/templates/notifications/discussion_list.html:127
#: notifications/templates/notifications/inbox.html:397 #: notifications/templates/notifications/inbox.html:432
#: notifications/templates/notifications/inbox_mobile.html:338 #: notifications/templates/notifications/inbox_mobile.html:360
msgid "Clôturée" msgid "Clôturée"
msgstr "Gesloten" msgstr "Gesloten"
@ -342,106 +343,164 @@ msgstr "Type gekoppeld object"
msgid "ID objet lié" msgid "ID objet lié"
msgstr "ID gekoppeld object" msgstr "ID gekoppeld object"
#: notifications/models.py:355 #: notifications/models.py:360
msgid "Aucun"
msgstr ""
#: notifications/models.py:361 notifications/models.py:368
#: notifications/templates/notifications/_new_discussion_modal.html:34
#: notifications/templates/notifications/discussion_detail.html:132
msgid "Important / À traiter"
msgstr ""
#: notifications/models.py:362 notifications/models.py:377
#: notifications/models.py:378
#: notifications/templates/notifications/_new_discussion_modal.html:39
#: notifications/templates/notifications/discussion_detail.html:139
#: notifications/templates/notifications/inbox.html:374
#: notifications/templates/notifications/inbox_mobile.html:306
msgid "En cours"
msgstr ""
#: notifications/models.py:363 notifications/models.py:386
#: notifications/templates/notifications/_new_discussion_modal.html:44
#: notifications/templates/notifications/discussion_detail.html:146
msgid "Traité / Fait"
msgstr ""
#: notifications/models.py:369
#: notifications/templates/notifications/inbox.html:371
#: notifications/templates/notifications/inbox_mobile.html:303
msgid "Important"
msgstr ""
#: notifications/models.py:387
#: notifications/templates/notifications/inbox.html:377
#: notifications/templates/notifications/inbox_mobile.html:309
msgid "Traité"
msgstr ""
#: notifications/models.py:401
msgid "Flag"
msgstr ""
#: notifications/models.py:409
msgid "Flag défini par"
msgstr ""
#: notifications/models.py:414
msgid "Flag défini le"
msgstr ""
#: notifications/models.py:419
msgid "URL objet lié" msgid "URL objet lié"
msgstr "URL gekoppeld object" msgstr "URL gekoppeld object"
#: notifications/models.py:358 #: notifications/models.py:422
msgid "Libellé objet lié" msgid "Libellé objet lié"
msgstr "Label gekoppeld object" msgstr "Label gekoppeld object"
#: notifications/models.py:392 #: notifications/models.py:466
msgid "Intervention" msgid "Intervention"
msgstr "Interventie" msgstr "Interventie"
#: notifications/models.py:400 #: notifications/models.py:474
msgid "Observation" msgid "Observation"
msgstr "Observatie" msgstr "Observatie"
#: notifications/models.py:408 #: notifications/models.py:482
msgid "Ordre de préparation" msgid "Ordre de préparation"
msgstr "Voorbereidingsopdracht" msgstr "Voorbereidingsopdracht"
#: notifications/models.py:416 #: notifications/models.py:490
msgid "Projet" msgid "Projet"
msgstr "Project" msgstr "Project"
#: notifications/models.py:424 #: notifications/models.py:498
msgid "Générale" msgid "Générale"
msgstr "Algemeen" msgstr "Algemeen"
#: notifications/models.py:429 notifications/models.py:445 #: notifications/models.py:503 notifications/models.py:519
msgid "Discussion" msgid "Discussion"
msgstr "Discussie" msgstr "Discussie"
#: notifications/models.py:430 #: notifications/models.py:504
#: notifications/templates/notifications/discussion_list.html:70 #: notifications/templates/notifications/discussion_list.html:70
#: notifications/templates/notifications/inbox.html:133 #: notifications/templates/notifications/inbox.html:133
#: notifications/templates/notifications/inbox_mobile.html:152 #: notifications/templates/notifications/inbox_mobile.html:152
msgid "Discussions" msgid "Discussions"
msgstr "Gesprekken" msgstr "Gesprekken"
#: notifications/models.py:453 #: notifications/models.py:527
msgid "Auteur" msgid "Auteur"
msgstr "Auteur" msgstr "Auteur"
#: notifications/models.py:456 #: notifications/models.py:530
msgid "Envoyé le" msgid "Envoyé le"
msgstr "Verzonden op" msgstr "Verzonden op"
#: notifications/models.py:457 #: notifications/models.py:531
msgid "Supprimé" msgid "Supprimé"
msgstr "Verwijderd" msgstr "Verwijderd"
#: notifications/models.py:465 #: notifications/models.py:534
msgid "Message système"
msgstr "Systeembericht"
#: notifications/models.py:535
msgid "Indique si le message a été généré automatiquement par le système."
msgstr ""
"Geeft aan of het bericht automatisch door het systeem werd gegenereerd."
#: notifications/models.py:544
msgid "Messages" msgid "Messages"
msgstr "Berichten" msgstr "Berichten"
#: notifications/models.py:490 #: notifications/models.py:569
msgid "Intervention annulée" msgid "Intervention annulée"
msgstr "Interventie geannuleerd" msgstr "Interventie geannuleerd"
#: notifications/models.py:495 #: notifications/models.py:574
msgid "Tous (pas de filtre)" msgid "Tous (pas de filtre)"
msgstr "Alle (geen filter)" msgstr "Alle (geen filter)"
#: notifications/models.py:496 #: notifications/models.py:575
msgid "Doublon" msgid "Doublon"
msgstr "Duplicaat" msgstr "Duplicaat"
#: notifications/models.py:497 #: notifications/models.py:576
msgid "A rediriger" msgid "A rediriger"
msgstr "Door te sturen" msgstr "Door te sturen"
#: notifications/models.py:498 #: notifications/models.py:577
msgid "Pas sous notre gestion" msgid "Pas sous notre gestion"
msgstr "Niet onder ons beheer" msgstr "Niet onder ons beheer"
#: notifications/models.py:499 #: notifications/models.py:578
msgid "Non-relevant" msgid "Non-relevant"
msgstr "Niet relevant" msgstr "Niet relevant"
#: notifications/models.py:500 #: notifications/models.py:579
msgid "Autre" msgid "Autre"
msgstr "Overige" msgstr "Overige"
#: notifications/models.py:504 #: notifications/models.py:583
msgid "Nom de la règle" msgid "Nom de la règle"
msgstr "Regelnaam" msgstr "Regelnaam"
#: notifications/models.py:505 #: notifications/models.py:584
msgid "Active" msgid "Active"
msgstr "Actief" msgstr "Actief"
#: notifications/models.py:511 #: notifications/models.py:590
msgid "Événement déclencheur" msgid "Événement déclencheur"
msgstr "Triggergebeurtenis" msgstr "Triggergebeurtenis"
#: notifications/models.py:517 #: notifications/models.py:596
msgid "Filtre : type d'annulation" msgid "Filtre : type d'annulation"
msgstr "Filter: annuleringstype" msgstr "Filter: annuleringstype"
#: notifications/models.py:519 #: notifications/models.py:598
msgid "" msgid ""
"Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une " "Laisser vide pour déclencher sur tout type d'annulation. Sélectionner une "
"valeur pour n'agir que sur ce type précis." "valeur pour n'agir que sur ce type précis."
@ -449,15 +508,15 @@ msgstr ""
"Leeg laten om te triggeren op elk type annulering. Selecteer een waarde om " "Leeg laten om te triggeren op elk type annulering. Selecteer een waarde om "
"alleen op dit specifieke type te reageren." "alleen op dit specifieke type te reageren."
#: notifications/models.py:529 #: notifications/models.py:608
msgid "Type de notification" msgid "Type de notification"
msgstr "Type melding" msgstr "Type melding"
#: notifications/models.py:533 #: notifications/models.py:612
msgid "Modèle de titre" msgid "Modèle de titre"
msgstr "Titelsjabloon" msgstr "Titelsjabloon"
#: notifications/models.py:535 #: notifications/models.py:614
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"Variables disponibles : {intervention_code}, {intervention_title}, " "Variables disponibles : {intervention_code}, {intervention_title}, "
@ -466,11 +525,11 @@ msgstr ""
"Beschikbare variabelen: {intervention_code}, {intervention_title}, " "Beschikbare variabelen: {intervention_code}, {intervention_title}, "
"{cancellation_type_label}" "{cancellation_type_label}"
#: notifications/models.py:541 #: notifications/models.py:620
msgid "Modèle de contenu" msgid "Modèle de contenu"
msgstr "Inhoudssjabloon" msgstr "Inhoudssjabloon"
#: notifications/models.py:543 #: notifications/models.py:622
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"Variables disponibles : {intervention_code}, {intervention_title}, " "Variables disponibles : {intervention_code}, {intervention_title}, "
@ -479,50 +538,119 @@ msgstr ""
"Beschikbare variabelen: {intervention_code}, {intervention_title}, " "Beschikbare variabelen: {intervention_code}, {intervention_title}, "
"{cancellation_type_label}, {cancellation_reason}" "{cancellation_type_label}, {cancellation_reason}"
#: notifications/models.py:554 #: notifications/models.py:633
msgid "" msgid ""
"Les notifications seront envoyées à tous les membres (CompanyMember) de ces " "Les notifications seront envoyées à tous les membres (CompanyMember) de ces "
"équipes." "équipes."
msgstr "" msgstr ""
"Meldingen worden verzonden naar alle leden (CompanyMember) van deze teams." "Meldingen worden verzonden naar alle leden (CompanyMember) van deze teams."
#: notifications/models.py:560 #: notifications/models.py:639
msgid "Utilisateurs destinataires supplémentaires" msgid "Utilisateurs destinataires supplémentaires"
msgstr "Extra individuele ontvangers" msgstr "Extra individuele ontvangers"
#: notifications/models.py:568 #: notifications/models.py:647
msgid "" msgid ""
"Si activé, dès qu'un destinataire marque la notification comme lue (prise en " "Si activé, dès qu'un destinataire marque la notification comme lue (prise en"
"charge), elle est automatiquement archivée pour tous les autres " " charge), elle est automatiquement archivée pour tous les autres "
"destinataires." "destinataires."
msgstr "" msgstr ""
"Indien ingeschakeld, zodra een ontvanger de melding als gelezen markeert " "Indien ingeschakeld, zodra een ontvanger de melding als gelezen markeert "
"(overname), wordt deze automatisch gearchiveerd voor alle andere ontvangers." "(overname), wordt deze automatisch gearchiveerd voor alle andere ontvangers."
#: notifications/models.py:574 #: notifications/models.py:653
msgid "Créée le" msgid "Créée le"
msgstr "Aangemaakt op" msgstr "Aangemaakt op"
#: notifications/models.py:575 #: notifications/models.py:654
msgid "Mise à jour le" msgid "Mise à jour le"
msgstr "Bijgewerkt op" msgstr "Bijgewerkt op"
#: notifications/models.py:581 #: notifications/models.py:660
msgid "Règle de notification" msgid "Règle de notification"
msgstr "Meldingsregel" msgstr "Meldingsregel"
#: notifications/models.py:582 #: notifications/models.py:661
msgid "Règles de notification" msgid "Règles de notification"
msgstr "Meldingsregels" msgstr "Meldingsregels"
#: notifications/models.py:618 #: notifications/models.py:697
msgid "Pièce jointe de message" msgid "Pièce jointe de message"
msgstr "Berichtbijlage" msgstr "Berichtbijlage"
#: notifications/models.py:619 #: notifications/models.py:698
msgid "Pièces jointes de messages" msgid "Pièces jointes de messages"
msgstr "Berichtbijlagen" msgstr "Berichtbijlagen"
#: notifications/models.py:717
msgid "Endpoint Push"
msgstr ""
#: notifications/models.py:718
msgid "URL unique de réception push fournie par le navigateur."
msgstr ""
#: notifications/models.py:722
msgid "Clé p256dh"
msgstr ""
#: notifications/models.py:723
msgid "Clé publique du client."
msgstr ""
#: notifications/models.py:727
msgid "Secret auth"
msgstr ""
#: notifications/models.py:728
msgid "Secret d'authentification pour le chiffrement."
msgstr ""
#: notifications/models.py:733
msgid "User Agent"
msgstr ""
#: notifications/models.py:738
msgid "Navigateur"
msgstr ""
#: notifications/models.py:743
msgid "Système d'exploitation"
msgstr ""
#: notifications/models.py:748
msgid "Nom de l'appareil"
msgstr "Apparaatnaam"
#: notifications/models.py:750
#: notifications/templates/notifications/notification_settings.html:96
msgid "Enregistré le"
msgstr "Opgeslagen op"
#: notifications/models.py:754
msgid "Appareil inconnu"
msgstr ""
#: notifications/models.py:758
msgid "Abonnement Web Push"
msgstr ""
#: notifications/models.py:759
msgid "Abonnements Web Push"
msgstr ""
#: notifications/services.py:498
#, python-brace-format
msgid "{icon} {user} a défini le statut : {label}"
msgstr ""
#: notifications/services.py:504
#, python-brace-format
msgid ""
"<i class=\"bi bi-flag text-muted me-1\"></i> {user} a retiré le drapeau de "
"suivi."
msgstr ""
#: notifications/templates/notifications/_new_discussion_modal.html:8 #: notifications/templates/notifications/_new_discussion_modal.html:8
#: notifications/templates/notifications/discussion_list.html:74 #: notifications/templates/notifications/discussion_list.html:74
#: notifications/templates/notifications/inbox.html:165 #: notifications/templates/notifications/inbox.html:165
@ -534,40 +662,50 @@ msgstr "Nieuw gesprek"
msgid "Fermer" msgid "Fermer"
msgstr "Sluiten" msgstr "Sluiten"
#: notifications/templates/notifications/_new_discussion_modal.html:17 #: notifications/templates/notifications/_new_discussion_modal.html:18
msgid "Sujet / Titre (optionnel)" msgid "Sujet / Titre (optionnel)"
msgstr "Onderwerp / Titel (optioneel)" msgstr "Onderwerp / Titel (optioneel)"
#: notifications/templates/notifications/_new_discussion_modal.html:20 #: notifications/templates/notifications/_new_discussion_modal.html:21
msgid "Ex: Question sur le dossier..." msgid "Ex: Question sur le dossier..."
msgstr "Bijv: Vraag over het dossier..." msgstr "Bijv: Vraag over het dossier..."
#: notifications/templates/notifications/_new_discussion_modal.html:25 #: notifications/templates/notifications/_new_discussion_modal.html:25
#: notifications/templates/notifications/_new_discussion_modal.html:27
msgid "Statut initial"
msgstr ""
#: notifications/templates/notifications/_new_discussion_modal.html:29
#: notifications/templates/notifications/discussion_detail.html:154
msgid "Aucun drapeau"
msgstr "Geen vlag"
#: notifications/templates/notifications/_new_discussion_modal.html:53
msgid "Message *" msgid "Message *"
msgstr "Bericht *" msgstr "Bericht *"
#: notifications/templates/notifications/_new_discussion_modal.html:28 #: notifications/templates/notifications/_new_discussion_modal.html:56
msgid "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes." msgid "Tapez @ pour mentionner/tagger des utilisateurs ou des équipes."
msgstr "Typ @ om gebruikers of teams te vermelden." msgstr "Typ @ om gebruikers of teams te vermelden."
#: notifications/templates/notifications/_new_discussion_modal.html:32 #: notifications/templates/notifications/_new_discussion_modal.html:60
msgid "Rédigez votre message... (@ pour tagger quelqu'un)" msgid "Rédigez votre message... (@ pour tagger quelqu'un)"
msgstr "Schrijf uw bericht... (@ om iemand te taggen)" msgstr "Schrijf uw bericht... (@ om iemand te taggen)"
#: notifications/templates/notifications/_new_discussion_modal.html:44 #: notifications/templates/notifications/_new_discussion_modal.html:72
msgid "Joindre des fichiers" msgid "Joindre des fichiers"
msgstr "Bestanden bijvoegen" msgstr "Bestanden bijvoegen"
#: notifications/templates/notifications/_new_discussion_modal.html:52 #: notifications/templates/notifications/_new_discussion_modal.html:80
#: notifications/templates/notifications/create.html:82 #: notifications/templates/notifications/create.html:82
#: notifications/templates/notifications/notification_settings.html:104 #: notifications/templates/notifications/notification_settings.html:200
#: notifications/templates/notifications/team_form.html:39 #: notifications/templates/notifications/team_form.html:39
msgid "Annuler" msgid "Annuler"
msgstr "Annuleren" msgstr "Annuleren"
#: notifications/templates/notifications/_new_discussion_modal.html:55 #: notifications/templates/notifications/_new_discussion_modal.html:83
#: notifications/templates/notifications/create.html:85 #: notifications/templates/notifications/create.html:85
#: notifications/templates/notifications/discussion_detail.html:194 #: notifications/templates/notifications/discussion_detail.html:268
msgid "Envoyer" msgid "Envoyer"
msgstr "Verzenden" msgstr "Verzenden"
@ -580,55 +718,68 @@ msgstr "Melding aanmaken"
msgid "Ctrl+clic pour sélectionner plusieurs" msgid "Ctrl+clic pour sélectionner plusieurs"
msgstr "Ctrl+klik om meerdere te selecteren" msgstr "Ctrl+klik om meerdere te selecteren"
#: notifications/templates/notifications/discussion_detail.html:85 #: notifications/templates/notifications/discussion_detail.html:86
msgid "Retour aux discussions" msgid "Retour aux discussions"
msgstr "Terug naar gesprekken" msgstr "Terug naar gesprekken"
#: notifications/templates/notifications/discussion_detail.html:120 #: notifications/templates/notifications/discussion_detail.html:123
#: notifications/templates/notifications/discussion_detail.html:504
#: notifications/templates/notifications/inbox.html:366
msgid "Statut"
msgstr ""
#: notifications/templates/notifications/discussion_detail.html:128
msgid "Statut de suivi"
msgstr ""
#: notifications/templates/notifications/discussion_detail.html:179
msgid "Aucun message pour l'instant. Soyez le premier à écrire." msgid "Aucun message pour l'instant. Soyez le premier à écrire."
msgstr "Nog geen berichten. Wees de eerste om te schrijven." msgstr "Nog geen berichten. Wees de eerste om te schrijven."
#: notifications/templates/notifications/discussion_detail.html:184 #: notifications/templates/notifications/discussion_detail.html:254
msgid "Écrire un message... (@ pour mentionner)" msgid "Écrire un message... (@ pour mentionner)"
msgstr "Schrijf een bericht... (@ om te vermelden)" msgstr "Schrijf een bericht... (@ om te vermelden)"
#: notifications/templates/notifications/discussion_detail.html:187 #: notifications/templates/notifications/discussion_detail.html:261
msgid "Joindre" msgid "Joindre"
msgstr "Bijvoegen" msgstr "Bijvoegen"
#: notifications/templates/notifications/discussion_detail.html:202 #: notifications/templates/notifications/discussion_detail.html:276
msgid "Cette discussion est clôturée." msgid "Cette discussion est clôturée."
msgstr "Dit gesprek is gesloten." msgstr "Dit gesprek is gesloten."
#: notifications/templates/notifications/discussion_detail.html:458
msgid "Le message ne peut pas être vide."
msgstr "Het bericht mag niet leeg zijn."
#: notifications/templates/notifications/discussion_list.html:79 #: notifications/templates/notifications/discussion_list.html:79
#: notifications/templates/notifications/discussion_list.html:80 #: notifications/templates/notifications/discussion_list.html:80
#: notifications/templates/notifications/inbox.html:170 #: notifications/templates/notifications/inbox.html:170
#: notifications/templates/notifications/inbox.html:171 #: notifications/templates/notifications/inbox.html:171
#: notifications/templates/notifications/inbox_mobile.html:115 #: notifications/templates/notifications/inbox_mobile.html:115
#: notifications/templates/notifications/notification_settings.html:4
msgid "Paramètres" msgid "Paramètres"
msgstr "Instellingen" msgstr "Instellingen"
#: notifications/templates/notifications/discussion_list.html:89 #: notifications/templates/notifications/discussion_list.html:89
#: notifications/templates/notifications/inbox.html:366 #: notifications/templates/notifications/inbox.html:394
#: notifications/templates/notifications/inbox_mobile.html:301 #: notifications/templates/notifications/inbox_mobile.html:317
msgid "Vous n'avez encore aucune discussion." msgid "Vous n'avez encore aucune discussion."
msgstr "U heeft nog geen gesprekken." msgstr "U heeft nog geen gesprekken."
#: notifications/templates/notifications/discussion_list.html:137 #: notifications/templates/notifications/discussion_list.html:148
#: notifications/templates/notifications/inbox.html:414 #: notifications/templates/notifications/inbox.html:453
#: notifications/templates/notifications/inbox_mobile.html:350 #: notifications/templates/notifications/inbox_mobile.html:376
msgid "Aucun message encore." msgid "Aucun message encore."
msgstr "Nog geen bericht." msgstr "Nog geen bericht."
#: notifications/templates/notifications/discussion_list.html:160 #: notifications/templates/notifications/discussion_list.html:171
#: notifications/templates/notifications/inbox.html:437 #: notifications/templates/notifications/inbox.html:476
msgid "participants au total" msgid "participants au total"
msgstr "deelnemers in totaal" msgstr "deelnemers in totaal"
#: notifications/templates/notifications/discussion_list.html:170 #: notifications/templates/notifications/discussion_list.html:181
#: notifications/templates/notifications/inbox.html:447 #: notifications/templates/notifications/inbox.html:486
#: notifications/templates/notifications/inbox_mobile.html:372 #: notifications/templates/notifications/inbox_mobile.html:398
msgid "non lu(s)" msgid "non lu(s)"
msgstr "ongelezen" msgstr "ongelezen"
@ -652,6 +803,7 @@ msgid "Archivées"
msgstr "Gearchiveerd" msgstr "Gearchiveerd"
#: notifications/templates/notifications/inbox.html:210 #: notifications/templates/notifications/inbox.html:210
#: notifications/templates/notifications/inbox.html:383
#: notifications/templates/notifications/inbox_mobile.html:194 #: notifications/templates/notifications/inbox_mobile.html:194
msgid "Réinitialiser" msgid "Réinitialiser"
msgstr "Opnieuw instellen" msgstr "Opnieuw instellen"
@ -686,6 +838,11 @@ msgstr "Geen gearchiveerde meldingen."
msgid "Vous n'avez aucune notification." msgid "Vous n'avez aucune notification."
msgstr "U heeft geen meldingen." msgstr "U heeft geen meldingen."
#: notifications/templates/notifications/inbox.html:368
#: notifications/templates/notifications/inbox_mobile.html:300
msgid "Tous"
msgstr ""
#: notifications/templates/notifications/inbox_mobile.html:119 #: notifications/templates/notifications/inbox_mobile.html:119
msgid "Accueil" msgid "Accueil"
msgstr "Startpagina" msgstr "Startpagina"
@ -698,40 +855,112 @@ msgstr "Nemen"
msgid "Lu" msgid "Lu"
msgstr "Gelezen" msgstr "Gelezen"
#: notifications/templates/notifications/notification_settings.html:4
#: notifications/templates/notifications/notification_settings.html:17
msgid "Paramètres des notifications"
msgstr "Meldingsinstellingen"
#: notifications/templates/notifications/notification_settings.html:12 #: notifications/templates/notifications/notification_settings.html:12
#: notifications/templates/notifications/team_list.html:18 #: notifications/templates/notifications/team_list.html:18
msgid "Retour aux notifications" msgid "Retour aux notifications"
msgstr "Terug naar meldingen" msgstr "Terug naar meldingen"
#: notifications/templates/notifications/notification_settings.html:17
msgid "Paramètres des notifications"
msgstr "Meldingsinstellingen"
#: notifications/templates/notifications/notification_settings.html:19 #: notifications/templates/notifications/notification_settings.html:19
msgid "" msgid ""
"Gérez vos préférences de rappel par e-mail pour les notifications non lues." "Gérez vos alertes instantanées sur cet appareil et vos rappels par e-mail."
msgstr "Beheer uw e-mailherinneringsvoorkeuren voor ongelezen meldingen." msgstr ""
#: notifications/templates/notifications/notification_settings.html:28 #: notifications/templates/notifications/notification_settings.html:28
msgid "Notifications sur cet appareil (Alertes système / Push)"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:31
msgid "Vérification..."
msgstr "Verifiëren..."
#: notifications/templates/notifications/notification_settings.html:36
msgid ""
"Recevez des alertes instantanées sur votre écran (ordinateur ou smartphone) "
"dès qu'une tâche, intervention ou mention vous concerne, même si le site est"
" en arrière-plan."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:42
msgid ""
"Votre navigateur ou appareil actuel ne prend pas en charge les notifications"
" Web Push. (Sur iPhone/iPad, installez l'application via le menu Partager > "
"'Sur l'écran d'accueil')."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:48
msgid ""
"Les notifications sont bloquées dans les paramètres de votre navigateur pour"
" ce site. Veuillez modifier vos permissions de site pour les autoriser."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:55
msgid "Activer les notifications sur cet appareil"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:58
msgid "Cliquez pour autoriser et enregistrer cet appareil."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:64
msgid "Activer sur cet appareil"
msgstr "Inschakelen op dit apparaat"
#: notifications/templates/notifications/notification_settings.html:66
msgid "Envoyer une notification test"
msgstr "Testmelding verzenden"
#: notifications/templates/notifications/notification_settings.html:68
msgid "Tester"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:76
msgid "Appareils enregistrés pour votre compte"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:93
#: notifications/views.py:986
msgid "Appareil"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:103
msgid "Retirer cet appareil"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:103
msgid "Voulez-vous retirer cet appareil des notifications push ?"
msgstr ""
#: notifications/templates/notifications/notification_settings.html:112
msgid ""
"Aucun appareil n'est actuellement enregistré pour recevoir des notifications"
" push."
msgstr ""
#: notifications/templates/notifications/notification_settings.html:124
msgid "Rappels par e-mail" msgid "Rappels par e-mail"
msgstr "E-mailherinneringen" msgstr "E-mailherinneringen"
#: notifications/templates/notifications/notification_settings.html:41 #: notifications/templates/notifications/notification_settings.html:137
msgid "Langue préférée pour les e-mails et notifications" msgid "Langue préférée pour les e-mails et notifications"
msgstr "Voorkeurstaal voor e-mails en meldingen" msgstr "Voorkeurstaal voor e-mails en meldingen"
#: notifications/templates/notifications/notification_settings.html:50 #: notifications/templates/notifications/notification_settings.html:146
msgid "" msgid ""
"Les e-mails de rappel et les notifications automatiques vous seront envoyés " "Les e-mails de rappel et les notifications automatiques vous seront envoyés "
"dans cette langue." "dans cette langue."
msgstr "" msgstr ""
"Herinneringsmails en automatische meldingen worden in deze taal verzonden." "Herinneringsmails en automatische meldingen worden in deze taal verzonden."
#: notifications/templates/notifications/notification_settings.html:58 #: notifications/templates/notifications/notification_settings.html:154
msgid "Activer les rappels par e-mail" msgid "Activer les rappels par e-mail"
msgstr "E-mailherinneringen inschakelen" msgstr "E-mailherinneringen inschakelen"
#: notifications/templates/notifications/notification_settings.html:61 #: notifications/templates/notifications/notification_settings.html:157
msgid "" msgid ""
"Recevoir un récapitulatif par e-mail si des notifications restent non lues " "Recevoir un récapitulatif par e-mail si des notifications restent non lues "
"au-delà du délai spécifié." "au-delà du délai spécifié."
@ -739,35 +968,35 @@ msgstr ""
"Ontvang een samenvatting per e-mail als meldingen langer dan de opgegeven " "Ontvang een samenvatting per e-mail als meldingen langer dan de opgegeven "
"tijd ongelezen blijven." "tijd ongelezen blijven."
#: notifications/templates/notifications/notification_settings.html:72 #: notifications/templates/notifications/notification_settings.html:168
msgid "Adresse(s) e-mail de réception" msgid "Adresse(s) e-mail de réception"
msgstr "E-mailadres(sen) voor ontvangst" msgstr "E-mailadres(sen) voor ontvangst"
#: notifications/templates/notifications/notification_settings.html:80 #: notifications/templates/notifications/notification_settings.html:176
msgid "Laissez vide pour utiliser l'e-mail principal de votre compte" msgid "Laissez vide pour utiliser l'e-mail principal de votre compte"
msgstr "Leeg laten om het primaire e-mailadres van uw account te gebruiken" msgstr "Leeg laten om het primaire e-mailadres van uw account te gebruiken"
#: notifications/templates/notifications/notification_settings.html:81 #: notifications/templates/notifications/notification_settings.html:177
msgid "Pour plusieurs destinataires, séparez les adresses par des virgules." msgid "Pour plusieurs destinataires, séparez les adresses par des virgules."
msgstr "Voor meerdere ontvangers, scheid de adressen met komma's." msgstr "Voor meerdere ontvangers, scheid de adressen met komma's."
#: notifications/templates/notifications/notification_settings.html:88 #: notifications/templates/notifications/notification_settings.html:184
msgid "Délai avant l'envoi du rappel (en heures)" msgid "Délai avant l'envoi du rappel (en heures)"
msgstr "Vertraging voor verzending herinnering (in uren)" msgstr "Vertraging voor verzending herinnering (in uren)"
#: notifications/templates/notifications/notification_settings.html:92 #: notifications/templates/notifications/notification_settings.html:188
msgid "heures" msgid "heures"
msgstr "uur" msgstr "uur"
#: notifications/templates/notifications/notification_settings.html:98 #: notifications/templates/notifications/notification_settings.html:194
msgid "" msgid ""
"Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au " "Exemple: 24h = un rappel sera envoyé si une notification n'a pas été lue au "
"bout de 24 heures." "bout de 24 heures."
msgstr "" msgstr ""
"Voorbeeld: 24u = er wordt een herinnering gestuurd als een melding na 24 uur " "Voorbeeld: 24u = er wordt een herinnering gestuurd als een melding na 24 uur"
"niet is gelezen." " niet is gelezen."
#: notifications/templates/notifications/notification_settings.html:107 #: notifications/templates/notifications/notification_settings.html:203
msgid "Enregistrer mes préférences" msgid "Enregistrer mes préférences"
msgstr "Mijn voorkeuren opslaan" msgstr "Mijn voorkeuren opslaan"
@ -788,7 +1017,7 @@ msgid "Nouvelle équipe"
msgstr "Nieuw team" msgstr "Nieuw team"
#: notifications/templates/notifications/team_list.html:46 #: notifications/templates/notifications/team_list.html:46
#: notifications/views.py:498 #: notifications/views.py:533
msgid "Modifier" msgid "Modifier"
msgstr "Bewerken" msgstr "Bewerken"
@ -820,63 +1049,124 @@ msgstr "Geen teams gedefinieerd."
msgid "Créer une équipe" msgid "Créer une équipe"
msgstr "Team aanmaken" msgstr "Team aanmaken"
#: notifications/views.py:390 #: notifications/tests.py:319
msgid "Alerte Intervention"
msgstr "Interventiewaarschuwing"
#: notifications/tests.py:320
msgid "Nouvelle intervention assignée"
msgstr "Nieuwe interventie toegewezen"
#: notifications/views.py:425
msgid "Vous n'avez pas les droits pour créer une notification." msgid "Vous n'avez pas les droits pour créer une notification."
msgstr "U heeft geen rechten om een melding aan te maken." msgstr "U heeft geen rechten om een melding aan te maken."
#: notifications/views.py:423 #: notifications/views.py:458
msgid "Notification envoyée avec succès." msgid "Notification envoyée avec succès."
msgstr "Melding succesvol verzonden." msgstr "Melding succesvol verzonden."
#: notifications/views.py:460 #: notifications/views.py:495
msgid "Vous n'avez pas les droits pour créer une équipe." msgid "Vous n'avez pas les droits pour créer une équipe."
msgstr "U heeft geen rechten om een team aan te maken." msgstr "U heeft geen rechten om een team aan te maken."
#: notifications/views.py:470 #: notifications/views.py:505
msgid "Équipe créée avec succès." msgid "Équipe créée avec succès."
msgstr "Team succesvol aangemaakt." msgstr "Team succesvol aangemaakt."
#: notifications/views.py:475 #: notifications/views.py:510
msgid "Créer" msgid "Créer"
msgstr "Aanmaken" msgstr "Aanmaken"
#: notifications/views.py:486 #: notifications/views.py:521
msgid "Vous n'avez pas les droits pour modifier une équipe." msgid "Vous n'avez pas les droits pour modifier une équipe."
msgstr "U heeft geen rechten om een team te bewerken." msgstr "U heeft geen rechten om een team te bewerken."
#: notifications/views.py:493 #: notifications/views.py:528
msgid "Équipe mise à jour." msgid "Équipe mise à jour."
msgstr "Team bijgewerkt." msgstr "Team bijgewerkt."
#: notifications/views.py:508 #: notifications/views.py:543
msgid "Vous n'avez pas les droits pour supprimer une équipe." msgid "Vous n'avez pas les droits pour supprimer une équipe."
msgstr "U heeft geen rechten om een team te verwijderen." msgstr "U heeft geen rechten om een team te verwijderen."
#: notifications/views.py:511 #: notifications/views.py:546
msgid "Équipe supprimée." msgid "Équipe supprimée."
msgstr "Team verwijderd." msgstr "Team verwijderd."
#: notifications/views.py:561 #: notifications/views.py:604
msgid "Vous n'êtes pas participant de cette discussion." msgid "Vous n'êtes pas participant de cette discussion."
msgstr "U bent geen deelnemer aan dit gesprek." msgstr "U bent geen deelnemer aan dit gesprek."
#: notifications/views.py:574 #: notifications/views.py:620
msgid "Message envoyé." msgid "Message envoyé."
msgstr "Bericht verzonden." msgstr "Bericht verzonden."
#: notifications/views.py:602 #: notifications/views.py:648
msgid "Vous n'avez pas accès à cette discussion."
msgstr "U hebt geen toegang tot dit gesprek."
#: notifications/views.py:699
msgid "Statut de la discussion mis à jour."
msgstr "Status van het gesprek bijgewerkt."
#: notifications/views.py:722
#, python-format #, python-format
msgid "Discussion de %(name)s" msgid "Discussion de %(name)s"
msgstr "Gesprek van %(name)s" msgstr "Gesprek van %(name)s"
#: notifications/views.py:613 #: notifications/views.py:736
msgid "Discussion créée avec succès." msgid "Discussion créée avec succès."
msgstr "Gesprek succesvol aangemaakt." msgstr "Gesprek succesvol aangemaakt."
#: notifications/views.py:616 #: notifications/views.py:739
msgid "Le contenu du message ne peut pas être vide." msgid "Le contenu du message ne peut pas être vide."
msgstr "De inhoud van het bericht mag niet leeg zijn." msgstr "De inhoud van het bericht mag niet leeg zijn."
#: notifications/views.py:640 #: notifications/views.py:763
msgid "Vos préférences de rappel par e-mail ont été enregistrées." msgid "Vos préférences de rappel par e-mail ont été enregistrées."
msgstr "Uw e-mailherinneringsvoorkeuren zijn opgeslagen." msgstr "Uw e-mailherinneringsvoorkeuren zijn opgeslagen."
#: notifications/views.py:896
msgid "Requête invalide"
msgstr ""
#: notifications/views.py:904
msgid "Paramètres d'abonnement push incomplets"
msgstr ""
#: notifications/views.py:954
msgid "Aucun appareil actif n'est enregistré pour votre compte."
msgstr ""
#: notifications/views.py:959
msgid "Test de notification Loko"
msgstr "Loko-meldingstest"
#: notifications/views.py:960
msgid ""
"Les notifications instantanées sur votre appareil fonctionnent correctement "
"!"
msgstr ""
#: notifications/views.py:968
#, python-format
msgid "Notification de test envoyée avec succès sur %(count)d appareil(s) !"
msgstr "Testmelding succesvol verzonden naar %(count)d apparaat/apparaten!"
#: notifications/views.py:972
msgid "Impossible de délivrer la notification au service push."
msgstr ""
#: notifications/views.py:974
#, python-format
msgid "Échec de distribution : %(error)s"
msgstr ""
#: notifications/views.py:988
#, python-format
msgid "L'appareil « %(name)s » a été retiré."
msgstr ""
#~ msgid ""
#~ "Gérez vos préférences de rappel par e-mail pour les notifications non lues."
#~ msgstr "Beheer uw e-mailherinneringsvoorkeuren voor ongelezen meldingen."

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-13 09:05+0200\n"
"PO-Revision-Date: 2025-12-04 12:30+0100\n" "PO-Revision-Date: 2025-12-04 12:30+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English <LL@li.org>\n" "Language-Team: English <LL@li.org>\n"
@ -402,6 +402,7 @@ msgstr "To be processed"
#: observations/models.py:428 #: observations/models.py:428
#: observations/templates/observations/_observations_list_mobile.html:71 #: observations/templates/observations/_observations_list_mobile.html:71
#: observations/templates/observations/observation_detail.html:876
msgid "En cours" msgid "En cours"
msgstr "In progress" msgstr "In progress"
@ -493,7 +494,7 @@ msgid "Modifier"
msgstr "Edit" msgstr "Edit"
#: observations/templates/observations/observation_detail.html:146 #: observations/templates/observations/observation_detail.html:146
#: observations/templates/observations/observation_detail.html:968 #: observations/templates/observations/observation_detail.html:1005
#: observations/templates/observations/observation_detail_mobile.html:213 #: observations/templates/observations/observation_detail_mobile.html:213
#: observations/templates/observations/observation_detail_mobile.html:735 #: observations/templates/observations/observation_detail_mobile.html:735
msgid "Supprimer" msgid "Supprimer"
@ -591,7 +592,7 @@ msgstr "Add a comment..."
#: observations/templates/observations/observation_detail.html:537 #: observations/templates/observations/observation_detail.html:537
#: observations/templates/observations/observation_detail.html:805 #: observations/templates/observations/observation_detail.html:805
#: observations/templates/observations/observation_detail.html:836 #: observations/templates/observations/observation_detail.html:836
#: observations/templates/observations/observation_detail.html:965 #: observations/templates/observations/observation_detail.html:1002
#: observations/templates/observations/observation_detail_mobile.html:659 #: observations/templates/observations/observation_detail_mobile.html:659
#: observations/templates/observations/observation_detail_mobile.html:732 #: observations/templates/observations/observation_detail_mobile.html:732
#: observations/templates/observations/observation_detail_mobile.html:765 #: observations/templates/observations/observation_detail_mobile.html:765
@ -642,7 +643,7 @@ msgid "Marquer comme traitée"
msgstr "Mark as processed" msgstr "Mark as processed"
#: observations/templates/observations/observation_detail.html:651 #: observations/templates/observations/observation_detail.html:651
#: observations/templates/observations/observation_detail.html:931 #: observations/templates/observations/observation_detail.html:968
#: observations/templates/observations/observation_detail_mobile.html:176 #: observations/templates/observations/observation_detail_mobile.html:176
#: observations/templates/observations/observation_detail_mobile.html:590 #: observations/templates/observations/observation_detail_mobile.html:590
#: observations/templates/observations/observation_form.html:1894 #: observations/templates/observations/observation_form.html:1894
@ -727,7 +728,7 @@ msgstr "Code or title…"
#: observations/templates/observations/observation_detail.html:807 #: observations/templates/observations/observation_detail.html:807
#: observations/templates/observations/observation_detail.html:838 #: observations/templates/observations/observation_detail.html:838
#: observations/templates/observations/observation_detail.html:1083 #: observations/templates/observations/observation_detail.html:1120
#: observations/templates/observations/observation_detail_mobile.html:767 #: observations/templates/observations/observation_detail_mobile.html:767
#: observations/templates/observations/observation_detail_mobile.html:798 #: observations/templates/observations/observation_detail_mobile.html:798
#: observations/templates/observations/observation_detail_mobile.html:925 #: observations/templates/observations/observation_detail_mobile.html:925
@ -749,27 +750,50 @@ msgstr "Code or name…"
msgid "Messages" msgid "Messages"
msgstr "Messages" msgstr "Messages"
#: observations/templates/observations/observation_detail.html:906 #: observations/templates/observations/observation_detail.html:870
#: observations/templates/observations/observation_detail.html:1916
#: observations/templates/observations/observations_index.html:257
#: observations/views.py:579
msgid "Statut"
msgstr "Status"
#: observations/templates/observations/observation_detail.html:874
msgid "Statut de suivi"
msgstr "Tracking status"
#: observations/templates/observations/observation_detail.html:875
msgid "Important / À traiter"
msgstr "Important / To process"
#: observations/templates/observations/observation_detail.html:877
msgid "Traité / Fait"
msgstr "Processed / Done"
#: observations/templates/observations/observation_detail.html:879
msgid "Aucun drapeau"
msgstr ""
#: observations/templates/observations/observation_detail.html:943
#: observations/templates/observations/observation_detail_mobile.html:569 #: observations/templates/observations/observation_detail_mobile.html:569
msgid "Aucun message." msgid "Aucun message."
msgstr "No message." msgstr "No message."
#: observations/templates/observations/observation_detail.html:923 #: observations/templates/observations/observation_detail.html:960
#: observations/templates/observations/observation_detail_mobile.html:583 #: observations/templates/observations/observation_detail_mobile.html:583
msgid "Écrire un message… (@ pour mentionner)" msgid "Écrire un message… (@ pour mentionner)"
msgstr "Write a message… (@ to mention)" msgstr "Write a message… (@ to mention)"
#: observations/templates/observations/observation_detail.html:934 #: observations/templates/observations/observation_detail.html:971
#: observations/templates/observations/observation_detail_mobile.html:593 #: observations/templates/observations/observation_detail_mobile.html:593
msgid "Joindre un fichier" msgid "Joindre un fichier"
msgstr "Attach a file" msgstr "Attach a file"
#: observations/templates/observations/observation_detail.html:958 #: observations/templates/observations/observation_detail.html:995
#: observations/templates/observations/observation_detail_mobile.html:725 #: observations/templates/observations/observation_detail_mobile.html:725
msgid "Supprimer l'observation" msgid "Supprimer l'observation"
msgstr "Delete observation" msgstr "Delete observation"
#: observations/templates/observations/observation_detail.html:962 #: observations/templates/observations/observation_detail.html:999
#: observations/templates/observations/observation_detail_mobile.html:729 #: observations/templates/observations/observation_detail_mobile.html:729
#, python-format #, python-format
msgid "" msgid ""
@ -779,65 +803,65 @@ msgstr ""
"Are you sure you want to delete observation <strong>%(code)s</strong>? This " "Are you sure you want to delete observation <strong>%(code)s</strong>? This "
"action is irreversible." "action is irreversible."
#: observations/templates/observations/observation_detail.html:1107 #: observations/templates/observations/observation_detail.html:1144
msgid "Aucune localisation disponible" msgid "Aucune localisation disponible"
msgstr "No location available" msgstr "No location available"
#: observations/templates/observations/observation_detail.html:1259 #: observations/templates/observations/observation_detail.html:1296
#: observations/templates/observations/observation_form.html:2321 #: observations/templates/observations/observation_form.html:2321
msgid "Voir le détail" msgid "Voir le détail"
msgstr "See details" msgstr "See details"
#: observations/templates/observations/observation_detail.html:1288 #: observations/templates/observations/observation_detail.html:1325
msgid "observations à proximité" msgid "observations à proximité"
msgstr "sightings nearby" msgstr "sightings nearby"
#: observations/templates/observations/observation_detail.html:1289 #: observations/templates/observations/observation_detail.html:1326
msgid "Aucune observation similaire à proximité" msgid "Aucune observation similaire à proximité"
msgstr "No similar sightings nearby" msgstr "No similar sightings nearby"
#: observations/templates/observations/observation_detail.html:1407 #: observations/templates/observations/observation_detail.html:1444
#: observations/templates/observations/observation_form.html:2556 #: observations/templates/observations/observation_form.html:2556
msgid "Voir l'intervention" msgid "Voir l'intervention"
msgstr "View intervention" msgstr "View intervention"
#: observations/templates/observations/observation_detail.html:1437 #: observations/templates/observations/observation_detail.html:1474
#: observations/templates/observations/observation_form.html:2594 #: observations/templates/observations/observation_form.html:2594
msgid "intervention(s) proche(s) dans les 3 derniers mois" msgid "intervention(s) proche(s) dans les 3 derniers mois"
msgstr "close intervention(s) in the last 3 months" msgstr "close intervention(s) in the last 3 months"
#: observations/templates/observations/observation_detail.html:1438 #: observations/templates/observations/observation_detail.html:1475
msgid "Aucune intervention récente pour cette catégorie" msgid "Aucune intervention récente pour cette catégorie"
msgstr "No recent intervention for this category" msgstr "No recent intervention for this category"
#: observations/templates/observations/observation_detail.html:1529 #: observations/templates/observations/observation_detail.html:1566
#: observations/templates/observations/observation_detail_mobile.html:1027 #: observations/templates/observations/observation_detail_mobile.html:1027
#: observations/templates/observations/observations_index.html:384 #: observations/templates/observations/observations_index.html:384
#: observations/templates/observations/observations_index_mobile.html:460 #: observations/templates/observations/observations_index_mobile.html:460
msgid "Chargement..." msgid "Chargement..."
msgstr "Loading..." msgstr "Loading..."
#: observations/templates/observations/observation_detail.html:1535 #: observations/templates/observations/observation_detail.html:1572
#: observations/templates/observations/observation_detail_mobile.html:1033 #: observations/templates/observations/observation_detail_mobile.html:1033
msgid "URL de résumé manquante" msgid "URL de résumé manquante"
msgstr "Summary URL missing" msgstr "Summary URL missing"
#: observations/templates/observations/observation_detail.html:1551 #: observations/templates/observations/observation_detail.html:1588
#: observations/templates/observations/observation_detail_mobile.html:1049 #: observations/templates/observations/observation_detail_mobile.html:1049
msgid "Erreur lors du chargement du résumé" msgid "Erreur lors du chargement du résumé"
msgstr "Error loading summary" msgstr "Error loading summary"
#: observations/templates/observations/observation_detail.html:1614 #: observations/templates/observations/observation_detail.html:1651
#: observations/templates/observations/observation_detail_mobile.html:1187 #: observations/templates/observations/observation_detail_mobile.html:1187
msgid "Retirer" msgid "Retirer"
msgstr "Remove" msgstr "Remove"
#: observations/templates/observations/observation_detail.html:1791 #: observations/templates/observations/observation_detail.html:1828
#: observations/views.py:1926 #: observations/views.py:1926
msgid "Le message ne peut pas être vide." msgid "Le message ne peut pas être vide."
msgstr "The message cannot be empty." msgstr "The message cannot be empty."
#: observations/templates/observations/observation_detail.html:1870 #: observations/templates/observations/observation_detail.html:1961
#: observations/templates/observations/observation_detail_mobile.html:1079 #: observations/templates/observations/observation_detail_mobile.html:1079
msgid "Aucun résultat" msgid "Aucun résultat"
msgstr "No results" msgstr "No results"
@ -1166,11 +1190,6 @@ msgstr "All"
msgid "Aucun" msgid "Aucun"
msgstr "None" msgstr "None"
#: observations/templates/observations/observations_index.html:257
#: observations/views.py:579
msgid "Statut"
msgstr "Status"
#: observations/templates/observations/observations_index.html:276 #: observations/templates/observations/observations_index.html:276
msgid "Période" msgid "Période"
msgstr "Period" msgstr "Period"

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: 2025-12-04 12:30+0100\n" "PO-Revision-Date: 2025-12-04 12:30+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French <LL@li.org>\n" "Language-Team: French <LL@li.org>\n"
@ -407,6 +407,7 @@ msgstr "À traiter"
#: observations/models.py:428 #: observations/models.py:428
#: observations/templates/observations/_observations_list_mobile.html:71 #: observations/templates/observations/_observations_list_mobile.html:71
#: observations/templates/observations/observation_detail.html:876
msgid "En cours" msgid "En cours"
msgstr "En cours" msgstr "En cours"
@ -498,7 +499,7 @@ msgid "Modifier"
msgstr "Modifier" msgstr "Modifier"
#: observations/templates/observations/observation_detail.html:146 #: observations/templates/observations/observation_detail.html:146
#: observations/templates/observations/observation_detail.html:968 #: observations/templates/observations/observation_detail.html:1005
#: observations/templates/observations/observation_detail_mobile.html:213 #: observations/templates/observations/observation_detail_mobile.html:213
#: observations/templates/observations/observation_detail_mobile.html:735 #: observations/templates/observations/observation_detail_mobile.html:735
msgid "Supprimer" msgid "Supprimer"
@ -596,7 +597,7 @@ msgstr "Ajoutez un commentaire..."
#: observations/templates/observations/observation_detail.html:537 #: observations/templates/observations/observation_detail.html:537
#: observations/templates/observations/observation_detail.html:805 #: observations/templates/observations/observation_detail.html:805
#: observations/templates/observations/observation_detail.html:836 #: observations/templates/observations/observation_detail.html:836
#: observations/templates/observations/observation_detail.html:965 #: observations/templates/observations/observation_detail.html:1002
#: observations/templates/observations/observation_detail_mobile.html:659 #: observations/templates/observations/observation_detail_mobile.html:659
#: observations/templates/observations/observation_detail_mobile.html:732 #: observations/templates/observations/observation_detail_mobile.html:732
#: observations/templates/observations/observation_detail_mobile.html:765 #: observations/templates/observations/observation_detail_mobile.html:765
@ -647,7 +648,7 @@ msgid "Marquer comme traitée"
msgstr "Marquer comme traitée" msgstr "Marquer comme traitée"
#: observations/templates/observations/observation_detail.html:651 #: observations/templates/observations/observation_detail.html:651
#: observations/templates/observations/observation_detail.html:931 #: observations/templates/observations/observation_detail.html:968
#: observations/templates/observations/observation_detail_mobile.html:176 #: observations/templates/observations/observation_detail_mobile.html:176
#: observations/templates/observations/observation_detail_mobile.html:590 #: observations/templates/observations/observation_detail_mobile.html:590
#: observations/templates/observations/observation_form.html:1894 #: observations/templates/observations/observation_form.html:1894
@ -733,7 +734,7 @@ msgstr "Code ou titre…"
#: observations/templates/observations/observation_detail.html:807 #: observations/templates/observations/observation_detail.html:807
#: observations/templates/observations/observation_detail.html:838 #: observations/templates/observations/observation_detail.html:838
#: observations/templates/observations/observation_detail.html:1083 #: observations/templates/observations/observation_detail.html:1120
#: observations/templates/observations/observation_detail_mobile.html:767 #: observations/templates/observations/observation_detail_mobile.html:767
#: observations/templates/observations/observation_detail_mobile.html:798 #: observations/templates/observations/observation_detail_mobile.html:798
#: observations/templates/observations/observation_detail_mobile.html:925 #: observations/templates/observations/observation_detail_mobile.html:925
@ -755,27 +756,50 @@ msgstr "Code ou nom…"
msgid "Messages" msgid "Messages"
msgstr "Messages" msgstr "Messages"
#: observations/templates/observations/observation_detail.html:906 #: observations/templates/observations/observation_detail.html:870
#: observations/templates/observations/observation_detail.html:1916
#: observations/templates/observations/observations_index.html:257
#: observations/views.py:579
msgid "Statut"
msgstr "Statut"
#: observations/templates/observations/observation_detail.html:874
msgid "Statut de suivi"
msgstr "Statut de suivi"
#: observations/templates/observations/observation_detail.html:875
msgid "Important / À traiter"
msgstr "Important / À traiter"
#: observations/templates/observations/observation_detail.html:877
msgid "Traité / Fait"
msgstr "Traité / Fait"
#: observations/templates/observations/observation_detail.html:879
msgid "Aucun drapeau"
msgstr ""
#: observations/templates/observations/observation_detail.html:943
#: observations/templates/observations/observation_detail_mobile.html:569 #: observations/templates/observations/observation_detail_mobile.html:569
msgid "Aucun message." msgid "Aucun message."
msgstr "Aucun message." msgstr "Aucun message."
#: observations/templates/observations/observation_detail.html:923 #: observations/templates/observations/observation_detail.html:960
#: observations/templates/observations/observation_detail_mobile.html:583 #: observations/templates/observations/observation_detail_mobile.html:583
msgid "Écrire un message… (@ pour mentionner)" msgid "Écrire un message… (@ pour mentionner)"
msgstr "Écrire un message… (@ pour mentionner)" msgstr "Écrire un message… (@ pour mentionner)"
#: observations/templates/observations/observation_detail.html:934 #: observations/templates/observations/observation_detail.html:971
#: observations/templates/observations/observation_detail_mobile.html:593 #: observations/templates/observations/observation_detail_mobile.html:593
msgid "Joindre un fichier" msgid "Joindre un fichier"
msgstr "Joindre un fichier" msgstr "Joindre un fichier"
#: observations/templates/observations/observation_detail.html:958 #: observations/templates/observations/observation_detail.html:995
#: observations/templates/observations/observation_detail_mobile.html:725 #: observations/templates/observations/observation_detail_mobile.html:725
msgid "Supprimer l'observation" msgid "Supprimer l'observation"
msgstr "Supprimer l'observation" msgstr "Supprimer l'observation"
#: observations/templates/observations/observation_detail.html:962 #: observations/templates/observations/observation_detail.html:999
#: observations/templates/observations/observation_detail_mobile.html:729 #: observations/templates/observations/observation_detail_mobile.html:729
#, python-format #, python-format
msgid "" msgid ""
@ -786,65 +810,65 @@ msgstr ""
"Cette action est irréversible.Voulez-vous vraiment supprimer l'observation " "Cette action est irréversible.Voulez-vous vraiment supprimer l'observation "
"<strong>%(code)s</strong> ? Cette action est irréversible." "<strong>%(code)s</strong> ? Cette action est irréversible."
#: observations/templates/observations/observation_detail.html:1107 #: observations/templates/observations/observation_detail.html:1144
msgid "Aucune localisation disponible" msgid "Aucune localisation disponible"
msgstr "Aucune localisation disponible" msgstr "Aucune localisation disponible"
#: observations/templates/observations/observation_detail.html:1259 #: observations/templates/observations/observation_detail.html:1296
#: observations/templates/observations/observation_form.html:2321 #: observations/templates/observations/observation_form.html:2321
msgid "Voir le détail" msgid "Voir le détail"
msgstr "Voir le détail" msgstr "Voir le détail"
#: observations/templates/observations/observation_detail.html:1288 #: observations/templates/observations/observation_detail.html:1325
msgid "observations à proximité" msgid "observations à proximité"
msgstr "observations à proximité" msgstr "observations à proximité"
#: observations/templates/observations/observation_detail.html:1289 #: observations/templates/observations/observation_detail.html:1326
msgid "Aucune observation similaire à proximité" msgid "Aucune observation similaire à proximité"
msgstr "Aucune observation similaire à proximité" msgstr "Aucune observation similaire à proximité"
#: observations/templates/observations/observation_detail.html:1407 #: observations/templates/observations/observation_detail.html:1444
#: observations/templates/observations/observation_form.html:2556 #: observations/templates/observations/observation_form.html:2556
msgid "Voir l'intervention" msgid "Voir l'intervention"
msgstr "Voir l'intervention" msgstr "Voir l'intervention"
#: observations/templates/observations/observation_detail.html:1437 #: observations/templates/observations/observation_detail.html:1474
#: observations/templates/observations/observation_form.html:2594 #: observations/templates/observations/observation_form.html:2594
msgid "intervention(s) proche(s) dans les 3 derniers mois" msgid "intervention(s) proche(s) dans les 3 derniers mois"
msgstr "intervention(s) proche(s) dans les 3 derniers mois" msgstr "intervention(s) proche(s) dans les 3 derniers mois"
#: observations/templates/observations/observation_detail.html:1438 #: observations/templates/observations/observation_detail.html:1475
msgid "Aucune intervention récente pour cette catégorie" msgid "Aucune intervention récente pour cette catégorie"
msgstr "Aucune intervention récente pour cette catégorie" msgstr "Aucune intervention récente pour cette catégorie"
#: observations/templates/observations/observation_detail.html:1529 #: observations/templates/observations/observation_detail.html:1566
#: observations/templates/observations/observation_detail_mobile.html:1027 #: observations/templates/observations/observation_detail_mobile.html:1027
#: observations/templates/observations/observations_index.html:384 #: observations/templates/observations/observations_index.html:384
#: observations/templates/observations/observations_index_mobile.html:460 #: observations/templates/observations/observations_index_mobile.html:460
msgid "Chargement..." msgid "Chargement..."
msgstr "Chargement..." msgstr "Chargement..."
#: observations/templates/observations/observation_detail.html:1535 #: observations/templates/observations/observation_detail.html:1572
#: observations/templates/observations/observation_detail_mobile.html:1033 #: observations/templates/observations/observation_detail_mobile.html:1033
msgid "URL de résumé manquante" msgid "URL de résumé manquante"
msgstr "URL de résumé manquante" msgstr "URL de résumé manquante"
#: observations/templates/observations/observation_detail.html:1551 #: observations/templates/observations/observation_detail.html:1588
#: observations/templates/observations/observation_detail_mobile.html:1049 #: observations/templates/observations/observation_detail_mobile.html:1049
msgid "Erreur lors du chargement du résumé" msgid "Erreur lors du chargement du résumé"
msgstr "Erreur lors du chargement du résumé" msgstr "Erreur lors du chargement du résumé"
#: observations/templates/observations/observation_detail.html:1614 #: observations/templates/observations/observation_detail.html:1651
#: observations/templates/observations/observation_detail_mobile.html:1187 #: observations/templates/observations/observation_detail_mobile.html:1187
msgid "Retirer" msgid "Retirer"
msgstr "Retirer" msgstr "Retirer"
#: observations/templates/observations/observation_detail.html:1791 #: observations/templates/observations/observation_detail.html:1828
#: observations/views.py:1926 #: observations/views.py:1926
msgid "Le message ne peut pas être vide." msgid "Le message ne peut pas être vide."
msgstr "Le message ne peut pas être vide." msgstr "Le message ne peut pas être vide."
#: observations/templates/observations/observation_detail.html:1870 #: observations/templates/observations/observation_detail.html:1961
#: observations/templates/observations/observation_detail_mobile.html:1079 #: observations/templates/observations/observation_detail_mobile.html:1079
msgid "Aucun résultat" msgid "Aucun résultat"
msgstr "Aucun résultat" msgstr "Aucun résultat"
@ -1175,11 +1199,6 @@ msgstr "Tous"
msgid "Aucun" msgid "Aucun"
msgstr "Aucun" msgstr "Aucun"
#: observations/templates/observations/observations_index.html:257
#: observations/views.py:579
msgid "Statut"
msgstr "Statut"
#: observations/templates/observations/observations_index.html:276 #: observations/templates/observations/observations_index.html:276
msgid "Période" msgid "Période"
msgstr "Période" msgstr "Période"

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: 2025-12-04 12:30+0100\n" "PO-Revision-Date: 2025-12-04 12:30+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch <LL@li.org>\n" "Language-Team: Dutch <LL@li.org>\n"
@ -406,6 +406,7 @@ msgstr "Te behandelen"
#: observations/models.py:428 #: observations/models.py:428
#: observations/templates/observations/_observations_list_mobile.html:71 #: observations/templates/observations/_observations_list_mobile.html:71
#: observations/templates/observations/observation_detail.html:876
msgid "En cours" msgid "En cours"
msgstr "In behandeling" msgstr "In behandeling"
@ -497,7 +498,7 @@ msgid "Modifier"
msgstr "Bewerken" msgstr "Bewerken"
#: observations/templates/observations/observation_detail.html:146 #: observations/templates/observations/observation_detail.html:146
#: observations/templates/observations/observation_detail.html:968 #: observations/templates/observations/observation_detail.html:1005
#: observations/templates/observations/observation_detail_mobile.html:213 #: observations/templates/observations/observation_detail_mobile.html:213
#: observations/templates/observations/observation_detail_mobile.html:735 #: observations/templates/observations/observation_detail_mobile.html:735
msgid "Supprimer" msgid "Supprimer"
@ -595,7 +596,7 @@ msgstr "Voeg een opmerking toe..."
#: observations/templates/observations/observation_detail.html:537 #: observations/templates/observations/observation_detail.html:537
#: observations/templates/observations/observation_detail.html:805 #: observations/templates/observations/observation_detail.html:805
#: observations/templates/observations/observation_detail.html:836 #: observations/templates/observations/observation_detail.html:836
#: observations/templates/observations/observation_detail.html:965 #: observations/templates/observations/observation_detail.html:1002
#: observations/templates/observations/observation_detail_mobile.html:659 #: observations/templates/observations/observation_detail_mobile.html:659
#: observations/templates/observations/observation_detail_mobile.html:732 #: observations/templates/observations/observation_detail_mobile.html:732
#: observations/templates/observations/observation_detail_mobile.html:765 #: observations/templates/observations/observation_detail_mobile.html:765
@ -646,7 +647,7 @@ msgid "Marquer comme traitée"
msgstr "Markeer als verwerkt" msgstr "Markeer als verwerkt"
#: observations/templates/observations/observation_detail.html:651 #: observations/templates/observations/observation_detail.html:651
#: observations/templates/observations/observation_detail.html:931 #: observations/templates/observations/observation_detail.html:968
#: observations/templates/observations/observation_detail_mobile.html:176 #: observations/templates/observations/observation_detail_mobile.html:176
#: observations/templates/observations/observation_detail_mobile.html:590 #: observations/templates/observations/observation_detail_mobile.html:590
#: observations/templates/observations/observation_form.html:1894 #: observations/templates/observations/observation_form.html:1894
@ -730,7 +731,7 @@ msgstr "Code of titel…"
#: observations/templates/observations/observation_detail.html:807 #: observations/templates/observations/observation_detail.html:807
#: observations/templates/observations/observation_detail.html:838 #: observations/templates/observations/observation_detail.html:838
#: observations/templates/observations/observation_detail.html:1083 #: observations/templates/observations/observation_detail.html:1120
#: observations/templates/observations/observation_detail_mobile.html:767 #: observations/templates/observations/observation_detail_mobile.html:767
#: observations/templates/observations/observation_detail_mobile.html:798 #: observations/templates/observations/observation_detail_mobile.html:798
#: observations/templates/observations/observation_detail_mobile.html:925 #: observations/templates/observations/observation_detail_mobile.html:925
@ -752,27 +753,50 @@ msgstr "Code of naam…"
msgid "Messages" msgid "Messages"
msgstr "Berichten" msgstr "Berichten"
#: observations/templates/observations/observation_detail.html:906 #: observations/templates/observations/observation_detail.html:870
#: observations/templates/observations/observation_detail.html:1916
#: observations/templates/observations/observations_index.html:257
#: observations/views.py:579
msgid "Statut"
msgstr "Status"
#: observations/templates/observations/observation_detail.html:874
msgid "Statut de suivi"
msgstr "Opvolgingsstatus"
#: observations/templates/observations/observation_detail.html:875
msgid "Important / À traiter"
msgstr "Belangrijk / Te behandelen"
#: observations/templates/observations/observation_detail.html:877
msgid "Traité / Fait"
msgstr "Verwerkt / Gedaan"
#: observations/templates/observations/observation_detail.html:879
msgid "Aucun drapeau"
msgstr ""
#: observations/templates/observations/observation_detail.html:943
#: observations/templates/observations/observation_detail_mobile.html:569 #: observations/templates/observations/observation_detail_mobile.html:569
msgid "Aucun message." msgid "Aucun message."
msgstr "Geen bericht." msgstr "Geen bericht."
#: observations/templates/observations/observation_detail.html:923 #: observations/templates/observations/observation_detail.html:960
#: observations/templates/observations/observation_detail_mobile.html:583 #: observations/templates/observations/observation_detail_mobile.html:583
msgid "Écrire un message… (@ pour mentionner)" msgid "Écrire un message… (@ pour mentionner)"
msgstr "Schrijf een bericht… (@ om te vermelden)" msgstr "Schrijf een bericht… (@ om te vermelden)"
#: observations/templates/observations/observation_detail.html:934 #: observations/templates/observations/observation_detail.html:971
#: observations/templates/observations/observation_detail_mobile.html:593 #: observations/templates/observations/observation_detail_mobile.html:593
msgid "Joindre un fichier" msgid "Joindre un fichier"
msgstr "Bestand bijvoegen" msgstr "Bestand bijvoegen"
#: observations/templates/observations/observation_detail.html:958 #: observations/templates/observations/observation_detail.html:995
#: observations/templates/observations/observation_detail_mobile.html:725 #: observations/templates/observations/observation_detail_mobile.html:725
msgid "Supprimer l'observation" msgid "Supprimer l'observation"
msgstr "Waarneming verwijderen" msgstr "Waarneming verwijderen"
#: observations/templates/observations/observation_detail.html:962 #: observations/templates/observations/observation_detail.html:999
#: observations/templates/observations/observation_detail_mobile.html:729 #: observations/templates/observations/observation_detail_mobile.html:729
#, python-format #, python-format
msgid "" msgid ""
@ -782,65 +806,65 @@ msgstr ""
"Weet u zeker dat u observatie <strong>%(code)s</strong> wilt verwijderen? " "Weet u zeker dat u observatie <strong>%(code)s</strong> wilt verwijderen? "
"Deze actie is onomkeerbaar." "Deze actie is onomkeerbaar."
#: observations/templates/observations/observation_detail.html:1107 #: observations/templates/observations/observation_detail.html:1144
msgid "Aucune localisation disponible" msgid "Aucune localisation disponible"
msgstr "Geen locatie beschikbaar" msgstr "Geen locatie beschikbaar"
#: observations/templates/observations/observation_detail.html:1259 #: observations/templates/observations/observation_detail.html:1296
#: observations/templates/observations/observation_form.html:2321 #: observations/templates/observations/observation_form.html:2321
msgid "Voir le détail" msgid "Voir le détail"
msgstr "Zie details" msgstr "Zie details"
#: observations/templates/observations/observation_detail.html:1288 #: observations/templates/observations/observation_detail.html:1325
msgid "observations à proximité" msgid "observations à proximité"
msgstr "waarnemingen in de buurt" msgstr "waarnemingen in de buurt"
#: observations/templates/observations/observation_detail.html:1289 #: observations/templates/observations/observation_detail.html:1326
msgid "Aucune observation similaire à proximité" msgid "Aucune observation similaire à proximité"
msgstr "Geen soortgelijke waarnemingen in de buurt" msgstr "Geen soortgelijke waarnemingen in de buurt"
#: observations/templates/observations/observation_detail.html:1407 #: observations/templates/observations/observation_detail.html:1444
#: observations/templates/observations/observation_form.html:2556 #: observations/templates/observations/observation_form.html:2556
msgid "Voir l'intervention" msgid "Voir l'intervention"
msgstr "Interventie bekijken" msgstr "Interventie bekijken"
#: observations/templates/observations/observation_detail.html:1437 #: observations/templates/observations/observation_detail.html:1474
#: observations/templates/observations/observation_form.html:2594 #: observations/templates/observations/observation_form.html:2594
msgid "intervention(s) proche(s) dans les 3 derniers mois" msgid "intervention(s) proche(s) dans les 3 derniers mois"
msgstr "nauwe interventie(s) in de afgelopen 3 maanden" msgstr "nauwe interventie(s) in de afgelopen 3 maanden"
#: observations/templates/observations/observation_detail.html:1438 #: observations/templates/observations/observation_detail.html:1475
msgid "Aucune intervention récente pour cette catégorie" msgid "Aucune intervention récente pour cette catégorie"
msgstr "Geen recente interventie voor deze categorie" msgstr "Geen recente interventie voor deze categorie"
#: observations/templates/observations/observation_detail.html:1529 #: observations/templates/observations/observation_detail.html:1566
#: observations/templates/observations/observation_detail_mobile.html:1027 #: observations/templates/observations/observation_detail_mobile.html:1027
#: observations/templates/observations/observations_index.html:384 #: observations/templates/observations/observations_index.html:384
#: observations/templates/observations/observations_index_mobile.html:460 #: observations/templates/observations/observations_index_mobile.html:460
msgid "Chargement..." msgid "Chargement..."
msgstr "Laden..." msgstr "Laden..."
#: observations/templates/observations/observation_detail.html:1535 #: observations/templates/observations/observation_detail.html:1572
#: observations/templates/observations/observation_detail_mobile.html:1033 #: observations/templates/observations/observation_detail_mobile.html:1033
msgid "URL de résumé manquante" msgid "URL de résumé manquante"
msgstr "Samenvattings-URL ontbreekt" msgstr "Samenvattings-URL ontbreekt"
#: observations/templates/observations/observation_detail.html:1551 #: observations/templates/observations/observation_detail.html:1588
#: observations/templates/observations/observation_detail_mobile.html:1049 #: observations/templates/observations/observation_detail_mobile.html:1049
msgid "Erreur lors du chargement du résumé" msgid "Erreur lors du chargement du résumé"
msgstr "Fout bij het laden van de samenvatting" msgstr "Fout bij het laden van de samenvatting"
#: observations/templates/observations/observation_detail.html:1614 #: observations/templates/observations/observation_detail.html:1651
#: observations/templates/observations/observation_detail_mobile.html:1187 #: observations/templates/observations/observation_detail_mobile.html:1187
msgid "Retirer" msgid "Retirer"
msgstr "Verwijderen" msgstr "Verwijderen"
#: observations/templates/observations/observation_detail.html:1791 #: observations/templates/observations/observation_detail.html:1828
#: observations/views.py:1926 #: observations/views.py:1926
msgid "Le message ne peut pas être vide." msgid "Le message ne peut pas être vide."
msgstr "Het bericht mag niet leeg zijn." msgstr "Het bericht mag niet leeg zijn."
#: observations/templates/observations/observation_detail.html:1870 #: observations/templates/observations/observation_detail.html:1961
#: observations/templates/observations/observation_detail_mobile.html:1079 #: observations/templates/observations/observation_detail_mobile.html:1079
msgid "Aucun résultat" msgid "Aucun résultat"
msgstr "Geen resultaten" msgstr "Geen resultaten"
@ -1170,11 +1194,6 @@ msgstr "Alle"
msgid "Aucun" msgid "Aucun"
msgstr "Geen" msgstr "Geen"
#: observations/templates/observations/observations_index.html:257
#: observations/views.py:579
msgid "Statut"
msgstr "Status"
#: observations/templates/observations/observations_index.html:276 #: observations/templates/observations/observations_index.html:276
msgid "Période" msgid "Période"
msgstr "Periode" msgstr "Periode"

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-13 09:05+0200\n"
"PO-Revision-Date: 2025-12-04 13:00+0100\n" "PO-Revision-Date: 2025-12-04 13:00+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English <LL@li.org>\n" "Language-Team: English <LL@li.org>\n"
@ -161,8 +161,8 @@ msgstr "Strict access"
#: projects/models.py:92 #: projects/models.py:92
msgid "" msgid ""
"Si coché, seuls les utilisateurs et équipes explicitement mentionnés peuvent" "Si coché, seuls les utilisateurs et équipes explicitement mentionnés peuvent "
" accéder à ce projet. Les permissions par thématique ne s'appliquent pas." "accéder à ce projet. Les permissions par thématique ne s'appliquent pas."
msgstr "" msgstr ""
"If checked, only explicitly mentioned users and teams can access this " "If checked, only explicitly mentioned users and teams can access this "
"project. Thematic permissions do not apply." "project. Thematic permissions do not apply."
@ -585,8 +585,8 @@ msgstr "Search for a team..."
#: projects/templates/projects/projects_detail.html:894 #: projects/templates/projects/projects_detail.html:894
msgid "" msgid ""
"Si coché, seuls les utilisateurs et équipes listés peuvent accéder au projet" "Si coché, seuls les utilisateurs et équipes listés peuvent accéder au projet "
" (les permissions thématiques ne s'appliquent pas)." "(les permissions thématiques ne s'appliquent pas)."
msgstr "" msgstr ""
"If checked, only listed users and teams can access the project (thematic " "If checked, only listed users and teams can access the project (thematic "
"permissions do not apply)." "permissions do not apply)."
@ -672,11 +672,13 @@ msgstr "Create project"
#: projects/templates/projects/projects_form.html:46 #: projects/templates/projects/projects_form.html:46
msgid "" msgid ""
"\n" "\n"
" Les champs avec une <span style=\"border-bottom: 1px dashed #6c757d;\">bordure en pointillés</span> sont facultatifs.\n" " Les champs avec une <span style=\"border-bottom: 1px dashed #6c757d;"
"\">bordure en pointillés</span> sont facultatifs.\n"
" " " "
msgstr "" msgstr ""
"\n" "\n"
" Fields with a <span style=\"border-bottom: 1px dashed #6c757d;\">dashed border</span> are optional.\n" " Fields with a <span style=\"border-bottom: 1px dashed #6c757d;"
"\">dashed border</span> are optional.\n"
" " " "
#: projects/templates/projects/projects_form.html:176 #: projects/templates/projects/projects_form.html:176
@ -745,8 +747,8 @@ msgstr "Filter on this area"
msgid "Accès introuvable" msgid "Accès introuvable"
msgstr "Access not found" msgstr "Access not found"
#: projects/views.py:524 projects/views.py:536 projects/views.py:972 #: projects/views.py:524 projects/views.py:536 projects/views.py:990
#: projects/views.py:991 projects/views.py:1010 #: projects/views.py:1009 projects/views.py:1028
msgid "Vous n'avez pas la permission de modifier ce projet." msgid "Vous n'avez pas la permission de modifier ce projet."
msgstr "You do not have permission to modify this project." msgstr "You do not have permission to modify this project."
@ -754,111 +756,110 @@ msgstr "You do not have permission to modify this project."
msgid "Vous n'avez pas la permission d'ajouter des documents." msgid "Vous n'avez pas la permission d'ajouter des documents."
msgstr "You do not have permission to add documents." msgstr "You do not have permission to add documents."
#: projects/views.py:603 projects/views.py:610 projects/views.py:616 #: projects/views.py:617 projects/views.py:624 projects/views.py:630
msgid "Document(s) sauvegardé(s) avec succès !" msgid "Document(s) sauvegardé(s) avec succès !"
msgstr "Document(s) saved successfully!" msgstr "Document(s) saved successfully!"
#: projects/views.py:618 #: projects/views.py:632
msgid "Erreur lors de la sauvegarde des documents." msgid "Erreur lors de la sauvegarde des documents."
msgstr "Error saving documents." msgstr "Error saving documents."
#: projects/views.py:644 #: projects/views.py:658
msgid "Impossible d'ajouter une intervention à un projet terminé ou clôturé." msgid "Impossible d'ajouter une intervention à un projet terminé ou clôturé."
msgstr "Unable to add an intervention to a completed or closed project." msgstr "Unable to add an intervention to a completed or closed project."
#: projects/views.py:649 #: projects/views.py:663
msgid "Vous n'avez pas de configuration utilisateur." msgid "Vous n'avez pas de configuration utilisateur."
msgstr "You do not have a user configuration." msgstr "You do not have a user configuration."
#: projects/views.py:670 #: projects/views.py:684
msgid "" msgid ""
"Vous n'avez pas la permission de créer des interventions pour les " "Vous n'avez pas la permission de créer des interventions pour les "
"thématiques de ce projet." "thématiques de ce projet."
msgstr "" msgstr ""
"You do not have permission to create interventions for this project's " "You do not have permission to create interventions for this project's themes."
"themes."
#: projects/views.py:718 #: projects/views.py:732
msgid "Seuls les administrateurs ou managers peuvent associer une commande." msgid "Seuls les administrateurs ou managers peuvent associer une commande."
msgstr "Only administrators or managers can associate an order." msgstr "Only administrators or managers can associate an order."
#: projects/views.py:725 #: projects/views.py:739
msgid "Commande associée au projet avec succès !" msgid "Commande associée au projet avec succès !"
msgstr "Order associated with project successfully!" msgstr "Order associated with project successfully!"
#: projects/views.py:727 #: projects/views.py:741
msgid "Erreur lors de l'association de la commande." msgid "Erreur lors de l'association de la commande."
msgstr "Error associating order." msgstr "Error associating order."
#: projects/views.py:745 #: projects/views.py:759
msgid "Cette commande n'est pas associée à ce projet." msgid "Cette commande n'est pas associée à ce projet."
msgstr "This order is not associated with this project." msgstr "This order is not associated with this project."
#: projects/views.py:756 #: projects/views.py:770
msgid "Seuls les administrateurs ou managers peuvent créer une commande." msgid "Seuls les administrateurs ou managers peuvent créer une commande."
msgstr "Only administrators or managers can create an order." msgstr "Only administrators or managers can create an order."
#: projects/views.py:781 #: projects/views.py:795
msgid "Phase ajoutée avec succès !" msgid "Phase ajoutée avec succès !"
msgstr "Phase added successfully!" msgstr "Phase added successfully!"
#: projects/views.py:783 #: projects/views.py:797
msgid "Erreur lors de l'ajout de la phase." msgid "Erreur lors de l'ajout de la phase."
msgstr "Error adding phase." msgstr "Error adding phase."
#: projects/views.py:924 #: projects/views.py:942
msgid "Vous n'avez pas la permission de modifier le statut." msgid "Vous n'avez pas la permission de modifier le statut."
msgstr "You do not have permission to modify the status." msgstr "You do not have permission to modify the status."
#: projects/views.py:930 #: projects/views.py:948
msgid "Aucun statut fourni." msgid "Aucun statut fourni."
msgstr "No status provided." msgstr "No status provided."
#: projects/views.py:933 #: projects/views.py:951
msgid "Statut invalide." msgid "Statut invalide."
msgstr "Invalid status." msgstr "Invalid status."
#: projects/views.py:936 #: projects/views.py:954
msgid "Statut non autorisé pour ce projet." msgid "Statut non autorisé pour ce projet."
msgstr "Status not allowed for this project." msgstr "Status not allowed for this project."
#: projects/views.py:939 #: projects/views.py:957
msgid "Le statut du projet est déjà défini." msgid "Le statut du projet est déjà défini."
msgstr "The project status is already set." msgstr "The project status is already set."
#: projects/views.py:947 #: projects/views.py:965
msgid "Statut mis à jour avec succès." msgid "Statut mis à jour avec succès."
msgstr "Status updated successfully." msgstr "Status updated successfully."
#: projects/views.py:1016 #: projects/views.py:1034
msgid "Données invalides." msgid "Données invalides."
msgstr "Invalid data." msgstr "Invalid data."
#: projects/views.py:1026 #: projects/views.py:1044
#, python-format #, python-format
msgid "Attribut %(id)s introuvable." msgid "Attribut %(id)s introuvable."
msgstr "%(id)s attribute not found." msgstr "%(id)s attribute not found."
#: projects/views.py:1034 #: projects/views.py:1052
#, python-format #, python-format
msgid "Le champ « %(name)s » est obligatoire." msgid "Le champ « %(name)s » est obligatoire."
msgstr "The “%(name)s” field is mandatory." msgstr "The “%(name)s” field is mandatory."
#: projects/views.py:1053 #: projects/views.py:1071
#, python-format #, python-format
msgid "Valeur numérique invalide pour « %(name)s »." msgid "Valeur numérique invalide pour « %(name)s »."
msgstr "Invalid numeric value for “%(name)s”." msgstr "Invalid numeric value for “%(name)s”."
#: projects/views.py:1063 #: projects/views.py:1081
#, python-format #, python-format
msgid "Valeur booléenne invalide pour « %(name)s »." msgid "Valeur booléenne invalide pour « %(name)s »."
msgstr "Invalid boolean value for “%(name)s”." msgstr "Invalid boolean value for “%(name)s”."
#: projects/views.py:1078 #: projects/views.py:1096
#, python-format #, python-format
msgid "Date invalide pour « %(name)s ». Format attendu : AAAA-MM-JJ." msgid "Date invalide pour « %(name)s ». Format attendu : AAAA-MM-JJ."
msgstr "Invalid date for “%(name)s”. " msgstr "Invalid date for “%(name)s”. "
#: projects/views.py:1086 #: projects/views.py:1104
msgid "Valeurs sauvegardées avec succès." msgid "Valeurs sauvegardées avec succès."
msgstr "Values ​​saved successfully." msgstr "Values ​​saved successfully."

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: 2025-12-04 13:00+0100\n" "PO-Revision-Date: 2025-12-04 13:00+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French <LL@li.org>\n" "Language-Team: French <LL@li.org>\n"
@ -160,12 +160,8 @@ msgid "Accès strict"
msgstr "Accès strict" msgstr "Accès strict"
#: projects/models.py:92 #: projects/models.py:92
msgid "" msgid "Si coché, seuls les utilisateurs et équipes explicitement mentionnés peuvent accéder à ce projet. Les permissions par thématique ne s'appliquent pas."
"Si coché, seuls les utilisateurs et équipes explicitement mentionnés peuvent" msgstr "Si coché, seuls les utilisateurs et équipes explicitement mentionnés peuvent accéder à ce projet. Les permissions par thématique ne s'appliquent pas."
" accéder à ce projet. Les permissions par thématique ne s'appliquent pas."
msgstr ""
"Si coché, seuls les utilisateurs et équipes explicitement mentionnés peuvent"
" accéder à ce projet. Les permissions par thématique ne s'appliquent pas."
#: projects/models.py:203 projects/models.py:235 #: projects/models.py:203 projects/models.py:235
#: projects/templates/projects/projects_detail.html:46 #: projects/templates/projects/projects_detail.html:46
@ -584,12 +580,8 @@ msgid "Rechercher une équipe..."
msgstr "Rechercher une équipe..." msgstr "Rechercher une équipe..."
#: projects/templates/projects/projects_detail.html:894 #: projects/templates/projects/projects_detail.html:894
msgid "" msgid "Si coché, seuls les utilisateurs et équipes listés peuvent accéder au projet (les permissions thématiques ne s'appliquent pas)."
"Si coché, seuls les utilisateurs et équipes listés peuvent accéder au projet" msgstr "Si coché, seuls les utilisateurs et équipes listés peuvent accéder au projet (les permissions thématiques ne s'appliquent pas)."
" (les permissions thématiques ne s'appliquent pas)."
msgstr ""
"Si coché, seuls les utilisateurs et équipes listés peuvent accéder au projet"
" (les permissions thématiques ne s'appliquent pas)."
#: projects/templates/projects/projects_detail.html:918 #: projects/templates/projects/projects_detail.html:918
msgid "Voulez-vous vraiment supprimer ce membre du projet ?" msgid "Voulez-vous vraiment supprimer ce membre du projet ?"
@ -745,8 +737,8 @@ msgstr "Filtrer sur cette zone"
msgid "Accès introuvable" msgid "Accès introuvable"
msgstr "Accès introuvable" msgstr "Accès introuvable"
#: projects/views.py:524 projects/views.py:536 projects/views.py:972 #: projects/views.py:524 projects/views.py:536 projects/views.py:990
#: projects/views.py:991 projects/views.py:1010 #: projects/views.py:1009 projects/views.py:1028
msgid "Vous n'avez pas la permission de modifier ce projet." msgid "Vous n'avez pas la permission de modifier ce projet."
msgstr "Vous n'avez pas la permission de modifier ce projet." msgstr "Vous n'avez pas la permission de modifier ce projet."
@ -754,111 +746,107 @@ msgstr "Vous n'avez pas la permission de modifier ce projet."
msgid "Vous n'avez pas la permission d'ajouter des documents." msgid "Vous n'avez pas la permission d'ajouter des documents."
msgstr "Vous n'avez pas la permission d'ajouter des documents." msgstr "Vous n'avez pas la permission d'ajouter des documents."
#: projects/views.py:603 projects/views.py:610 projects/views.py:616 #: projects/views.py:617 projects/views.py:624 projects/views.py:630
msgid "Document(s) sauvegardé(s) avec succès !" msgid "Document(s) sauvegardé(s) avec succès !"
msgstr "Document(s) sauvegardé(s) avec succès !" msgstr "Document(s) sauvegardé(s) avec succès !"
#: projects/views.py:618 #: projects/views.py:632
msgid "Erreur lors de la sauvegarde des documents." msgid "Erreur lors de la sauvegarde des documents."
msgstr "Erreur lors de la sauvegarde des documents." msgstr "Erreur lors de la sauvegarde des documents."
#: projects/views.py:644 #: projects/views.py:658
msgid "Impossible d'ajouter une intervention à un projet terminé ou clôturé." msgid "Impossible d'ajouter une intervention à un projet terminé ou clôturé."
msgstr "Impossible d'ajouter une intervention à un projet terminé ou clôturé." msgstr "Impossible d'ajouter une intervention à un projet terminé ou clôturé."
#: projects/views.py:649 #: projects/views.py:663
msgid "Vous n'avez pas de configuration utilisateur." msgid "Vous n'avez pas de configuration utilisateur."
msgstr "Vous n'avez pas de configuration utilisateur." msgstr "Vous n'avez pas de configuration utilisateur."
#: projects/views.py:670 #: projects/views.py:684
msgid "" msgid "Vous n'avez pas la permission de créer des interventions pour les thématiques de ce projet."
"Vous n'avez pas la permission de créer des interventions pour les " msgstr "Vous n'avez pas la permission de créer des interventions pour les thématiques de ce projet."
"thématiques de ce projet."
msgstr ""
"Vous n'avez pas la permission de créer des interventions pour les "
"thématiques de ce projet."
#: projects/views.py:718 #: projects/views.py:732
msgid "Seuls les administrateurs ou managers peuvent associer une commande." msgid "Seuls les administrateurs ou managers peuvent associer une commande."
msgstr "Seuls les administrateurs ou managers peuvent associer une commande." msgstr "Seuls les administrateurs ou managers peuvent associer une commande."
#: projects/views.py:725 #: projects/views.py:739
msgid "Commande associée au projet avec succès !" msgid "Commande associée au projet avec succès !"
msgstr "Commande associée au projet avec succès !" msgstr "Commande associée au projet avec succès !"
#: projects/views.py:727 #: projects/views.py:741
msgid "Erreur lors de l'association de la commande." msgid "Erreur lors de l'association de la commande."
msgstr "Erreur lors de l'association de la commande." msgstr "Erreur lors de l'association de la commande."
#: projects/views.py:745 #: projects/views.py:759
msgid "Cette commande n'est pas associée à ce projet." msgid "Cette commande n'est pas associée à ce projet."
msgstr "Cette commande n'est pas associée à ce projet." msgstr "Cette commande n'est pas associée à ce projet."
#: projects/views.py:756 #: projects/views.py:770
msgid "Seuls les administrateurs ou managers peuvent créer une commande." msgid "Seuls les administrateurs ou managers peuvent créer une commande."
msgstr "Seuls les administrateurs ou managers peuvent créer une commande." msgstr "Seuls les administrateurs ou managers peuvent créer une commande."
#: projects/views.py:781 #: projects/views.py:795
msgid "Phase ajoutée avec succès !" msgid "Phase ajoutée avec succès !"
msgstr "Phase ajoutée avec succès !" msgstr "Phase ajoutée avec succès !"
#: projects/views.py:783 #: projects/views.py:797
msgid "Erreur lors de l'ajout de la phase." msgid "Erreur lors de l'ajout de la phase."
msgstr "Erreur lors de l'ajout de la phase." msgstr "Erreur lors de l'ajout de la phase."
#: projects/views.py:924 #: projects/views.py:942
msgid "Vous n'avez pas la permission de modifier le statut." msgid "Vous n'avez pas la permission de modifier le statut."
msgstr "Vous n'avez pas la permission de modifier le statut." msgstr "Vous n'avez pas la permission de modifier le statut."
#: projects/views.py:930 #: projects/views.py:948
msgid "Aucun statut fourni." msgid "Aucun statut fourni."
msgstr "Aucun statut fourni." msgstr "Aucun statut fourni."
#: projects/views.py:933 #: projects/views.py:951
msgid "Statut invalide." msgid "Statut invalide."
msgstr "Statut invalide." msgstr "Statut invalide."
#: projects/views.py:936 #: projects/views.py:954
msgid "Statut non autorisé pour ce projet." msgid "Statut non autorisé pour ce projet."
msgstr "Statut non autorisé pour ce projet." msgstr "Statut non autorisé pour ce projet."
#: projects/views.py:939 #: projects/views.py:957
msgid "Le statut du projet est déjà défini." msgid "Le statut du projet est déjà défini."
msgstr "Le statut du projet est déjà défini." msgstr "Le statut du projet est déjà défini."
#: projects/views.py:947 #: projects/views.py:965
msgid "Statut mis à jour avec succès." msgid "Statut mis à jour avec succès."
msgstr "Statut mis à jour avec succès." msgstr "Statut mis à jour avec succès."
#: projects/views.py:1016 #: projects/views.py:1034
msgid "Données invalides." msgid "Données invalides."
msgstr "Données invalides." msgstr "Données invalides."
#: projects/views.py:1026 #: projects/views.py:1044
#, python-format #, python-format
msgid "Attribut %(id)s introuvable." msgid "Attribut %(id)s introuvable."
msgstr "Attribut %(id)s introuvable." msgstr "Attribut %(id)s introuvable."
#: projects/views.py:1034 #: projects/views.py:1052
#, python-format #, python-format
msgid "Le champ « %(name)s » est obligatoire." msgid "Le champ « %(name)s » est obligatoire."
msgstr "Le champ « %(name)s » est obligatoire." msgstr "Le champ « %(name)s » est obligatoire."
#: projects/views.py:1053 #: projects/views.py:1071
#, python-format #, python-format
msgid "Valeur numérique invalide pour « %(name)s »." msgid "Valeur numérique invalide pour « %(name)s »."
msgstr "Valeur numérique invalide pour « %(name)s »." msgstr "Valeur numérique invalide pour « %(name)s »."
#: projects/views.py:1063 #: projects/views.py:1081
#, python-format #, python-format
msgid "Valeur booléenne invalide pour « %(name)s »." msgid "Valeur booléenne invalide pour « %(name)s »."
msgstr "Valeur booléenne invalide pour « %(name)s »." msgstr "Valeur booléenne invalide pour « %(name)s »."
#: projects/views.py:1078 #: projects/views.py:1096
#, python-format #, python-format
msgid "Date invalide pour « %(name)s ». Format attendu : AAAA-MM-JJ." msgid "Date invalide pour « %(name)s ». Format attendu : AAAA-MM-JJ."
msgstr "Date invalide pour « %(name)s ». Format attendu : AAAA-MM-JJ." msgstr "Date invalide pour « %(name)s ». Format attendu : AAAA-MM-JJ."
#: projects/views.py:1086 #: projects/views.py:1104
msgid "Valeurs sauvegardées avec succès." msgid "Valeurs sauvegardées avec succès."
msgstr "Valeurs sauvegardées avec succès." msgstr "Valeurs sauvegardées avec succès."

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: 2025-12-04 13:00+0100\n" "PO-Revision-Date: 2025-12-04 13:00+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch <LL@li.org>\n" "Language-Team: Dutch <LL@li.org>\n"
@ -160,12 +160,8 @@ msgid "Accès strict"
msgstr "Strikte toegang" msgstr "Strikte toegang"
#: projects/models.py:92 #: projects/models.py:92
msgid "" msgid "Si coché, seuls les utilisateurs et équipes explicitement mentionnés peuvent accéder à ce projet. Les permissions par thématique ne s'appliquent pas."
"Si coché, seuls les utilisateurs et équipes explicitement mentionnés peuvent" msgstr "Indien aangevinkt, hebben alleen expliciet vermelde gebruikers en teams toegang tot dit project. Thema-machtigingen zijn niet van toepassing."
" accéder à ce projet. Les permissions par thématique ne s'appliquent pas."
msgstr ""
"Indien aangevinkt, hebben alleen expliciet vermelde gebruikers en teams "
"toegang tot dit project. Thema-machtigingen zijn niet van toepassing."
#: projects/models.py:203 projects/models.py:235 #: projects/models.py:203 projects/models.py:235
#: projects/templates/projects/projects_detail.html:46 #: projects/templates/projects/projects_detail.html:46
@ -584,12 +580,8 @@ msgid "Rechercher une équipe..."
msgstr "Zoek een team..." msgstr "Zoek een team..."
#: projects/templates/projects/projects_detail.html:894 #: projects/templates/projects/projects_detail.html:894
msgid "" msgid "Si coché, seuls les utilisateurs et équipes listés peuvent accéder au projet (les permissions thématiques ne s'appliquent pas)."
"Si coché, seuls les utilisateurs et équipes listés peuvent accéder au projet" msgstr "Indien aangevinkt, hebben alleen vermelde gebruikers en teams toegang tot het project (thema-machtigingen zijn niet van toepassing)."
" (les permissions thématiques ne s'appliquent pas)."
msgstr ""
"Indien aangevinkt, hebben alleen vermelde gebruikers en teams toegang tot "
"het project (thema-machtigingen zijn niet van toepassing)."
#: projects/templates/projects/projects_detail.html:918 #: projects/templates/projects/projects_detail.html:918
msgid "Voulez-vous vraiment supprimer ce membre du projet ?" msgid "Voulez-vous vraiment supprimer ce membre du projet ?"
@ -745,8 +737,8 @@ msgstr "Filteren op dit gebied"
msgid "Accès introuvable" msgid "Accès introuvable"
msgstr "Toegang niet gevonden" msgstr "Toegang niet gevonden"
#: projects/views.py:524 projects/views.py:536 projects/views.py:972 #: projects/views.py:524 projects/views.py:536 projects/views.py:990
#: projects/views.py:991 projects/views.py:1010 #: projects/views.py:1009 projects/views.py:1028
msgid "Vous n'avez pas la permission de modifier ce projet." msgid "Vous n'avez pas la permission de modifier ce projet."
msgstr "U heeft geen toestemming om dit project te wijzigen." msgstr "U heeft geen toestemming om dit project te wijzigen."
@ -754,112 +746,107 @@ msgstr "U heeft geen toestemming om dit project te wijzigen."
msgid "Vous n'avez pas la permission d'ajouter des documents." msgid "Vous n'avez pas la permission d'ajouter des documents."
msgstr "U hebt geen toestemming om documenten toe te voegen." msgstr "U hebt geen toestemming om documenten toe te voegen."
#: projects/views.py:603 projects/views.py:610 projects/views.py:616 #: projects/views.py:617 projects/views.py:624 projects/views.py:630
msgid "Document(s) sauvegardé(s) avec succès !" msgid "Document(s) sauvegardé(s) avec succès !"
msgstr "Document(en) succesvol opgeslagen!" msgstr "Document(en) succesvol opgeslagen!"
#: projects/views.py:618 #: projects/views.py:632
msgid "Erreur lors de la sauvegarde des documents." msgid "Erreur lors de la sauvegarde des documents."
msgstr "Fout bij het opslaan van de documenten." msgstr "Fout bij het opslaan van de documenten."
#: projects/views.py:644 #: projects/views.py:658
msgid "Impossible d'ajouter une intervention à un projet terminé ou clôturé." msgid "Impossible d'ajouter une intervention à un projet terminé ou clôturé."
msgstr "" msgstr "Kan geen interventie toevoegen aan een voltooid of afgesloten project."
"Kan geen interventie toevoegen aan een voltooid of afgesloten project."
#: projects/views.py:649 #: projects/views.py:663
msgid "Vous n'avez pas de configuration utilisateur." msgid "Vous n'avez pas de configuration utilisateur."
msgstr "U hebt geen gebruikersconfiguratie." msgstr "U hebt geen gebruikersconfiguratie."
#: projects/views.py:670 #: projects/views.py:684
msgid "" msgid "Vous n'avez pas la permission de créer des interventions pour les thématiques de ce projet."
"Vous n'avez pas la permission de créer des interventions pour les " msgstr "U hebt geen toestemming om interventies te creëren voor de thema's van dit project."
"thématiques de ce projet."
msgstr ""
"U hebt geen toestemming om interventies te creëren voor de thema's van dit "
"project."
#: projects/views.py:718 #: projects/views.py:732
msgid "Seuls les administrateurs ou managers peuvent associer une commande." msgid "Seuls les administrateurs ou managers peuvent associer une commande."
msgstr "Alleen beheerders of managers kunnen een bestelling koppelen." msgstr "Alleen beheerders of managers kunnen een bestelling koppelen."
#: projects/views.py:725 #: projects/views.py:739
msgid "Commande associée au projet avec succès !" msgid "Commande associée au projet avec succès !"
msgstr "Bestelling succesvol aan project gekoppeld!" msgstr "Bestelling succesvol aan project gekoppeld!"
#: projects/views.py:727 #: projects/views.py:741
msgid "Erreur lors de l'association de la commande." msgid "Erreur lors de l'association de la commande."
msgstr "Fout bij het koppelen van de bestelling." msgstr "Fout bij het koppelen van de bestelling."
#: projects/views.py:745 #: projects/views.py:759
msgid "Cette commande n'est pas associée à ce projet." msgid "Cette commande n'est pas associée à ce projet."
msgstr "Deze bestelling is niet gekoppeld aan dit project." msgstr "Deze bestelling is niet gekoppeld aan dit project."
#: projects/views.py:756 #: projects/views.py:770
msgid "Seuls les administrateurs ou managers peuvent créer une commande." msgid "Seuls les administrateurs ou managers peuvent créer une commande."
msgstr "Alleen beheerders of managers kunnen een bestelling creëren." msgstr "Alleen beheerders of managers kunnen een bestelling creëren."
#: projects/views.py:781 #: projects/views.py:795
msgid "Phase ajoutée avec succès !" msgid "Phase ajoutée avec succès !"
msgstr "Fase succesvol toegevoegd!" msgstr "Fase succesvol toegevoegd!"
#: projects/views.py:783 #: projects/views.py:797
msgid "Erreur lors de l'ajout de la phase." msgid "Erreur lors de l'ajout de la phase."
msgstr "Fout bij het toevoegen van de fase." msgstr "Fout bij het toevoegen van de fase."
#: projects/views.py:924 #: projects/views.py:942
msgid "Vous n'avez pas la permission de modifier le statut." msgid "Vous n'avez pas la permission de modifier le statut."
msgstr "U hebt geen toestemming om de status te wijzigen." msgstr "U hebt geen toestemming om de status te wijzigen."
#: projects/views.py:930 #: projects/views.py:948
msgid "Aucun statut fourni." msgid "Aucun statut fourni."
msgstr "Geen status opgegeven." msgstr "Geen status opgegeven."
#: projects/views.py:933 #: projects/views.py:951
msgid "Statut invalide." msgid "Statut invalide."
msgstr "Ongeldige status." msgstr "Ongeldige status."
#: projects/views.py:936 #: projects/views.py:954
msgid "Statut non autorisé pour ce projet." msgid "Statut non autorisé pour ce projet."
msgstr "Status niet toegestaan voor dit project." msgstr "Status niet toegestaan voor dit project."
#: projects/views.py:939 #: projects/views.py:957
msgid "Le statut du projet est déjà défini." msgid "Le statut du projet est déjà défini."
msgstr "De status van het project is al gedefinieerd." msgstr "De status van het project is al gedefinieerd."
#: projects/views.py:947 #: projects/views.py:965
msgid "Statut mis à jour avec succès." msgid "Statut mis à jour avec succès."
msgstr "Status succesvol bijgewerkt!" msgstr "Status succesvol bijgewerkt!"
#: projects/views.py:1016 #: projects/views.py:1034
msgid "Données invalides." msgid "Données invalides."
msgstr "Ongeldige gegevens." msgstr "Ongeldige gegevens."
#: projects/views.py:1026 #: projects/views.py:1044
#, python-format #, python-format
msgid "Attribut %(id)s introuvable." msgid "Attribut %(id)s introuvable."
msgstr "%(id)s attribuut niet gevonden." msgstr "%(id)s attribuut niet gevonden."
#: projects/views.py:1034 #: projects/views.py:1052
#, python-format #, python-format
msgid "Le champ « %(name)s » est obligatoire." msgid "Le champ « %(name)s » est obligatoire."
msgstr "Het veld “%(name)s” is verplicht." msgstr "Het veld “%(name)s” is verplicht."
#: projects/views.py:1053 #: projects/views.py:1071
#, python-format #, python-format
msgid "Valeur numérique invalide pour « %(name)s »." msgid "Valeur numérique invalide pour « %(name)s »."
msgstr "Ongeldige numerieke waarde voor “%(name)s”." msgstr "Ongeldige numerieke waarde voor “%(name)s”."
#: projects/views.py:1063 #: projects/views.py:1081
#, python-format #, python-format
msgid "Valeur booléenne invalide pour « %(name)s »." msgid "Valeur booléenne invalide pour « %(name)s »."
msgstr "Ongeldige Booleaanse waarde voor “%(name)s”." msgstr "Ongeldige Booleaanse waarde voor “%(name)s”."
#: projects/views.py:1078 #: projects/views.py:1096
#, python-format #, python-format
msgid "Date invalide pour « %(name)s ». Format attendu : AAAA-MM-JJ." msgid "Date invalide pour « %(name)s ». Format attendu : AAAA-MM-JJ."
msgstr "Ongeldige datum voor “%(name)s”. Verwacht formaat: JJJJ-MM-DD." msgstr "Ongeldige datum voor “%(name)s”. Verwacht formaat: JJJJ-MM-DD."
#: projects/views.py:1086 #: projects/views.py:1104
msgid "Valeurs sauvegardées avec succès." msgid "Valeurs sauvegardées avec succès."
msgstr "Waarden succesvol opgeslagen." msgstr "Waarden succesvol opgeslagen."

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-13 09:05+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -22,6 +22,7 @@ msgid "Reporting"
msgstr "Reporting" msgstr "Reporting"
#: reporting/models.py:19 reporting/templates/reporting/dashboard.html:150 #: reporting/models.py:19 reporting/templates/reporting/dashboard.html:150
#: reporting/templates/reporting/pending_dashboard.html:484
#: reporting/templates/reporting/volume_dashboard.html:96 #: reporting/templates/reporting/volume_dashboard.html:96
#: reporting/templates/reporting/volume_dashboard.html:243 #: reporting/templates/reporting/volume_dashboard.html:243
msgid "Contrat" msgid "Contrat"
@ -68,6 +69,16 @@ msgstr "Observations"
msgid "Nombre d'observations" msgid "Nombre d'observations"
msgstr "Number of observations" msgstr "Number of observations"
#: reporting/templates/reporting/base.html:67
#: reporting/templates/reporting/base.html:70
msgid "Encours & Blocages"
msgstr ""
#: reporting/templates/reporting/base.html:81
#: reporting/templates/reporting/base.html:82
msgid "Tableau de bord encours"
msgstr ""
#: reporting/templates/reporting/dashboard.html:28 #: reporting/templates/reporting/dashboard.html:28
msgid "Évolution du temps de traitement" msgid "Évolution du temps de traitement"
msgstr "Evolution of processing time" msgstr "Evolution of processing time"
@ -185,6 +196,8 @@ msgstr "View in app"
#: reporting/templates/reporting/dashboard.html:145 #: reporting/templates/reporting/dashboard.html:145
#: reporting/templates/reporting/observations_dashboard.html:274 #: reporting/templates/reporting/observations_dashboard.html:274
#: reporting/templates/reporting/pending_dashboard.html:417
#: reporting/templates/reporting/pending_dashboard.html:439
#: reporting/templates/reporting/volume_dashboard.html:238 #: reporting/templates/reporting/volume_dashboard.html:238
msgid "Code" msgid "Code"
msgstr "Code" msgstr "Code"
@ -202,6 +215,8 @@ msgstr "Creation date"
#: reporting/templates/reporting/dashboard.html:148 #: reporting/templates/reporting/dashboard.html:148
#: reporting/templates/reporting/observations_dashboard.html:278 #: reporting/templates/reporting/observations_dashboard.html:278
#: reporting/templates/reporting/pending_dashboard.html:420
#: reporting/templates/reporting/pending_dashboard.html:464
#: reporting/templates/reporting/volume_dashboard.html:241 #: reporting/templates/reporting/volume_dashboard.html:241
msgid "Statut" msgid "Statut"
msgstr "Status" msgstr "Status"
@ -352,6 +367,11 @@ msgid "Type"
msgstr "Type" msgstr "Type"
#: reporting/templates/reporting/observations_dashboard.html:279 #: reporting/templates/reporting/observations_dashboard.html:279
#: reporting/templates/reporting/pending_dashboard.html:203
#: reporting/templates/reporting/pending_dashboard.html:348
#: reporting/templates/reporting/pending_dashboard.html:419
#: reporting/templates/reporting/pending_dashboard.html:441
#: reporting/templates/reporting/pending_dashboard.html:462
#: reporting/templates/reporting/volume_dashboard.html:93 #: reporting/templates/reporting/volume_dashboard.html:93
msgid "Thématique" msgid "Thématique"
msgstr "Thematic" msgstr "Thematic"
@ -395,6 +415,284 @@ msgstr "No sightings found."
msgid "Erreur lors du chargement des observations." msgid "Erreur lors du chargement des observations."
msgstr "Error loading data." msgstr "Error loading data."
#: reporting/templates/reporting/pending_dashboard.html:165
msgid "Tableau de bord des encours & blocages"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:168
msgid ""
"Suivi des interventions non terminées (< 'finished') et observations "
"ouvertes sur les 24 derniers mois"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:174
msgid "Exporter en Excel (.xlsx)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:185
msgid "Horizon temporel"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:205
msgid "Toutes les thématiques"
msgstr "All thematics"
#: reporting/templates/reporting/pending_dashboard.html:214
msgid "Contrat / Prestataire"
msgstr "Contract / Contractor"
#: reporting/templates/reporting/pending_dashboard.html:216
msgid "Tous les contrats et prestataires"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:226
msgid "Filtrer"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:228
msgid "Réinitialiser"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:240
msgid "Interventions en cours"
msgstr "Ongoing interventions"
#: reporting/templates/reporting/pending_dashboard.html:248
msgid "Observations ouvertes"
msgstr "Open observations"
#: reporting/templates/reporting/pending_dashboard.html:256
msgid "En retard SLA"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:264
#: reporting/templates/reporting/pending_dashboard.html:355
msgid "En pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:266
msgid "Attente matériel / tiers"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:272
#: reporting/templates/reporting/pending_dashboard.html:361
msgid "Obs. Orphelines"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:274
msgid "À traiter sans intervention"
msgstr "To process without intervention"
#: reporting/templates/reporting/pending_dashboard.html:280
msgid "Obs. Désynchronisées"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:282
msgid "Intervention déjà close"
msgstr "Intervention already closed"
#: reporting/templates/reporting/pending_dashboard.html:294
msgid "Répartition par Statut d'Intervention"
msgstr "Distribution by Intervention Status"
#: reporting/templates/reporting/pending_dashboard.html:308
msgid "Pyramide des Âges"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:322
msgid "Motifs de Pause (on_pause)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:338
msgid "Tableau Croisé Dynamique : Analyse par Thématique"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:340
msgid ""
"Ventilation croisée des statuts, retards, motifs de pause et observations "
"par domaine métier"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:349
msgid "En prép."
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:350
msgid "À approuver"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:351
msgid "À planifier"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:352
msgid "À traiter"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:353
msgid "Pris en charge"
msgstr "Taken in charge"
#: reporting/templates/reporting/pending_dashboard.html:354
msgid "Démarré"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:356
msgid "À corriger"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:357
msgid "Total Itv"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:358
#: reporting/templates/reporting/pending_dashboard.html:487
msgid "En Retard"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:359
#: reporting/templates/reporting/pending_dashboard.html:488
#, python-format
msgid "%% Retard"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:360
msgid "Obs. Ouvertes"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:362
msgid "Âge moy. (j)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:368
msgid "Chargement des données..."
msgstr "Loading data..."
#: reporting/templates/reporting/pending_dashboard.html:384
msgid "Interventions en retard & à corriger"
msgstr "Overdue & to correct interventions"
#: reporting/templates/reporting/pending_dashboard.html:390
msgid "Interventions en pause"
msgstr "Paused interventions"
#: reporting/templates/reporting/pending_dashboard.html:396
msgid "Observations orphelines & désynchronisées"
msgstr "Orphaned & desynchronized observations"
#: reporting/templates/reporting/pending_dashboard.html:402
msgid "Synthèse Prestataires & Contrats"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:418
#: reporting/templates/reporting/pending_dashboard.html:440
msgid "Titre / Objet"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:421
msgid "Prestataire / Contrat"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:422
msgid "Retard SLA"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:423
msgid "Diagnostic / Cause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:427
#: reporting/templates/reporting/pending_dashboard.html:789
msgid "Aucune intervention en retard."
msgstr "No overdue interventions."
#: reporting/templates/reporting/pending_dashboard.html:442
msgid "Motif de Pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:443
#: reporting/templates/reporting/pending_dashboard.html:483
msgid "Prestataire"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:444
msgid "Jours en Pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:445
msgid "Diagnostic"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:449
#: reporting/templates/reporting/pending_dashboard.html:808
msgid "Aucune intervention en pause."
msgstr "No paused interventions."
#: reporting/templates/reporting/pending_dashboard.html:461
msgid "Code Obs."
msgstr "Obs. Code"
#: reporting/templates/reporting/pending_dashboard.html:463
msgid "Symptôme"
msgstr "Symptom"
#: reporting/templates/reporting/pending_dashboard.html:465
msgid "Âge"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:466
msgid "Itv Liée"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:467
msgid "Anomalie / Diagnostic"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:471
#: reporting/templates/reporting/pending_dashboard.html:827
msgid "Aucune observation problématique détectée."
msgstr "No problematic observations detected."
#: reporting/templates/reporting/pending_dashboard.html:485
msgid "Gestionnaire"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:486
msgid "Total en cours"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:489
msgid "Âge Moyen (j)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:493
msgid "Aucune donnée de prestataire."
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:553
msgid "Calcul des indicateurs..."
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:576
msgid "Impossible de charger les données d'analyse."
msgstr "Unable to load analysis data."
#: reporting/templates/reporting/pending_dashboard.html:591
msgid "de l'encours"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:696
msgid "Aucune en pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:764
msgid "Total général"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:847
msgid "Aucun prestataire avec encours."
msgstr ""
#: reporting/templates/reporting/volume_dashboard.html:79 #: reporting/templates/reporting/volume_dashboard.html:79
msgid "Nombre et répartition des interventions" msgid "Nombre et répartition des interventions"
msgstr "Number and distribution of interventions" msgstr "Number and distribution of interventions"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -22,6 +22,7 @@ msgid "Reporting"
msgstr "Reporting" msgstr "Reporting"
#: reporting/models.py:19 reporting/templates/reporting/dashboard.html:150 #: reporting/models.py:19 reporting/templates/reporting/dashboard.html:150
#: reporting/templates/reporting/pending_dashboard.html:484
#: reporting/templates/reporting/volume_dashboard.html:96 #: reporting/templates/reporting/volume_dashboard.html:96
#: reporting/templates/reporting/volume_dashboard.html:243 #: reporting/templates/reporting/volume_dashboard.html:243
msgid "Contrat" msgid "Contrat"
@ -68,6 +69,16 @@ msgstr "Observations"
msgid "Nombre d'observations" msgid "Nombre d'observations"
msgstr "Nombre d'observations" msgstr "Nombre d'observations"
#: reporting/templates/reporting/base.html:67
#: reporting/templates/reporting/base.html:70
msgid "Encours & Blocages"
msgstr ""
#: reporting/templates/reporting/base.html:81
#: reporting/templates/reporting/base.html:82
msgid "Tableau de bord encours"
msgstr ""
#: reporting/templates/reporting/dashboard.html:28 #: reporting/templates/reporting/dashboard.html:28
msgid "Évolution du temps de traitement" msgid "Évolution du temps de traitement"
msgstr "Évolution du temps de traitement" msgstr "Évolution du temps de traitement"
@ -185,6 +196,8 @@ msgstr "Voir dans l'application"
#: reporting/templates/reporting/dashboard.html:145 #: reporting/templates/reporting/dashboard.html:145
#: reporting/templates/reporting/observations_dashboard.html:274 #: reporting/templates/reporting/observations_dashboard.html:274
#: reporting/templates/reporting/pending_dashboard.html:417
#: reporting/templates/reporting/pending_dashboard.html:439
#: reporting/templates/reporting/volume_dashboard.html:238 #: reporting/templates/reporting/volume_dashboard.html:238
msgid "Code" msgid "Code"
msgstr "Code" msgstr "Code"
@ -202,6 +215,8 @@ msgstr "Date de création"
#: reporting/templates/reporting/dashboard.html:148 #: reporting/templates/reporting/dashboard.html:148
#: reporting/templates/reporting/observations_dashboard.html:278 #: reporting/templates/reporting/observations_dashboard.html:278
#: reporting/templates/reporting/pending_dashboard.html:420
#: reporting/templates/reporting/pending_dashboard.html:464
#: reporting/templates/reporting/volume_dashboard.html:241 #: reporting/templates/reporting/volume_dashboard.html:241
msgid "Statut" msgid "Statut"
msgstr "Statut" msgstr "Statut"
@ -352,6 +367,11 @@ msgid "Type"
msgstr "Type" msgstr "Type"
#: reporting/templates/reporting/observations_dashboard.html:279 #: reporting/templates/reporting/observations_dashboard.html:279
#: reporting/templates/reporting/pending_dashboard.html:203
#: reporting/templates/reporting/pending_dashboard.html:348
#: reporting/templates/reporting/pending_dashboard.html:419
#: reporting/templates/reporting/pending_dashboard.html:441
#: reporting/templates/reporting/pending_dashboard.html:462
#: reporting/templates/reporting/volume_dashboard.html:93 #: reporting/templates/reporting/volume_dashboard.html:93
msgid "Thématique" msgid "Thématique"
msgstr "Thématique" msgstr "Thématique"
@ -395,6 +415,284 @@ msgstr "Aucune observation trouvée."
msgid "Erreur lors du chargement des observations." msgid "Erreur lors du chargement des observations."
msgstr "Erreur lors du chargement des observations." msgstr "Erreur lors du chargement des observations."
#: reporting/templates/reporting/pending_dashboard.html:165
msgid "Tableau de bord des encours & blocages"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:168
msgid ""
"Suivi des interventions non terminées (< 'finished') et observations "
"ouvertes sur les 24 derniers mois"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:174
msgid "Exporter en Excel (.xlsx)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:185
msgid "Horizon temporel"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:205
msgid "Toutes les thématiques"
msgstr "Toutes les thématiques"
#: reporting/templates/reporting/pending_dashboard.html:214
msgid "Contrat / Prestataire"
msgstr "Contrat / Prestataire"
#: reporting/templates/reporting/pending_dashboard.html:216
msgid "Tous les contrats et prestataires"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:226
msgid "Filtrer"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:228
msgid "Réinitialiser"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:240
msgid "Interventions en cours"
msgstr "Interventions en cours"
#: reporting/templates/reporting/pending_dashboard.html:248
msgid "Observations ouvertes"
msgstr "Observations ouvertes"
#: reporting/templates/reporting/pending_dashboard.html:256
msgid "En retard SLA"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:264
#: reporting/templates/reporting/pending_dashboard.html:355
msgid "En pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:266
msgid "Attente matériel / tiers"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:272
#: reporting/templates/reporting/pending_dashboard.html:361
msgid "Obs. Orphelines"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:274
msgid "À traiter sans intervention"
msgstr "À traiter sans intervention"
#: reporting/templates/reporting/pending_dashboard.html:280
msgid "Obs. Désynchronisées"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:282
msgid "Intervention déjà close"
msgstr "Intervention déjà close"
#: reporting/templates/reporting/pending_dashboard.html:294
msgid "Répartition par Statut d'Intervention"
msgstr "Répartition par Statut d'Intervention"
#: reporting/templates/reporting/pending_dashboard.html:308
msgid "Pyramide des Âges"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:322
msgid "Motifs de Pause (on_pause)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:338
msgid "Tableau Croisé Dynamique : Analyse par Thématique"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:340
msgid ""
"Ventilation croisée des statuts, retards, motifs de pause et observations "
"par domaine métier"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:349
msgid "En prép."
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:350
msgid "À approuver"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:351
msgid "À planifier"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:352
msgid "À traiter"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:353
msgid "Pris en charge"
msgstr "Pris en charge"
#: reporting/templates/reporting/pending_dashboard.html:354
msgid "Démarré"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:356
msgid "À corriger"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:357
msgid "Total Itv"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:358
#: reporting/templates/reporting/pending_dashboard.html:487
msgid "En Retard"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:359
#: reporting/templates/reporting/pending_dashboard.html:488
#, python-format
msgid "%% Retard"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:360
msgid "Obs. Ouvertes"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:362
msgid "Âge moy. (j)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:368
msgid "Chargement des données..."
msgstr "Chargement des données..."
#: reporting/templates/reporting/pending_dashboard.html:384
msgid "Interventions en retard & à corriger"
msgstr "Interventions en retard & à corriger"
#: reporting/templates/reporting/pending_dashboard.html:390
msgid "Interventions en pause"
msgstr "Interventions en pause"
#: reporting/templates/reporting/pending_dashboard.html:396
msgid "Observations orphelines & désynchronisées"
msgstr "Observations orphelines & désynchronisées"
#: reporting/templates/reporting/pending_dashboard.html:402
msgid "Synthèse Prestataires & Contrats"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:418
#: reporting/templates/reporting/pending_dashboard.html:440
msgid "Titre / Objet"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:421
msgid "Prestataire / Contrat"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:422
msgid "Retard SLA"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:423
msgid "Diagnostic / Cause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:427
#: reporting/templates/reporting/pending_dashboard.html:789
msgid "Aucune intervention en retard."
msgstr "Aucune intervention en retard."
#: reporting/templates/reporting/pending_dashboard.html:442
msgid "Motif de Pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:443
#: reporting/templates/reporting/pending_dashboard.html:483
msgid "Prestataire"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:444
msgid "Jours en Pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:445
msgid "Diagnostic"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:449
#: reporting/templates/reporting/pending_dashboard.html:808
msgid "Aucune intervention en pause."
msgstr "Aucune intervention en pause."
#: reporting/templates/reporting/pending_dashboard.html:461
msgid "Code Obs."
msgstr "Code Obs."
#: reporting/templates/reporting/pending_dashboard.html:463
msgid "Symptôme"
msgstr "Symptôme"
#: reporting/templates/reporting/pending_dashboard.html:465
msgid "Âge"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:466
msgid "Itv Liée"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:467
msgid "Anomalie / Diagnostic"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:471
#: reporting/templates/reporting/pending_dashboard.html:827
msgid "Aucune observation problématique détectée."
msgstr "Aucune observation problématique détectée."
#: reporting/templates/reporting/pending_dashboard.html:485
msgid "Gestionnaire"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:486
msgid "Total en cours"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:489
msgid "Âge Moyen (j)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:493
msgid "Aucune donnée de prestataire."
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:553
msgid "Calcul des indicateurs..."
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:576
msgid "Impossible de charger les données d'analyse."
msgstr "Impossible de charger les données d'analyse."
#: reporting/templates/reporting/pending_dashboard.html:591
msgid "de l'encours"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:696
msgid "Aucune en pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:764
msgid "Total général"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:847
msgid "Aucun prestataire avec encours."
msgstr ""
#: reporting/templates/reporting/volume_dashboard.html:79 #: reporting/templates/reporting/volume_dashboard.html:79
msgid "Nombre et répartition des interventions" msgid "Nombre et répartition des interventions"
msgstr "Nombre et répartition des interventions" msgstr "Nombre et répartition des interventions"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-19 09:47+0200\n" "POT-Creation-Date: 2026-09-12 15:59+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -22,6 +22,7 @@ msgid "Reporting"
msgstr "Rapportering" msgstr "Rapportering"
#: reporting/models.py:19 reporting/templates/reporting/dashboard.html:150 #: reporting/models.py:19 reporting/templates/reporting/dashboard.html:150
#: reporting/templates/reporting/pending_dashboard.html:484
#: reporting/templates/reporting/volume_dashboard.html:96 #: reporting/templates/reporting/volume_dashboard.html:96
#: reporting/templates/reporting/volume_dashboard.html:243 #: reporting/templates/reporting/volume_dashboard.html:243
msgid "Contrat" msgid "Contrat"
@ -69,6 +70,16 @@ msgstr "Interventies"
msgid "Nombre d'observations" msgid "Nombre d'observations"
msgstr "Aantal observaties" msgstr "Aantal observaties"
#: reporting/templates/reporting/base.html:67
#: reporting/templates/reporting/base.html:70
msgid "Encours & Blocages"
msgstr ""
#: reporting/templates/reporting/base.html:81
#: reporting/templates/reporting/base.html:82
msgid "Tableau de bord encours"
msgstr ""
#: reporting/templates/reporting/dashboard.html:28 #: reporting/templates/reporting/dashboard.html:28
msgid "Évolution du temps de traitement" msgid "Évolution du temps de traitement"
msgstr "Evolutie van de verwerkingstijd" msgstr "Evolutie van de verwerkingstijd"
@ -186,6 +197,8 @@ msgstr "Bekijk in app"
#: reporting/templates/reporting/dashboard.html:145 #: reporting/templates/reporting/dashboard.html:145
#: reporting/templates/reporting/observations_dashboard.html:274 #: reporting/templates/reporting/observations_dashboard.html:274
#: reporting/templates/reporting/pending_dashboard.html:417
#: reporting/templates/reporting/pending_dashboard.html:439
#: reporting/templates/reporting/volume_dashboard.html:238 #: reporting/templates/reporting/volume_dashboard.html:238
msgid "Code" msgid "Code"
msgstr "Code" msgstr "Code"
@ -203,6 +216,8 @@ msgstr "Aanmaakdatum"
#: reporting/templates/reporting/dashboard.html:148 #: reporting/templates/reporting/dashboard.html:148
#: reporting/templates/reporting/observations_dashboard.html:278 #: reporting/templates/reporting/observations_dashboard.html:278
#: reporting/templates/reporting/pending_dashboard.html:420
#: reporting/templates/reporting/pending_dashboard.html:464
#: reporting/templates/reporting/volume_dashboard.html:241 #: reporting/templates/reporting/volume_dashboard.html:241
msgid "Statut" msgid "Statut"
msgstr "Status" msgstr "Status"
@ -353,6 +368,11 @@ msgid "Type"
msgstr "Type" msgstr "Type"
#: reporting/templates/reporting/observations_dashboard.html:279 #: reporting/templates/reporting/observations_dashboard.html:279
#: reporting/templates/reporting/pending_dashboard.html:203
#: reporting/templates/reporting/pending_dashboard.html:348
#: reporting/templates/reporting/pending_dashboard.html:419
#: reporting/templates/reporting/pending_dashboard.html:441
#: reporting/templates/reporting/pending_dashboard.html:462
#: reporting/templates/reporting/volume_dashboard.html:93 #: reporting/templates/reporting/volume_dashboard.html:93
msgid "Thématique" msgid "Thématique"
msgstr "Thema" msgstr "Thema"
@ -396,6 +416,284 @@ msgstr "Geen waarnemingen gevonden."
msgid "Erreur lors du chargement des observations." msgid "Erreur lors du chargement des observations."
msgstr "Fout bij het laden van de gegevens." msgstr "Fout bij het laden van de gegevens."
#: reporting/templates/reporting/pending_dashboard.html:165
msgid "Tableau de bord des encours & blocages"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:168
msgid ""
"Suivi des interventions non terminées (< 'finished') et observations "
"ouvertes sur les 24 derniers mois"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:174
msgid "Exporter en Excel (.xlsx)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:185
msgid "Horizon temporel"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:205
msgid "Toutes les thématiques"
msgstr "Alle thema's"
#: reporting/templates/reporting/pending_dashboard.html:214
msgid "Contrat / Prestataire"
msgstr "Contract / Dienstverlener"
#: reporting/templates/reporting/pending_dashboard.html:216
msgid "Tous les contrats et prestataires"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:226
msgid "Filtrer"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:228
msgid "Réinitialiser"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:240
msgid "Interventions en cours"
msgstr "Lopende interventies"
#: reporting/templates/reporting/pending_dashboard.html:248
msgid "Observations ouvertes"
msgstr "Openstaande waarnemingen"
#: reporting/templates/reporting/pending_dashboard.html:256
msgid "En retard SLA"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:264
#: reporting/templates/reporting/pending_dashboard.html:355
msgid "En pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:266
msgid "Attente matériel / tiers"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:272
#: reporting/templates/reporting/pending_dashboard.html:361
msgid "Obs. Orphelines"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:274
msgid "À traiter sans intervention"
msgstr "Te behandelen zonder interventie"
#: reporting/templates/reporting/pending_dashboard.html:280
msgid "Obs. Désynchronisées"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:282
msgid "Intervention déjà close"
msgstr "Interventie reeds gesloten"
#: reporting/templates/reporting/pending_dashboard.html:294
msgid "Répartition par Statut d'Intervention"
msgstr "Verdeling per interventiestatus"
#: reporting/templates/reporting/pending_dashboard.html:308
msgid "Pyramide des Âges"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:322
msgid "Motifs de Pause (on_pause)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:338
msgid "Tableau Croisé Dynamique : Analyse par Thématique"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:340
msgid ""
"Ventilation croisée des statuts, retards, motifs de pause et observations "
"par domaine métier"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:349
msgid "En prép."
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:350
msgid "À approuver"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:351
msgid "À planifier"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:352
msgid "À traiter"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:353
msgid "Pris en charge"
msgstr "In behandeling genomen"
#: reporting/templates/reporting/pending_dashboard.html:354
msgid "Démarré"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:356
msgid "À corriger"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:357
msgid "Total Itv"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:358
#: reporting/templates/reporting/pending_dashboard.html:487
msgid "En Retard"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:359
#: reporting/templates/reporting/pending_dashboard.html:488
#, python-format
msgid "%% Retard"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:360
msgid "Obs. Ouvertes"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:362
msgid "Âge moy. (j)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:368
msgid "Chargement des données..."
msgstr "Gegevens laden..."
#: reporting/templates/reporting/pending_dashboard.html:384
msgid "Interventions en retard & à corriger"
msgstr "Laattijdige en te corrigeren interventies"
#: reporting/templates/reporting/pending_dashboard.html:390
msgid "Interventions en pause"
msgstr "Onderbroken interventies"
#: reporting/templates/reporting/pending_dashboard.html:396
msgid "Observations orphelines & désynchronisées"
msgstr "Verweesde & niet-gesynchroniseerde waarnemingen"
#: reporting/templates/reporting/pending_dashboard.html:402
msgid "Synthèse Prestataires & Contrats"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:418
#: reporting/templates/reporting/pending_dashboard.html:440
msgid "Titre / Objet"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:421
msgid "Prestataire / Contrat"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:422
msgid "Retard SLA"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:423
msgid "Diagnostic / Cause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:427
#: reporting/templates/reporting/pending_dashboard.html:789
msgid "Aucune intervention en retard."
msgstr "Geen laattijdige interventies."
#: reporting/templates/reporting/pending_dashboard.html:442
msgid "Motif de Pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:443
#: reporting/templates/reporting/pending_dashboard.html:483
msgid "Prestataire"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:444
msgid "Jours en Pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:445
msgid "Diagnostic"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:449
#: reporting/templates/reporting/pending_dashboard.html:808
msgid "Aucune intervention en pause."
msgstr "Geen onderbroken interventies."
#: reporting/templates/reporting/pending_dashboard.html:461
msgid "Code Obs."
msgstr "Waarnemingscode"
#: reporting/templates/reporting/pending_dashboard.html:463
msgid "Symptôme"
msgstr "Symptoom"
#: reporting/templates/reporting/pending_dashboard.html:465
msgid "Âge"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:466
msgid "Itv Liée"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:467
msgid "Anomalie / Diagnostic"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:471
#: reporting/templates/reporting/pending_dashboard.html:827
msgid "Aucune observation problématique détectée."
msgstr "Geen problematische waarnemingen gedetecteerd."
#: reporting/templates/reporting/pending_dashboard.html:485
msgid "Gestionnaire"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:486
msgid "Total en cours"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:489
msgid "Âge Moyen (j)"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:493
msgid "Aucune donnée de prestataire."
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:553
msgid "Calcul des indicateurs..."
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:576
msgid "Impossible de charger les données d'analyse."
msgstr "Kan analysegegevens niet laden."
#: reporting/templates/reporting/pending_dashboard.html:591
msgid "de l'encours"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:696
msgid "Aucune en pause"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:764
msgid "Total général"
msgstr ""
#: reporting/templates/reporting/pending_dashboard.html:847
msgid "Aucun prestataire avec encours."
msgstr ""
#: reporting/templates/reporting/volume_dashboard.html:79 #: reporting/templates/reporting/volume_dashboard.html:79
msgid "Nombre et répartition des interventions" msgid "Nombre et répartition des interventions"
msgstr "Aantal en verdeling van interventies" msgstr "Aantal en verdeling van interventies"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1823,11 +1823,11 @@ loadAssetsForCurrentView = async function() {
alert('{% translate "Règlement enregistré avec succès" %}'); alert('{% translate "Règlement enregistré avec succès" %}');
loadRegulationDetail(reg.id, true, { fitBounds: false }); loadRegulationDetail(reg.id, true, { fitBounds: false });
} else { } else {
alert("{% translate 'Erreur lors de l\'enregistrement' %}"); alert('{% translate "Erreur lors de l\'enregistrement" %}');
} }
} catch (error) { } catch (error) {
console.error('Error saving regulation:', error); console.error('Error saving regulation:', error);
alert("{% translate 'Erreur lors de l\'enregistrement' %}"); alert('{% translate "Erreur lors de l\'enregistrement" %}');
} }
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff